Index: chrome/browser/managed_mode/managed_mode_browsertest.cc |
diff --git a/chrome/browser/managed_mode/managed_mode_browsertest.cc b/chrome/browser/managed_mode/managed_mode_browsertest.cc |
deleted file mode 100644 |
index 9af827ec2096025a01c39f6df1d3d5f6ec99473e..0000000000000000000000000000000000000000 |
--- a/chrome/browser/managed_mode/managed_mode_browsertest.cc |
+++ /dev/null |
@@ -1,313 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/command_line.h" |
-#include "base/prefs/pref_service.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "base/values.h" |
-#include "chrome/browser/chrome_notification_types.h" |
-#include "chrome/browser/common/cancelable_request.h" |
-#include "chrome/browser/history/history_service_factory.h" |
-#include "chrome/browser/infobars/infobar_service.h" |
-#include "chrome/browser/managed_mode/managed_mode_interstitial.h" |
-#include "chrome/browser/managed_mode/managed_mode_navigation_observer.h" |
-#include "chrome/browser/managed_mode/managed_user_constants.h" |
-#include "chrome/browser/managed_mode/managed_user_service.h" |
-#include "chrome/browser/managed_mode/managed_user_service_factory.h" |
-#include "chrome/browser/managed_mode/managed_user_settings_service.h" |
-#include "chrome/browser/managed_mode/managed_user_settings_service_factory.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/browser_navigator.h" |
-#include "chrome/browser/ui/tabs/tab_strip_model.h" |
-#include "chrome/browser/ui/tabs/tab_strip_model_observer.h" |
-#include "chrome/common/chrome_switches.h" |
-#include "chrome/common/pref_names.h" |
-#include "chrome/test/base/in_process_browser_test.h" |
-#include "chrome/test/base/ui_test_utils.h" |
-#include "components/infobars/core/confirm_infobar_delegate.h" |
-#include "components/infobars/core/infobar.h" |
-#include "components/pref_registry/pref_registry_syncable.h" |
-#include "content/public/browser/interstitial_page.h" |
-#include "content/public/browser/navigation_controller.h" |
-#include "content/public/browser/navigation_entry.h" |
-#include "content/public/browser/notification_service.h" |
-#include "content/public/browser/web_contents.h" |
-#include "content/public/browser/web_contents_observer.h" |
-#include "content/public/test/browser_test_utils.h" |
-#include "grit/generated_resources.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "ui/base/l10n/l10n_util.h" |
- |
-using content::InterstitialPage; |
-using content::NavigationController; |
-using content::NavigationEntry; |
-using content::WebContents; |
- |
-namespace { |
- |
-// Tests the filter mode in which all sites are blocked by default. |
-class ManagedModeBlockModeTest : public InProcessBrowserTest { |
- public: |
- // Indicates whether the interstitial should proceed or not. |
- enum InterstitialAction { |
- INTERSTITIAL_PROCEED, |
- INTERSTITIAL_DONTPROCEED, |
- }; |
- |
- ManagedModeBlockModeTest() : managed_user_service_(NULL) {} |
- virtual ~ManagedModeBlockModeTest() {} |
- |
- void CheckShownPageIsInterstitial(WebContents* tab) { |
- CheckShownPage(tab, content::PAGE_TYPE_INTERSTITIAL); |
- } |
- |
- void CheckShownPageIsNotInterstitial(WebContents* tab) { |
- CheckShownPage(tab, content::PAGE_TYPE_NORMAL); |
- } |
- |
- // Checks to see if the type of the current page is |page_type|. |
- void CheckShownPage(WebContents* tab, content::PageType page_type) { |
- ASSERT_FALSE(tab->IsCrashed()); |
- NavigationEntry* entry = tab->GetController().GetActiveEntry(); |
- ASSERT_TRUE(entry); |
- ASSERT_EQ(page_type, entry->GetPageType()); |
- } |
- |
- void SendAccessRequest(WebContents* tab) { |
- InterstitialPage* interstitial_page = tab->GetInterstitialPage(); |
- ASSERT_TRUE(interstitial_page); |
- |
- // Get the ManagedModeInterstitial delegate. |
- content::InterstitialPageDelegate* delegate = |
- interstitial_page->GetDelegateForTesting(); |
- |
- // Simulate the click on the "request" button. |
- delegate->CommandReceived("\"request\""); |
- } |
- |
- void GoBack(WebContents* tab) { |
- InterstitialPage* interstitial_page = tab->GetInterstitialPage(); |
- ASSERT_TRUE(interstitial_page); |
- |
- // Get the ManagedModeInterstitial delegate. |
- content::InterstitialPageDelegate* delegate = |
- interstitial_page->GetDelegateForTesting(); |
- |
- // Simulate the click on the "back" button. |
- delegate->CommandReceived("\"back\""); |
- } |
- |
- protected: |
- virtual void SetUpOnMainThread() OVERRIDE { |
- // Set up the ManagedModeNavigationObserver manually since the profile was |
- // not managed when the browser was created. |
- content::WebContents* web_contents = |
- browser()->tab_strip_model()->GetActiveWebContents(); |
- ManagedModeNavigationObserver::CreateForWebContents(web_contents); |
- |
- Profile* profile = browser()->profile(); |
- managed_user_service_ = ManagedUserServiceFactory::GetForProfile(profile); |
- ManagedUserSettingsService* managed_user_settings_service = |
- ManagedUserSettingsServiceFactory::GetForProfile(profile); |
- managed_user_settings_service->SetLocalSettingForTesting( |
- managed_users::kContentPackDefaultFilteringBehavior, |
- scoped_ptr<base::Value>( |
- new base::FundamentalValue(ManagedModeURLFilter::BLOCK))); |
- } |
- |
- virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
- // Enable the test server and remap all URLs to it. |
- ASSERT_TRUE(test_server()->Start()); |
- std::string host_port = test_server()->host_port_pair().ToString(); |
- command_line->AppendSwitchASCII(switches::kHostResolverRules, |
- "MAP *.example.com " + host_port + "," + |
- "MAP *.new-example.com " + host_port + "," + |
- "MAP *.a.com " + host_port); |
- |
- command_line->AppendSwitchASCII(switches::kSupervisedUserId, "asdf"); |
- } |
- |
- // Acts like a synchronous call to history's QueryHistory. Modified from |
- // history_querying_unittest.cc. |
- void QueryHistory(HistoryService* history_service, |
- const std::string& text_query, |
- const history::QueryOptions& options, |
- history::QueryResults* results) { |
- CancelableRequestConsumer history_request_consumer; |
- base::RunLoop run_loop; |
- history_service->QueryHistory( |
- base::UTF8ToUTF16(text_query), |
- options, |
- &history_request_consumer, |
- base::Bind(&ManagedModeBlockModeTest::QueryHistoryComplete, |
- base::Unretained(this), |
- results, |
- &run_loop)); |
- run_loop.Run(); // Will go until ...Complete calls Quit. |
- } |
- |
- void QueryHistoryComplete(history::QueryResults* new_results, |
- base::RunLoop* run_loop, |
- HistoryService::Handle /* handle */, |
- history::QueryResults* results) { |
- results->Swap(new_results); |
- run_loop->Quit(); // Will return out to QueryHistory. |
- } |
- |
- ManagedUserService* managed_user_service_; |
-}; |
- |
-class MockTabStripModelObserver : public TabStripModelObserver { |
- public: |
- explicit MockTabStripModelObserver(TabStripModel* tab_strip) |
- : tab_strip_(tab_strip) { |
- tab_strip_->AddObserver(this); |
- } |
- |
- ~MockTabStripModelObserver() { |
- tab_strip_->RemoveObserver(this); |
- } |
- |
- MOCK_METHOD3(TabClosingAt, void(TabStripModel*, content::WebContents*, int)); |
- |
- private: |
- TabStripModel* tab_strip_; |
-}; |
- |
-// Navigates to a blocked URL. |
-IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
- SendAccessRequestOnBlockedURL) { |
- GURL test_url("http://www.example.com/files/simple.html"); |
- ui_test_utils::NavigateToURL(browser(), test_url); |
- |
- WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
- |
- CheckShownPageIsInterstitial(tab); |
- |
- SendAccessRequest(tab); |
- |
- // TODO(sergiu): Properly check that the access request was sent here. |
- |
- GoBack(tab); |
- |
- // Make sure that the tab is still there. |
- EXPECT_EQ(tab, browser()->tab_strip_model()->GetActiveWebContents()); |
- |
- CheckShownPageIsNotInterstitial(tab); |
-} |
- |
-// Navigates to a blocked URL in a new tab. We expect the tab to be closed |
-// automatically on pressing the "back" button on the interstitial. |
-IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, OpenBlockedURLInNewTab) { |
- TabStripModel* tab_strip = browser()->tab_strip_model(); |
- WebContents* prev_tab = tab_strip->GetActiveWebContents(); |
- |
- // Open blocked URL in a new tab. |
- GURL test_url("http://www.example.com/files/simple.html"); |
- ui_test_utils::NavigateToURLWithDisposition( |
- browser(), test_url, NEW_FOREGROUND_TAB, |
- ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
- |
- // Check that we got the interstitial. |
- WebContents* tab = tab_strip->GetActiveWebContents(); |
- CheckShownPageIsInterstitial(tab); |
- |
- // On pressing the "back" button, the new tab should be closed, and we should |
- // get back to the previous active tab. |
- MockTabStripModelObserver observer(tab_strip); |
- EXPECT_CALL(observer, |
- TabClosingAt(tab_strip, tab, tab_strip->active_index())); |
- GoBack(tab); |
- EXPECT_EQ(prev_tab, tab_strip->GetActiveWebContents()); |
-} |
- |
-// Tests whether a visit attempt adds a special history entry. |
-IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, |
- HistoryVisitRecorded) { |
- GURL allowed_url("http://www.example.com/files/simple.html"); |
- |
- // Set the host as allowed. |
- scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); |
- dict->SetBooleanWithoutPathExpansion(allowed_url.host(), true); |
- ManagedUserSettingsService* managed_user_settings_service = |
- ManagedUserSettingsServiceFactory::GetForProfile( |
- browser()->profile()); |
- managed_user_settings_service->SetLocalSettingForTesting( |
- managed_users::kContentPackManualBehaviorHosts, |
- dict.PassAs<base::Value>()); |
- EXPECT_EQ( |
- ManagedUserService::MANUAL_ALLOW, |
- managed_user_service_->GetManualBehaviorForHost(allowed_url.host())); |
- |
- ui_test_utils::NavigateToURL(browser(), allowed_url); |
- |
- // Navigate to it and check that we don't get an interstitial. |
- WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
- CheckShownPageIsNotInterstitial(tab); |
- |
- // Navigate to a blocked page and go back on the interstitial. |
- GURL blocked_url("http://www.new-example.com/files/simple.html"); |
- ui_test_utils::NavigateToURL(browser(), blocked_url); |
- |
- tab = browser()->tab_strip_model()->GetActiveWebContents(); |
- |
- CheckShownPageIsInterstitial(tab); |
- GoBack(tab); |
- |
- // Check that we went back to the first URL and that the manual behaviors |
- // have not changed. |
- EXPECT_EQ(allowed_url.spec(), tab->GetURL().spec()); |
- EXPECT_EQ(ManagedUserService::MANUAL_ALLOW, |
- managed_user_service_->GetManualBehaviorForHost("www.example.com")); |
- EXPECT_EQ( |
- ManagedUserService::MANUAL_NONE, |
- managed_user_service_->GetManualBehaviorForHost("www.new-example.com")); |
- |
- // Query the history entry. |
- HistoryService* history_service = HistoryServiceFactory::GetForProfile( |
- browser()->profile(), Profile::EXPLICIT_ACCESS); |
- history::QueryOptions options; |
- history::QueryResults results; |
- QueryHistory(history_service, "", options, &results); |
- |
- // Check that the entries have the correct blocked_visit value. |
- ASSERT_EQ(2u, results.size()); |
- EXPECT_EQ(blocked_url.spec(), results[0].url().spec()); |
- EXPECT_TRUE(results[0].blocked_visit()); |
- EXPECT_EQ(allowed_url.spec(), results[1].url().spec()); |
- EXPECT_FALSE(results[1].blocked_visit()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(ManagedModeBlockModeTest, Unblock) { |
- GURL test_url("http://www.example.com/files/simple.html"); |
- ui_test_utils::NavigateToURL(browser(), test_url); |
- |
- WebContents* web_contents = |
- browser()->tab_strip_model()->GetActiveWebContents(); |
- |
- CheckShownPageIsInterstitial(web_contents); |
- |
- content::WindowedNotificationObserver observer( |
- content::NOTIFICATION_LOAD_STOP, |
- content::NotificationService::AllSources()); |
- |
- // Set the host as allowed. |
- scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); |
- dict->SetBooleanWithoutPathExpansion(test_url.host(), true); |
- ManagedUserSettingsService* managed_user_settings_service = |
- ManagedUserSettingsServiceFactory::GetForProfile( |
- browser()->profile()); |
- managed_user_settings_service->SetLocalSettingForTesting( |
- managed_users::kContentPackManualBehaviorHosts, |
- dict.PassAs<base::Value>()); |
- EXPECT_EQ( |
- ManagedUserService::MANUAL_ALLOW, |
- managed_user_service_->GetManualBehaviorForHost(test_url.host())); |
- |
- observer.Wait(); |
- EXPECT_EQ(test_url, web_contents->GetURL()); |
-} |
- |
-} // namespace |