| Index: extensions/common/permissions/permissions_data_unittest.cc
|
| diff --git a/extensions/common/permissions/permissions_data_unittest.cc b/extensions/common/permissions/permissions_data_unittest.cc
|
| index 294d106d202f4ba3d959ea89364bd50a9debe37f..6fed67c9b4854790f5756736452f2e62f60f58be 100644
|
| --- a/extensions/common/permissions/permissions_data_unittest.cc
|
| +++ b/extensions/common/permissions/permissions_data_unittest.cc
|
| @@ -248,8 +248,13 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test {
|
|
|
| bool AllowedScript(const Extension* extension, const GURL& url,
|
| const GURL& top_url) {
|
| + return AllowedScript(extension, url, top_url, -1);
|
| + }
|
| +
|
| + bool AllowedScript(const Extension* extension, const GURL& url,
|
| + const GURL& top_url, int tab_id) {
|
| return PermissionsData::CanExecuteScriptOnPage(
|
| - extension, url, top_url, -1, NULL, -1, NULL);
|
| + extension, url, top_url, tab_id, NULL, -1, NULL);
|
| }
|
|
|
| bool BlockedScript(const Extension* extension, const GURL& url,
|
| @@ -266,7 +271,7 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test {
|
| return (PermissionsData::CanExecuteScriptOnPage(
|
| extension, url, url, tab_id, NULL, -1, NULL) &&
|
| PermissionsData::CanCaptureVisiblePage(
|
| - extension, url, tab_id, NULL));
|
| + extension, tab_id, NULL));
|
| }
|
|
|
| bool CaptureOnly(const Extension* extension, const GURL& url) {
|
| @@ -276,7 +281,18 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test {
|
| bool CaptureOnly(const Extension* extension, const GURL& url, int tab_id) {
|
| return !PermissionsData::CanExecuteScriptOnPage(
|
| extension, url, url, tab_id, NULL, -1, NULL) &&
|
| - PermissionsData::CanCaptureVisiblePage(extension, url, tab_id, NULL);
|
| + PermissionsData::CanCaptureVisiblePage(extension, tab_id, NULL);
|
| + }
|
| +
|
| + bool ScriptOnly(const Extension* extension, const GURL& url,
|
| + const GURL& top_url) {
|
| + return ScriptOnly(extension, url, top_url, -1);
|
| + }
|
| +
|
| + bool ScriptOnly(const Extension* extension, const GURL& url,
|
| + const GURL& top_url, int tab_id) {
|
| + return AllowedScript(extension, url, top_url, tab_id) &&
|
| + !PermissionsData::CanCaptureVisiblePage(extension, tab_id, NULL);
|
| }
|
|
|
| bool Blocked(const Extension* extension, const GURL& url) {
|
| @@ -287,10 +303,10 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test {
|
| return !(PermissionsData::CanExecuteScriptOnPage(
|
| extension, url, url, tab_id, NULL, -1, NULL) ||
|
| PermissionsData::CanCaptureVisiblePage(
|
| - extension, url, tab_id, NULL));
|
| + extension, tab_id, NULL));
|
| }
|
|
|
| - bool AllowedExclusivelyOnTab(
|
| + bool ScriptAllowedExclusivelyOnTab(
|
| const Extension* extension,
|
| const std::set<GURL>& allowed_urls,
|
| int tab_id) {
|
| @@ -298,7 +314,7 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test {
|
| for (std::set<GURL>::iterator it = urls_.begin(); it != urls_.end(); ++it) {
|
| const GURL& url = *it;
|
| if (allowed_urls.count(url))
|
| - result &= Allowed(extension, url, tab_id);
|
| + result &= AllowedScript(extension, url, url, tab_id);
|
| else
|
| result &= Blocked(extension, url, tab_id);
|
| }
|
| @@ -333,11 +349,11 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) {
|
|
|
| EXPECT_TRUE(Allowed(extension.get(), http_url));
|
| EXPECT_TRUE(Allowed(extension.get(), https_url));
|
| - EXPECT_TRUE(Blocked(extension.get(), file_url));
|
| - EXPECT_TRUE(Blocked(extension.get(), settings_url));
|
| + EXPECT_TRUE(CaptureOnly(extension.get(), file_url));
|
| + EXPECT_TRUE(CaptureOnly(extension.get(), settings_url));
|
| EXPECT_TRUE(CaptureOnly(extension.get(), favicon_url));
|
| - EXPECT_TRUE(Blocked(extension.get(), about_url));
|
| - EXPECT_TRUE(Blocked(extension.get(), extension_url));
|
| + EXPECT_TRUE(CaptureOnly(extension.get(), about_url));
|
| + EXPECT_TRUE(CaptureOnly(extension.get(), extension_url));
|
|
|
| // Test access to iframed content.
|
| GURL within_extension_url = extension->GetResourceURL("page.html");
|
| @@ -356,8 +372,8 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) {
|
| // Test * for scheme, which implies just the http/https schemes.
|
| extension = LoadManifestStrict("script_and_capture",
|
| "extension_wildcard.json");
|
| - EXPECT_TRUE(Allowed(extension.get(), http_url));
|
| - EXPECT_TRUE(Allowed(extension.get(), https_url));
|
| + EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url));
|
| + EXPECT_TRUE(ScriptOnly(extension.get(), https_url, https_url));
|
| EXPECT_TRUE(Blocked(extension.get(), settings_url));
|
| EXPECT_TRUE(Blocked(extension.get(), about_url));
|
| EXPECT_TRUE(Blocked(extension.get(), file_url));
|
| @@ -387,7 +403,7 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) {
|
| extension = LoadManifestStrict("script_and_capture",
|
| "extension_chrome_favicon_wildcard.json");
|
| EXPECT_TRUE(Blocked(extension.get(), settings_url));
|
| - EXPECT_TRUE(CaptureOnly(extension.get(), favicon_url));
|
| + EXPECT_TRUE(Blocked(extension.get(), favicon_url));
|
| EXPECT_TRUE(Blocked(extension.get(), about_url));
|
| EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url));
|
|
|
| @@ -411,7 +427,7 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) {
|
| extension = LoadManifest("script_and_capture",
|
| "extension_component_google.json", Manifest::COMPONENT,
|
| Extension::NO_FLAGS);
|
| - EXPECT_TRUE(Allowed(extension.get(), http_url));
|
| + EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url));
|
| EXPECT_TRUE(Blocked(extension.get(), https_url));
|
| EXPECT_TRUE(Blocked(extension.get(), file_url));
|
| EXPECT_TRUE(Blocked(extension.get(), settings_url));
|
| @@ -433,11 +449,11 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) {
|
| "extension_regular_all.json");
|
| EXPECT_TRUE(Allowed(extension.get(), http_url));
|
| EXPECT_TRUE(Allowed(extension.get(), https_url));
|
| - EXPECT_TRUE(Blocked(extension.get(), file_url));
|
| - EXPECT_TRUE(Blocked(extension.get(), settings_url));
|
| + EXPECT_TRUE(CaptureOnly(extension.get(), file_url));
|
| + EXPECT_TRUE(CaptureOnly(extension.get(), settings_url));
|
| EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested
|
| - EXPECT_TRUE(Blocked(extension.get(), about_url));
|
| - EXPECT_TRUE(Blocked(extension.get(), extension_url));
|
| + EXPECT_TRUE(CaptureOnly(extension.get(), about_url));
|
| + EXPECT_TRUE(CaptureOnly(extension.get(), extension_url));
|
|
|
| // Test access to iframed content.
|
| GURL within_extension_url = extension->GetResourceURL("page.html");
|
| @@ -456,8 +472,8 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) {
|
| // Test * for scheme, which implies just the http/https schemes.
|
| extension = LoadManifestStrict("script_and_capture",
|
| "extension_wildcard.json");
|
| - EXPECT_TRUE(Allowed(extension.get(), http_url));
|
| - EXPECT_TRUE(Allowed(extension.get(), https_url));
|
| + EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url));
|
| + EXPECT_TRUE(ScriptOnly(extension.get(), https_url, https_url));
|
| EXPECT_TRUE(Blocked(extension.get(), settings_url));
|
| EXPECT_TRUE(Blocked(extension.get(), about_url));
|
| EXPECT_TRUE(Blocked(extension.get(), file_url));
|
| @@ -476,16 +492,16 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) {
|
| EXPECT_FALSE(extension.get() == NULL);
|
| EXPECT_TRUE(Blocked(extension.get(), http_url));
|
| EXPECT_TRUE(Blocked(extension.get(), https_url));
|
| - EXPECT_TRUE(Allowed(extension.get(), settings_url));
|
| + EXPECT_TRUE(ScriptOnly(extension.get(), settings_url, settings_url));
|
| EXPECT_TRUE(Blocked(extension.get(), about_url));
|
| EXPECT_TRUE(Blocked(extension.get(), file_url));
|
| - EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested
|
| + EXPECT_TRUE(ScriptOnly(extension.get(), favicon_url, favicon_url));
|
|
|
| // Having chrome://favicon/* should not give you chrome://*
|
| extension = LoadManifestStrict("script_and_capture",
|
| "extension_chrome_favicon_wildcard.json");
|
| EXPECT_TRUE(Blocked(extension.get(), settings_url));
|
| - EXPECT_TRUE(Allowed(extension.get(), favicon_url)); // chrome:// requested
|
| + EXPECT_TRUE(ScriptOnly(extension.get(), favicon_url, favicon_url));
|
| EXPECT_TRUE(Blocked(extension.get(), about_url));
|
| EXPECT_TRUE(PermissionsData::HasHostPermission(extension.get(), favicon_url));
|
|
|
| @@ -509,7 +525,7 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) {
|
| extension = LoadManifest("script_and_capture",
|
| "extension_component_google.json", Manifest::COMPONENT,
|
| Extension::NO_FLAGS);
|
| - EXPECT_TRUE(Allowed(extension.get(), http_url));
|
| + EXPECT_TRUE(ScriptOnly(extension.get(), http_url, http_url));
|
| EXPECT_TRUE(Blocked(extension.get(), https_url));
|
| EXPECT_TRUE(Blocked(extension.get(), file_url));
|
| EXPECT_TRUE(Blocked(extension.get(), settings_url));
|
| @@ -533,9 +549,9 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) {
|
|
|
| std::set<GURL> no_urls;
|
|
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
|
|
| URLPatternSet allowed_hosts;
|
| allowed_hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL,
|
| @@ -558,17 +574,17 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) {
|
| ->explicit_hosts());
|
| }
|
|
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), allowed_urls, 0));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), allowed_urls, 0));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
|
|
| PermissionsData::ClearTabSpecificPermissions(extension.get(), 0);
|
| EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 0)
|
| .get());
|
|
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
|
|
| std::set<GURL> more_allowed_urls = allowed_urls;
|
| more_allowed_urls.insert(https_url);
|
| @@ -597,25 +613,27 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) {
|
| ->explicit_hosts());
|
| }
|
|
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), allowed_urls, 0));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), more_allowed_urls, 1));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), allowed_urls, 0));
|
| + EXPECT_TRUE(
|
| + ScriptAllowedExclusivelyOnTab(extension.get(), more_allowed_urls, 1));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
|
|
| PermissionsData::ClearTabSpecificPermissions(extension.get(), 0);
|
| EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 0)
|
| .get());
|
|
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), more_allowed_urls, 1));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0));
|
| + EXPECT_TRUE(
|
| + ScriptAllowedExclusivelyOnTab(extension.get(), more_allowed_urls, 1));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
|
|
| PermissionsData::ClearTabSpecificPermissions(extension.get(), 1);
|
| EXPECT_FALSE(PermissionsData::GetTabSpecificPermissions(extension.get(), 1)
|
| .get());
|
|
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 0));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 1));
|
| - EXPECT_TRUE(AllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 0));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 1));
|
| + EXPECT_TRUE(ScriptAllowedExclusivelyOnTab(extension.get(), no_urls, 2));
|
| }
|
|
|
| } // namespace extensions
|
|
|