diff --git a/chrome/browser/extensions/extension_protocols_unittest.cc b/chrome/browser/extensions/extension_protocols_unittest.cc index c49bb9b1ef7c88..9c91034bb506b8 100644 --- a/chrome/browser/extensions/extension_protocols_unittest.cc +++ b/chrome/browser/extensions/extension_protocols_unittest.cc @@ -97,19 +97,24 @@ scoped_refptr CreateTestExtension(const std::string& name, } scoped_refptr CreateWebStoreExtension() { - base::DictionaryValue manifest; - manifest.SetString("name", "WebStore"); - manifest.SetString("version", "1"); - manifest.SetString("icons.16", "webstore_icon_16.png"); + std::unique_ptr manifest = + DictionaryBuilder() + .Set("name", "WebStore") + .Set("version", "1") + .Set("manifest_version", 2) + .Set("icons", + DictionaryBuilder().Set("16", "webstore_icon_16.png").Build()) + .Set("web_accessible_resources", + ListBuilder().Append("webstore_icon_16.png").Build()) + .Build(); base::FilePath path; EXPECT_TRUE(PathService::Get(chrome::DIR_RESOURCES, &path)); path = path.AppendASCII("web_store"); std::string error; - scoped_refptr extension( - Extension::Create(path, Manifest::COMPONENT, manifest, - Extension::NO_FLAGS, &error)); + scoped_refptr extension(Extension::Create( + path, Manifest::COMPONENT, *manifest, Extension::NO_FLAGS, &error)); EXPECT_TRUE(extension.get()) << error; return extension; } diff --git a/chrome/common/extensions/manifest_tests/extension_manifests_web_accessible_resources_unittest.cc b/chrome/common/extensions/manifest_tests/extension_manifests_web_accessible_resources_unittest.cc index ee6b8d50c3cf44..7dcd8b9b911722 100644 --- a/chrome/common/extensions/manifest_tests/extension_manifests_web_accessible_resources_unittest.cc +++ b/chrome/common/extensions/manifest_tests/extension_manifests_web_accessible_resources_unittest.cc @@ -13,70 +13,43 @@ class WebAccessibleResourcesManifestTest : public ChromeManifestTest { }; TEST_F(WebAccessibleResourcesManifestTest, WebAccessibleResources) { - // Manifest version 2 with web accessible resources specified. - scoped_refptr extension1( - LoadAndExpectSuccess("web_accessible_resources_1.json")); - - // Manifest version 2 with no web accessible resources. - scoped_refptr extension2( - LoadAndExpectSuccess("web_accessible_resources_2.json")); - - // Default manifest version with web accessible resources specified. - scoped_refptr extension3( - LoadAndExpectSuccess("web_accessible_resources_3.json")); - - // Default manifest version with no web accessible resources. - scoped_refptr extension4( - LoadAndExpectSuccess("web_accessible_resources_4.json")); - - // Default manifest version with wildcard web accessible resource. - scoped_refptr extension5( - LoadAndExpectSuccess("web_accessible_resources_5.json")); - - // Default manifest version with wildcard with specific path and extension. - scoped_refptr extension6( - LoadAndExpectSuccess("web_accessible_resources_6.json")); - - EXPECT_TRUE( - WebAccessibleResourcesInfo::HasWebAccessibleResources(extension1.get())); + // No web_accessible_resources. + scoped_refptr none( + LoadAndExpectSuccess("web_accessible_resources_none.json")); EXPECT_FALSE( - WebAccessibleResourcesInfo::HasWebAccessibleResources(extension2.get())); - EXPECT_TRUE( - WebAccessibleResourcesInfo::HasWebAccessibleResources(extension3.get())); + WebAccessibleResourcesInfo::HasWebAccessibleResources(none.get())); EXPECT_FALSE( - WebAccessibleResourcesInfo::HasWebAccessibleResources(extension4.get())); + WebAccessibleResourcesInfo::IsResourceWebAccessible(none.get(), "test")); + + // web_accessible_resources: ["test"]. + scoped_refptr single( + LoadAndExpectSuccess("web_accessible_resources_single.json")); EXPECT_TRUE( - WebAccessibleResourcesInfo::HasWebAccessibleResources(extension5.get())); + WebAccessibleResourcesInfo::HasWebAccessibleResources(single.get())); + EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(single.get(), + "test")); + EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(single.get(), + "other")); + + // web_accessible_resources: ["*"]. + scoped_refptr wildcard( + LoadAndExpectSuccess("web_accessible_resources_wildcard.json")); EXPECT_TRUE( - WebAccessibleResourcesInfo::HasWebAccessibleResources(extension6.get())); - - EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension1.get(), "test")); - EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension1.get(), "none")); - - EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension2.get(), "test")); - + WebAccessibleResourcesInfo::HasWebAccessibleResources(wildcard.get())); EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension3.get(), "test")); - EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension3.get(), "none")); - + wildcard.get(), "anything")); EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension4.get(), "test")); - EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension4.get(), "none")); - - EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension5.get(), "anything")); - EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension5.get(), "path/anything")); + wildcard.get(), "path/anything")); + // web_accessible_resources: ["path/*.ext"]. + scoped_refptr pattern( + LoadAndExpectSuccess("web_accessible_resources_pattern.json")); + EXPECT_TRUE( + WebAccessibleResourcesInfo::HasWebAccessibleResources(pattern.get())); EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension6.get(), "path/anything.ext")); + pattern.get(), "path/anything.ext")); EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension6.get(), "anything.ext")); + pattern.get(), "anything.ext")); EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible( - extension6.get(), "path/anything.badext")); + pattern.get(), "path/anything.badext")); } diff --git a/chrome/renderer/extensions/resource_request_policy.cc b/chrome/renderer/extensions/resource_request_policy.cc index 681d86c9dd382d..111717a6bcdf5a 100644 --- a/chrome/renderer/extensions/resource_request_policy.cc +++ b/chrome/renderer/extensions/resource_request_policy.cc @@ -34,12 +34,6 @@ ResourceRequestPolicy::~ResourceRequestPolicy() = default; void ResourceRequestPolicy::OnExtensionLoaded(const Extension& extension) { if (WebAccessibleResourcesInfo::HasWebAccessibleResources(&extension) || - // Extensions below manifest version 2 had all resources accessible by - // default. - // TODO(devlin): Two things - first, we might not have any v1 extensions - // anymore; second, this should maybe be included in - // HasWebAccessibleResources(). - extension.manifest_version() < 2 || WebviewInfo::HasWebviewAccessibleResources( extension, dispatcher_->webview_partition_id()) || // Hosted app icons are accessible. diff --git a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_3.json b/chrome/test/data/extensions/manifest_tests/web_accessible_resources_3.json deleted file mode 100644 index b5e3c3532a3e9b..00000000000000 --- a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "test", - "manifest_version": 2, - "version": "0.1", - "web_accessible_resources": ["test"] -} \ No newline at end of file diff --git a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_4.json b/chrome/test/data/extensions/manifest_tests/web_accessible_resources_4.json deleted file mode 100644 index 9f98a62315b255..00000000000000 --- a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_4.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "test", - "version": "0.1" -} \ No newline at end of file diff --git a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_2.json b/chrome/test/data/extensions/manifest_tests/web_accessible_resources_none.json similarity index 96% rename from chrome/test/data/extensions/manifest_tests/web_accessible_resources_2.json rename to chrome/test/data/extensions/manifest_tests/web_accessible_resources_none.json index 1210b20edbd834..50281622a5954c 100644 --- a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_2.json +++ b/chrome/test/data/extensions/manifest_tests/web_accessible_resources_none.json @@ -2,4 +2,4 @@ "name": "test", "version": "0.1", "manifest_version": 2 -} \ No newline at end of file +} diff --git a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_6.json b/chrome/test/data/extensions/manifest_tests/web_accessible_resources_pattern.json similarity index 75% rename from chrome/test/data/extensions/manifest_tests/web_accessible_resources_6.json rename to chrome/test/data/extensions/manifest_tests/web_accessible_resources_pattern.json index 553c1cc1862c20..a22b7d115bb500 100644 --- a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_6.json +++ b/chrome/test/data/extensions/manifest_tests/web_accessible_resources_pattern.json @@ -1,5 +1,6 @@ { "name": "test", + "manifest_version": 2, "version": "0.1", "web_accessible_resources": ["path/*.ext"] -} \ No newline at end of file +} diff --git a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_1.json b/chrome/test/data/extensions/manifest_tests/web_accessible_resources_single.json similarity index 100% rename from chrome/test/data/extensions/manifest_tests/web_accessible_resources_1.json rename to chrome/test/data/extensions/manifest_tests/web_accessible_resources_single.json diff --git a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_5.json b/chrome/test/data/extensions/manifest_tests/web_accessible_resources_wildcard.json similarity index 73% rename from chrome/test/data/extensions/manifest_tests/web_accessible_resources_5.json rename to chrome/test/data/extensions/manifest_tests/web_accessible_resources_wildcard.json index 680b5d84c38603..5e93a032e39672 100644 --- a/chrome/test/data/extensions/manifest_tests/web_accessible_resources_5.json +++ b/chrome/test/data/extensions/manifest_tests/web_accessible_resources_wildcard.json @@ -1,5 +1,6 @@ { "name": "test", + "manifest_version": 2, "version": "0.1", "web_accessible_resources": ["*"] -} \ No newline at end of file +} diff --git a/extensions/browser/extension_protocols.cc b/extensions/browser/extension_protocols.cc index c6cd52d0c999b1..4f754bb817f870 100644 --- a/extensions/browser/extension_protocols.cc +++ b/extensions/browser/extension_protocols.cc @@ -506,10 +506,7 @@ void GetSecurityPolicyForURL(const GURL& url, resource_path); } - if ((extension->manifest_version() >= 2 || - extensions::WebAccessibleResourcesInfo::HasWebAccessibleResources( - extension)) && - extensions::WebAccessibleResourcesInfo::IsResourceWebAccessible( + if (extensions::WebAccessibleResourcesInfo::IsResourceWebAccessible( extension, resource_path)) { *send_cors_header = true; } diff --git a/extensions/browser/url_request_util.cc b/extensions/browser/url_request_util.cc index df93ee7d10da5e..9715f999a7dede 100644 --- a/extensions/browser/url_request_util.cc +++ b/extensions/browser/url_request_util.cc @@ -79,13 +79,6 @@ bool AllowCrossRendererResourceLoad(const GURL& url, DCHECK_EQ(extension->url(), url.GetWithEmptyPath()); - // Extensions with manifest before v2 did not have web_accessible_resource - // section, therefore the request needs to be allowed. - if (extension->manifest_version() < 2) { - *allowed = true; - return true; - } - // Navigating the main frame to an extension URL is allowed, even if not // explicitly listed as web_accessible_resource. if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) { diff --git a/extensions/common/manifest_handlers/web_accessible_resources_info.cc b/extensions/common/manifest_handlers/web_accessible_resources_info.cc index df6a7dffb2ab80..999bc9671e3f77 100644 --- a/extensions/common/manifest_handlers/web_accessible_resources_info.cc +++ b/extensions/common/manifest_handlers/web_accessible_resources_info.cc @@ -39,12 +39,6 @@ WebAccessibleResourcesInfo::~WebAccessibleResourcesInfo() { bool WebAccessibleResourcesInfo::IsResourceWebAccessible( const Extension* extension, const std::string& relative_path) { - // For old manifest versions which do not specify web_accessible_resources - // we always allow resource loads. - if (extension->manifest_version() < 2 && - !WebAccessibleResourcesInfo::HasWebAccessibleResources(extension)) - return true; - const WebAccessibleResourcesInfo* info = GetResourcesInfo(extension); return info && extension->ResourceMatches(