Index: chrome/browser/extensions/extension_navigation_throttle_unittest.cc |
diff --git a/chrome/browser/extensions/extension_navigation_throttle_unittest.cc b/chrome/browser/extensions/extension_navigation_throttle_unittest.cc |
index 10e3a001c798e0447b2e0b88471fc4c9a3c1abba..35a546bc2a0bef1734d17c771b2f89279e7c6c50 100644 |
--- a/chrome/browser/extensions/extension_navigation_throttle_unittest.cc |
+++ b/chrome/browser/extensions/extension_navigation_throttle_unittest.cc |
@@ -40,10 +40,7 @@ class MockBrowserClient : public content::ContentBrowserClient { |
std::vector<std::unique_ptr<NavigationThrottle>> CreateThrottlesForNavigation( |
content::NavigationHandle* handle) override { |
std::vector<std::unique_ptr<NavigationThrottle>> throttles; |
- if (!handle->IsInMainFrame()) { // Mirrors ChromeContentBrowserClient. |
- throttles.push_back( |
- base::MakeUnique<ExtensionNavigationThrottle>(handle)); |
- } |
+ throttles.push_back(base::MakeUnique<ExtensionNavigationThrottle>(handle)); |
return throttles; |
} |
}; |
@@ -170,7 +167,7 @@ TEST_F(ExtensionNavigationThrottleUnitTest, WebPageAncestor) { |
} |
// Tests that requests to disabled or non-existent extensions are blocked. |
-TEST_F(ExtensionNavigationThrottleUnitTest, InvalidExtension) { |
+TEST_F(ExtensionNavigationThrottleUnitTest, DisabledExtensionChildFrame) { |
web_contents_tester()->NavigateAndCommit(GURL("http://example.com")); |
content::RenderFrameHost* child = |
render_frame_host_tester(main_rfh())->AppendChild("child"); |
@@ -189,10 +186,69 @@ TEST_F(ExtensionNavigationThrottleUnitTest, InvalidExtension) { |
std::string second_id = crx_file::id_util::GenerateId("bar"); |
ASSERT_NE(second_id, extension()->id()); |
- GURL invalid_url(base::StringPrintf("chrome-extension://%s/accessible.html", |
+ GURL unknown_url(base::StringPrintf("chrome-extension://%s/accessible.html", |
second_id.c_str())); |
// Requests to non-existent extensions should be blocked. |
- CheckTestCase(child, invalid_url, NavigationThrottle::BLOCK_REQUEST); |
+ CheckTestCase(child, unknown_url, NavigationThrottle::BLOCK_REQUEST); |
+ |
+ // Test blob and filesystem URLs with disabled/unknown extensions. |
+ GURL disabled_blob(base::StringPrintf("blob:chrome-extension://%s/SOMEGUID", |
+ extension()->id().c_str())); |
+ GURL unknown_blob(base::StringPrintf("blob:chrome-extension://%s/SOMEGUID", |
+ second_id.c_str())); |
+ CheckTestCase(child, disabled_blob, NavigationThrottle::BLOCK_REQUEST); |
+ CheckTestCase(child, unknown_blob, NavigationThrottle::BLOCK_REQUEST); |
+ GURL disabled_filesystem( |
+ base::StringPrintf("filesystem:chrome-extension://%s/temporary/foo.html", |
+ extension()->id().c_str())); |
+ GURL unknown_filesystem( |
+ base::StringPrintf("filesystem:chrome-extension://%s/temporary/foo.html", |
+ second_id.c_str())); |
+ CheckTestCase(child, disabled_filesystem, NavigationThrottle::BLOCK_REQUEST); |
+ CheckTestCase(child, unknown_filesystem, NavigationThrottle::BLOCK_REQUEST); |
+} |
+ |
+// Tests that requests to disabled or non-existent extensions are blocked. |
+TEST_F(ExtensionNavigationThrottleUnitTest, DisabledExtensionMainFrame) { |
+ web_contents_tester()->NavigateAndCommit(GURL("http://example.com")); |
+ |
+ ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context()); |
+ registry->RemoveEnabled(extension()->id()); |
+ registry->AddDisabled(extension()); |
+ |
+ // Since the extension is disabled, all requests should be blocked. |
+ CheckTestCase(main_rfh(), extension()->GetResourceURL(kPrivate), |
+ NavigationThrottle::BLOCK_REQUEST); |
+ CheckTestCase(main_rfh(), extension()->GetResourceURL(kAccessible), |
+ NavigationThrottle::BLOCK_REQUEST); |
+ CheckTestCase(main_rfh(), extension()->GetResourceURL(kAccessibleDirResource), |
+ NavigationThrottle::BLOCK_REQUEST); |
+ |
+ std::string second_id = crx_file::id_util::GenerateId("bar"); |
+ |
+ ASSERT_NE(second_id, extension()->id()); |
+ GURL unknown_url(base::StringPrintf("chrome-extension://%s/accessible.html", |
+ second_id.c_str())); |
+ // Requests to non-existent extensions should be blocked. |
+ CheckTestCase(main_rfh(), unknown_url, NavigationThrottle::BLOCK_REQUEST); |
+ |
+ // Test blob and filesystem URLs with disabled/unknown extensions. |
+ GURL disabled_blob(base::StringPrintf("blob:chrome-extension://%s/SOMEGUID", |
+ extension()->id().c_str())); |
+ GURL unknown_blob(base::StringPrintf("blob:chrome-extension://%s/SOMEGUID", |
+ second_id.c_str())); |
+ CheckTestCase(main_rfh(), disabled_blob, NavigationThrottle::BLOCK_REQUEST); |
+ CheckTestCase(main_rfh(), unknown_blob, NavigationThrottle::BLOCK_REQUEST); |
+ GURL disabled_filesystem( |
+ base::StringPrintf("filesystem:chrome-extension://%s/temporary/foo.html", |
+ extension()->id().c_str())); |
+ GURL unknown_filesystem( |
+ base::StringPrintf("filesystem:chrome-extension://%s/temporary/foo.html", |
+ second_id.c_str())); |
+ CheckTestCase(main_rfh(), disabled_filesystem, |
+ NavigationThrottle::BLOCK_REQUEST); |
+ CheckTestCase(main_rfh(), unknown_filesystem, |
+ NavigationThrottle::BLOCK_REQUEST); |
} |
} // namespace extensions |