Chromium Code Reviews| 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..cf448ba26e6af7d20913294402619d5936f39856 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, InvalidExtensionChildFrame) { |
| web_contents_tester()->NavigateAndCommit(GURL("http://example.com")); |
| content::RenderFrameHost* child = |
| render_frame_host_tester(main_rfh())->AppendChild("child"); |
| @@ -193,6 +190,65 @@ TEST_F(ExtensionNavigationThrottleUnitTest, InvalidExtension) { |
| second_id.c_str())); |
| // Requests to non-existent extensions should be blocked. |
| CheckTestCase(child, invalid_url, NavigationThrottle::BLOCK_REQUEST); |
| + |
| + // Test blob and filesystem URLs with disabled/invalid extensions. |
|
Devlin
2017/05/12 01:19:41
nit: s/invalid/nonexistent? invalid seems like it
ncarter (slow)
2017/05/12 17:32:19
Done.
|
| + GURL disabled_blob(base::StringPrintf("blob:chrome-extension://%s/SOMEGUID", |
| + extension()->id().c_str())); |
| + GURL invalid_blob(base::StringPrintf("blob:chrome-extension://%s/SOMEGUID", |
| + second_id.c_str())); |
| + CheckTestCase(child, disabled_blob, NavigationThrottle::BLOCK_REQUEST); |
| + CheckTestCase(child, invalid_blob, NavigationThrottle::BLOCK_REQUEST); |
| + GURL disabled_filesystem( |
| + base::StringPrintf("filesystem:chrome-extension://%s/temporary/foo.html", |
| + extension()->id().c_str())); |
| + GURL invalid_filesystem( |
| + base::StringPrintf("filesystem:chrome-extension://%s/temporary/foo.html", |
| + second_id.c_str())); |
| + CheckTestCase(child, disabled_filesystem, NavigationThrottle::BLOCK_REQUEST); |
| + CheckTestCase(child, invalid_filesystem, NavigationThrottle::BLOCK_REQUEST); |
| +} |
| + |
| +// Tests that requests to disabled or non-existent extensions are blocked. |
| +TEST_F(ExtensionNavigationThrottleUnitTest, InvalidExtensionMainFrame) { |
| + 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 invalid_url(base::StringPrintf("chrome-extension://%s/accessible.html", |
| + second_id.c_str())); |
| + // Requests to non-existent extensions should be blocked. |
| + CheckTestCase(main_rfh(), invalid_url, NavigationThrottle::BLOCK_REQUEST); |
| + |
| + // Test blob and filesystem URLs with disabled/invalid extensions. |
| + GURL disabled_blob(base::StringPrintf("blob:chrome-extension://%s/SOMEGUID", |
| + extension()->id().c_str())); |
| + GURL invalid_blob(base::StringPrintf("blob:chrome-extension://%s/SOMEGUID", |
| + second_id.c_str())); |
| + CheckTestCase(main_rfh(), disabled_blob, NavigationThrottle::BLOCK_REQUEST); |
| + CheckTestCase(main_rfh(), invalid_blob, NavigationThrottle::BLOCK_REQUEST); |
| + GURL disabled_filesystem( |
| + base::StringPrintf("filesystem:chrome-extension://%s/temporary/foo.html", |
| + extension()->id().c_str())); |
| + GURL invalid_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(), invalid_filesystem, |
| + NavigationThrottle::BLOCK_REQUEST); |
| } |
| } // namespace extensions |