Index: chrome/browser/extensions/api/web_request/web_request_apitest.cc |
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc |
index 7993b3aaee9fce9e627a2d497b5ecb4755388c5e..689edf0961772cf262738164502912176a36e5bb 100644 |
--- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc |
+++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc |
@@ -15,7 +15,6 @@ |
#include "chrome/browser/extensions/extension_action_runner.h" |
#include "chrome/browser/extensions/extension_apitest.h" |
#include "chrome/browser/extensions/extension_service.h" |
-#include "chrome/browser/extensions/extension_with_management_policy_apitest.h" |
#include "chrome/browser/extensions/tab_helper.h" |
#include "chrome/browser/extensions/test_extension_dir.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -47,7 +46,6 @@ |
#include "extensions/test/result_catcher.h" |
#include "net/dns/mock_host_resolver.h" |
#include "net/test/embedded_test_server/embedded_test_server.h" |
-#include "net/test/embedded_test_server/http_request.h" |
#include "net/test/test_data_directory.h" |
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h" |
#include "net/url_request/test_url_fetcher_factory.h" |
@@ -87,7 +85,7 @@ |
private: |
content::NotificationRegistrar registrar_; |
- DISALLOW_COPY_AND_ASSIGN(CancelLoginDialog); |
+ DISALLOW_COPY_AND_ASSIGN(CancelLoginDialog); |
}; |
// Sends an XHR request to the provided host, port, and path, and responds when |
@@ -956,198 +954,4 @@ |
} |
} |
-// Tests that the webRequest events aren't dispatched when the request initiator |
-// is protected by policy. |
-IN_PROC_BROWSER_TEST_F(ExtensionApiTestWithManagementPolicy, |
- InitiatorProtectedByPolicy) { |
- // We expect that no request will be hidden or modification blocked. This |
- // means that the request to example.com will be seen by the extension. |
- { |
- ExtensionManagementPolicyUpdater pref(&policy_provider_); |
- pref.AddRuntimeBlockedHost("*", "*://notexample.com"); |
- } |
- |
- ASSERT_TRUE(StartEmbeddedTestServer()); |
- |
- // Host navigated to. |
- const std::string example_com = "example.com"; |
- |
- // URL of a page that initiates a cross domain requests when navigated to. |
- const GURL extension_test_url = embedded_test_server()->GetURL( |
- example_com, |
- "/extensions/api_test/webrequest/policy_blocked/ref_remote_js.html"); |
- |
- LoadExtension(test_data_dir_.AppendASCII("webrequest/policy_blocked")); |
- |
- // Extension communicates back using this listener name. |
- const std::string listener_message = "protected_origin"; |
- |
- // Listen to verify extension sees the web request. |
- ExtensionTestMessageListener before_request_listener(listener_message, false); |
- |
- // Wait until all remote Javascript files have been blocked / pulled down. |
- ui_test_utils::NavigateToURLWithDisposition( |
- browser(), extension_test_url, WindowOpenDisposition::CURRENT_TAB, |
- ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
- |
- // Domain that hosts javascript file referenced by example_com. |
- const std::string example2_com = "example2.com"; |
- |
- // The server saw a request for the remote Javascript file. |
- EXPECT_TRUE(BrowsedTo(example2_com)); |
- |
- // The request was seen by the extension. |
- EXPECT_TRUE(before_request_listener.was_satisfied()); |
- |
- // Clear the list of domains the server has seen. |
- ClearRequestLog(); |
- |
- // Make sure we've cleared the embedded server history. |
- EXPECT_FALSE(BrowsedTo(example2_com)); |
- |
- // Set the policy to hide requests to example.com or any resource |
- // it includes. We expect that in this test, the request to example2.com |
- // will not be seen by the extension. |
- { |
- ExtensionManagementPolicyUpdater pref(&policy_provider_); |
- pref.AddRuntimeBlockedHost("*", "*://" + example_com); |
- } |
- |
- // Listen in case extension sees the requst. |
- ExtensionTestMessageListener before_request_listener2(listener_message, |
- false); |
- |
- // Wait until all remote Javascript files have been pulled down. |
- ui_test_utils::NavigateToURLWithDisposition( |
- browser(), extension_test_url, WindowOpenDisposition::CURRENT_TAB, |
- ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
- |
- // The server saw a request for the remote Javascript file. |
- EXPECT_TRUE(BrowsedTo(example2_com)); |
- |
- // The request was hidden from the extension. |
- EXPECT_FALSE(before_request_listener2.was_satisfied()); |
-} |
- |
-// Tests that the webRequest events aren't dispatched when the URL of the |
-// request is protected by policy. |
-IN_PROC_BROWSER_TEST_F(ExtensionApiTestWithManagementPolicy, |
- UrlProtectedByPolicy) { |
- // Host protected by policy. |
- const std::string protected_domain = "example.com"; |
- |
- { |
- ExtensionManagementPolicyUpdater pref(&policy_provider_); |
- pref.AddRuntimeBlockedHost("*", "*://" + protected_domain); |
- } |
- |
- ASSERT_TRUE(StartEmbeddedTestServer()); |
- |
- LoadExtension(test_data_dir_.AppendASCII("webrequest/policy_blocked")); |
- |
- // Listen in case extension sees the requst. |
- ExtensionTestMessageListener before_request_listener("protected_url", false); |
- |
- // Path to resolve during test navigations. |
- const std::string test_path = "/defaultresponse?protected_url"; |
- |
- // Navigate to the protected domain and wait until page fully loads. |
- ui_test_utils::NavigateToURLWithDisposition( |
- browser(), embedded_test_server()->GetURL(protected_domain, test_path), |
- WindowOpenDisposition::CURRENT_TAB, |
- ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
- |
- // The server saw a request for the protected site. |
- EXPECT_TRUE(BrowsedTo(protected_domain)); |
- |
- // The request was hidden from the extension. |
- EXPECT_FALSE(before_request_listener.was_satisfied()); |
- |
- // Host not protected by policy. |
- const std::string unprotected_domain = "notblockedexample.com"; |
- |
- // Now we'll test browsing to a non-protected website where we expect the |
- // extension to see the request. |
- ui_test_utils::NavigateToURLWithDisposition( |
- browser(), embedded_test_server()->GetURL(unprotected_domain, test_path), |
- WindowOpenDisposition::CURRENT_TAB, |
- ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
- |
- // The server saw a request for the non-protected site. |
- EXPECT_TRUE(BrowsedTo(unprotected_domain)); |
- |
- // The request was visible from the extension. |
- EXPECT_TRUE(before_request_listener.was_satisfied()); |
-} |
- |
-// Test that no webRequest events are seen for a protected host during normal |
-// navigation. This replicates most of the tests from |
-// WebRequestWithWithheldPermissions with a protected host. Granting a tab |
-// specific permission shouldn't bypass our policy. |
-IN_PROC_BROWSER_TEST_F(ExtensionApiTestWithManagementPolicy, |
- WebRequestProtectedByPolicy) { |
- FeatureSwitch::ScopedOverride enable_scripts_require_action( |
- FeatureSwitch::scripts_require_action(), true); |
- |
- // Host protected by policy. |
- const std::string protected_domain = "example.com"; |
- |
- { |
- ExtensionManagementPolicyUpdater pref(&policy_provider_); |
- pref.AddRuntimeBlockedHost("*", "*://" + protected_domain); |
- } |
- |
- ASSERT_TRUE(StartEmbeddedTestServer()); |
- |
- ExtensionTestMessageListener listener("ready", false); |
- const Extension* extension = |
- LoadExtension(test_data_dir_.AppendASCII("webrequest_activetab")); |
- ASSERT_TRUE(extension) << message_; |
- EXPECT_TRUE(listener.WaitUntilSatisfied()); |
- |
- // Navigate the browser to a page in a new tab. |
- GURL url = embedded_test_server()->GetURL(protected_domain, "/empty.html"); |
- chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
- params.disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB; |
- ui_test_utils::NavigateToURL(¶ms); |
- |
- content::WebContents* web_contents = |
- browser()->tab_strip_model()->GetActiveWebContents(); |
- ASSERT_TRUE(web_contents); |
- ExtensionActionRunner* runner = |
- ExtensionActionRunner::GetForWebContents(web_contents); |
- ASSERT_TRUE(runner); |
- |
- int port = embedded_test_server()->port(); |
- const std::string kXhrPath = "simple.html"; |
- |
- // The extension shouldn't have currently received any webRequest events, |
- // since it doesn't have permission (and shouldn't receive any from an XHR). |
- EXPECT_EQ(0, GetWebRequestCountFromBackgroundPage(extension, profile())); |
- PerformXhrInFrame(web_contents->GetMainFrame(), protected_domain, port, |
- kXhrPath); |
- EXPECT_EQ(0, GetWebRequestCountFromBackgroundPage(extension, profile())); |
- |
- // Grant activeTab permission, and perform another XHR. The extension should |
- // still be blocked due to ExtensionSettings policy on example.com. |
- // Only records ACCESS_WITHHELD, not ACCESS_DENIED, this is why it matches |
- // BLOCKED_ACTION_NONE. |
- EXPECT_EQ(BLOCKED_ACTION_NONE, runner->GetBlockedActions(extension)); |
- runner->set_default_bubble_close_action_for_testing( |
- base::WrapUnique(new ToolbarActionsBarBubbleDelegate::CloseAction( |
- ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE))); |
- runner->RunAction(extension, true); |
- base::RunLoop().RunUntilIdle(); |
- EXPECT_TRUE(content::WaitForLoadStop(web_contents)); |
- EXPECT_EQ(BLOCKED_ACTION_NONE, runner->GetBlockedActions(extension)); |
- int xhr_count = GetWebRequestCountFromBackgroundPage(extension, profile()); |
- // ... which means that we should have a non-zero xhr count if the policy |
- // didn't block the events. |
- EXPECT_EQ(0, xhr_count); |
- // And the extension should also block future events. |
- PerformXhrInFrame(web_contents->GetMainFrame(), protected_domain, port, |
- kXhrPath); |
- EXPECT_EQ(0, GetWebRequestCountFromBackgroundPage(extension, profile())); |
-} |
- |
} // namespace extensions |