blob: fd2ede399bcfdec7fb6f8461a7ef1bfd68d46af4 [file] [log] [blame]
isandrke0951132017-04-24 17:53:311// Copyright 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/extensions/extension_tab_util.h"
6
7#include "base/macros.h"
isandrke0951132017-04-24 17:53:318#include "chrome/common/extensions/api/tabs.h"
John Lee76e40a32019-08-20 17:52:409#include "extensions/common/extension.h"
10#include "extensions/common/extension_builder.h"
isandrke0951132017-04-24 17:53:3111#include "testing/gtest/include/gtest/gtest.h"
12
13namespace extensions {
14
15namespace {
16
isandrke0951132017-04-24 17:53:3117class ExtensionTabUtilTestDelegate : public ExtensionTabUtil::Delegate {
18 public:
19 ExtensionTabUtilTestDelegate() {}
20 ~ExtensionTabUtilTestDelegate() override {}
21
22 // ExtensionTabUtil::Delegate
John Lee76e40a32019-08-20 17:52:4023 ExtensionTabUtil::ScrubTabBehavior GetScrubTabBehavior(
24 const Extension* extension) override {
25 return ExtensionTabUtil::kScrubTabUrlToOrigin;
isandrke0951132017-04-24 17:53:3126 }
27
28 private:
29 DISALLOW_COPY_AND_ASSIGN(ExtensionTabUtilTestDelegate);
30};
31
32} // namespace
33
John Lee76e40a32019-08-20 17:52:4034// Test that the custom GetScrubTabBehavior delegate works - in this test it
35// always returns kScrubTabUrlToOrigin
isandrke0951132017-04-24 17:53:3136TEST(ExtensionTabUtilTest, Delegate) {
Ivan Sandrke2b20c62018-09-10 16:23:5337 ExtensionTabUtil::SetPlatformDelegate(
38 std::make_unique<ExtensionTabUtilTestDelegate>());
isandrke0951132017-04-24 17:53:3139
John Lee76e40a32019-08-20 17:52:4040 // Build an extension that passes the permission checks for the generic
41 // GetScrubTabBehavior
42 auto extension = ExtensionBuilder("test").AddPermission("tabs").Build();
43
44 ExtensionTabUtil::ScrubTabBehavior scrub_tab_behavior =
John Leebfbb37cb2019-08-26 22:23:1845 ExtensionTabUtil::GetScrubTabBehavior(
46 extension.get(), Feature::Context::UNSPECIFIED_CONTEXT,
47 GURL("http://www.google.com"));
John Lee76e40a32019-08-20 17:52:4048 EXPECT_EQ(ExtensionTabUtil::kScrubTabUrlToOrigin, scrub_tab_behavior);
isandrke0951132017-04-24 17:53:3149
50 // Unset the delegate.
51 ExtensionTabUtil::SetPlatformDelegate(nullptr);
52}
53
John Lee76e40a32019-08-20 17:52:4054TEST(ExtensionTabUtilTest, ScrubTabBehaviorForTabsPermission) {
55 auto extension = ExtensionBuilder("Extension with tabs permission")
56 .AddPermission("tabs")
57 .Build();
58 ExtensionTabUtil::ScrubTabBehavior scrub_tab_behavior =
John Leebfbb37cb2019-08-26 22:23:1859 ExtensionTabUtil::GetScrubTabBehavior(
60 extension.get(), Feature::Context::UNSPECIFIED_CONTEXT,
61 GURL("http://www.google.com"));
John Lee76e40a32019-08-20 17:52:4062 EXPECT_EQ(ExtensionTabUtil::kDontScrubTab, scrub_tab_behavior);
63}
64
65TEST(ExtensionTabUtilTest, ScrubTabBehaviorForNoPermission) {
66 auto extension = ExtensionBuilder("Extension with no permissions").Build();
67 ExtensionTabUtil::ScrubTabBehavior scrub_tab_behavior =
John Leebfbb37cb2019-08-26 22:23:1868 ExtensionTabUtil::GetScrubTabBehavior(
69 extension.get(), Feature::Context::UNSPECIFIED_CONTEXT,
70 GURL("http://www.google.com"));
John Lee76e40a32019-08-20 17:52:4071 EXPECT_EQ(ExtensionTabUtil::kScrubTabFully, scrub_tab_behavior);
72}
73
74TEST(ExtensionTabUtilTest, ScrubTabBehaviorForHostPermission) {
75 auto extension = ExtensionBuilder("Extension with host permission")
76 .AddPermission("*://www.google.com/*")
77 .Build();
78 ExtensionTabUtil::ScrubTabBehavior scrub_tab_behavior =
79 ExtensionTabUtil::GetScrubTabBehavior(
John Leebfbb37cb2019-08-26 22:23:1880 extension.get(), Feature::Context::UNSPECIFIED_CONTEXT,
81 GURL("http://www.google.com/some/path"));
John Lee76e40a32019-08-20 17:52:4082 EXPECT_EQ(ExtensionTabUtil::kDontScrubTab, scrub_tab_behavior);
83}
84
85TEST(ExtensionTabUtilTest, ScrubTabBehaviorForNoExtension) {
86 ExtensionTabUtil::ScrubTabBehavior scrub_tab_behavior =
John Leebfbb37cb2019-08-26 22:23:1887 ExtensionTabUtil::GetScrubTabBehavior(
88 nullptr, Feature::Context::UNSPECIFIED_CONTEXT,
89 GURL("http://www.google.com"));
John Lee76e40a32019-08-20 17:52:4090 EXPECT_EQ(ExtensionTabUtil::kScrubTabFully, scrub_tab_behavior);
91}
92
John Leebfbb37cb2019-08-26 22:23:1893TEST(ExtensionTabUtilTest, ScrubTabBehaviorForWebUI) {
94 ExtensionTabUtil::ScrubTabBehavior scrub_tab_behavior =
95 ExtensionTabUtil::GetScrubTabBehavior(nullptr,
96 Feature::Context::WEBUI_CONTEXT,
97 GURL("http://www.google.com"));
98 EXPECT_EQ(ExtensionTabUtil::kDontScrubTab, scrub_tab_behavior);
99}
100
isandrke0951132017-04-24 17:53:31101} // namespace extensions