| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <algorithm> | 5 #include <algorithm> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 #include "content/public/browser/notification_types.h" | 72 #include "content/public/browser/notification_types.h" |
| 73 #include "content/public/browser/plugin_service.h" | 73 #include "content/public/browser/plugin_service.h" |
| 74 #include "content/public/browser/render_view_host.h" | 74 #include "content/public/browser/render_view_host.h" |
| 75 #include "content/public/browser/web_contents.h" | 75 #include "content/public/browser/web_contents.h" |
| 76 #include "content/public/common/content_paths.h" | 76 #include "content/public/common/content_paths.h" |
| 77 #include "content/public/common/page_transition_types.h" | 77 #include "content/public/common/page_transition_types.h" |
| 78 #include "content/public/common/process_type.h" | 78 #include "content/public/common/process_type.h" |
| 79 #include "content/public/common/url_constants.h" | 79 #include "content/public/common/url_constants.h" |
| 80 #include "content/public/test/browser_test_utils.h" | 80 #include "content/public/test/browser_test_utils.h" |
| 81 #include "content/public/test/download_test_observer.h" | 81 #include "content/public/test/download_test_observer.h" |
| 82 #include "content/public/test/test_navigation_observer.h" |
| 82 #include "content/public/test/test_utils.h" | 83 #include "content/public/test/test_utils.h" |
| 84 #include "content/test/net/url_request_failed_job.h" |
| 83 #include "content/test/net/url_request_mock_http_job.h" | 85 #include "content/test/net/url_request_mock_http_job.h" |
| 84 #include "googleurl/src/gurl.h" | 86 #include "googleurl/src/gurl.h" |
| 85 #include "grit/generated_resources.h" | 87 #include "grit/generated_resources.h" |
| 88 #include "net/base/net_errors.h" |
| 86 #include "net/base/net_util.h" | 89 #include "net/base/net_util.h" |
| 87 #include "net/http/http_stream_factory.h" | 90 #include "net/http/http_stream_factory.h" |
| 88 #include "net/url_request/url_request.h" | 91 #include "net/url_request/url_request.h" |
| 89 #include "net/url_request/url_request_filter.h" | 92 #include "net/url_request/url_request_filter.h" |
| 90 #include "policy/policy_constants.h" | 93 #include "policy/policy_constants.h" |
| 91 #include "testing/gmock/include/gmock/gmock.h" | 94 #include "testing/gmock/include/gmock/gmock.h" |
| 92 #include "testing/gtest/include/gtest/gtest.h" | 95 #include "testing/gtest/include/gtest/gtest.h" |
| 93 #include "ui/base/l10n/l10n_util.h" | 96 #include "ui/base/l10n/l10n_util.h" |
| 94 #include "ui/base/resource/resource_bundle.h" | 97 #include "ui/base/resource/resource_bundle.h" |
| 95 #include "webkit/plugins/npapi/plugin_utils.h" | 98 #include "webkit/plugins/npapi/plugin_utils.h" |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 // Map the given hosts to the test data dir. | 144 // Map the given hosts to the test data dir. |
| 142 net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); | 145 net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); |
| 143 for (size_t i = 0; i < size; ++i) { | 146 for (size_t i = 0; i < size; ++i) { |
| 144 const GURL* url = urls[i]; | 147 const GURL* url = urls[i]; |
| 145 EXPECT_TRUE(url->is_valid()); | 148 EXPECT_TRUE(url->is_valid()); |
| 146 filter->AddHostnameHandler(url->scheme(), url->host(), | 149 filter->AddHostnameHandler(url->scheme(), url->host(), |
| 147 URLRequestMockHTTPJob::Factory); | 150 URLRequestMockHTTPJob::Factory); |
| 148 } | 151 } |
| 149 } | 152 } |
| 150 | 153 |
| 154 // Fails requests using ERR_CONNECTION_RESET. |
| 155 net::URLRequestJob* FailedJobFactory( |
| 156 net::URLRequest* request, |
| 157 net::NetworkDelegate* network_delegate, |
| 158 const std::string& scheme) { |
| 159 return new content::URLRequestFailedJob( |
| 160 request, network_delegate, net::ERR_CONNECTION_RESET); |
| 161 } |
| 162 |
| 163 // Filters requests to the |host| such that they fail. Run on IO thread. |
| 164 void MakeRequestFailOnIO(const std::string& host) { |
| 165 net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); |
| 166 filter->AddHostnameHandler("http", host, &FailedJobFactory); |
| 167 filter->AddHostnameHandler("https", host, &FailedJobFactory); |
| 168 } |
| 169 |
| 170 // Sets up the filter on IO thread such that requests to |host| fail. |
| 171 void MakeRequestFail(const std::string& host) { |
| 172 BrowserThread::PostTaskAndReply( |
| 173 BrowserThread::IO, FROM_HERE, |
| 174 base::Bind(MakeRequestFailOnIO, host), |
| 175 MessageLoop::QuitClosure()); |
| 176 content::RunMessageLoop(); |
| 177 } |
| 178 |
| 151 // Verifies that the given |url| can be opened. This assumes that |url| points | 179 // Verifies that the given |url| can be opened. This assumes that |url| points |
| 152 // at empty.html in the test data dir. | 180 // at empty.html in the test data dir. |
| 153 void CheckCanOpenURL(Browser* browser, const GURL& url) { | 181 void CheckCanOpenURL(Browser* browser, const GURL& url) { |
| 154 ui_test_utils::NavigateToURL(browser, url); | 182 ui_test_utils::NavigateToURL(browser, url); |
| 155 content::WebContents* contents = chrome::GetActiveWebContents(browser); | 183 content::WebContents* contents = chrome::GetActiveWebContents(browser); |
| 156 EXPECT_EQ(url, contents->GetURL()); | 184 EXPECT_EQ(url, contents->GetURL()); |
| 157 EXPECT_EQ(net::FormatUrl(url, std::string()), contents->GetTitle()); | 185 EXPECT_EQ(net::FormatUrl(url, std::string()), contents->GetTitle()); |
| 158 } | 186 } |
| 159 | 187 |
| 160 // Verifies that access to the given |url| is blocked. | 188 // Verifies that access to the given |url| is blocked. |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 POLICY_SCOPE_USER, base::Value::CreateBooleanValue(true)); | 604 POLICY_SCOPE_USER, base::Value::CreateBooleanValue(true)); |
| 577 provider_.UpdateChromePolicy(policies); | 605 provider_.UpdateChromePolicy(policies); |
| 578 } | 606 } |
| 579 | 607 |
| 580 IN_PROC_BROWSER_TEST_F(PolicyTest, ClearSiteDataOnExit) { | 608 IN_PROC_BROWSER_TEST_F(PolicyTest, ClearSiteDataOnExit) { |
| 581 // Verify that the cookie is gone. | 609 // Verify that the cookie is gone. |
| 582 EXPECT_TRUE(GetCookies(browser()->profile(), GURL(kURL)).empty()); | 610 EXPECT_TRUE(GetCookies(browser()->profile(), GURL(kURL)).empty()); |
| 583 } | 611 } |
| 584 | 612 |
| 585 IN_PROC_BROWSER_TEST_F(PolicyTest, DefaultSearchProvider) { | 613 IN_PROC_BROWSER_TEST_F(PolicyTest, DefaultSearchProvider) { |
| 614 MakeRequestFail("search.example"); |
| 615 |
| 586 // Verifies that a default search is made using the provider configured via | 616 // Verifies that a default search is made using the provider configured via |
| 587 // policy. Also checks that default search can be completely disabled. | 617 // policy. Also checks that default search can be completely disabled. |
| 588 const string16 kKeyword(ASCIIToUTF16("testsearch")); | 618 const string16 kKeyword(ASCIIToUTF16("testsearch")); |
| 589 const std::string kSearchURL("http://search.example/search?q={searchTerms}"); | 619 const std::string kSearchURL("http://search.example/search?q={searchTerms}"); |
| 590 const std::string kAlternateURL0( | 620 const std::string kAlternateURL0( |
| 591 "http://search.example/search#q={searchTerms}"); | 621 "http://search.example/search#q={searchTerms}"); |
| 592 const std::string kAlternateURL1("http://search.example/#q={searchTerms}"); | 622 const std::string kAlternateURL1("http://search.example/#q={searchTerms}"); |
| 593 | 623 |
| 594 TemplateURLService* service = TemplateURLServiceFactory::GetForProfile( | 624 TemplateURLService* service = TemplateURLServiceFactory::GetForProfile( |
| 595 browser()->profile()); | 625 browser()->profile()); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 POLICY_SCOPE_USER, base::Value::CreateBooleanValue(false)); | 671 POLICY_SCOPE_USER, base::Value::CreateBooleanValue(false)); |
| 642 EXPECT_TRUE(service->GetDefaultSearchProvider()); | 672 EXPECT_TRUE(service->GetDefaultSearchProvider()); |
| 643 provider_.UpdateChromePolicy(policies); | 673 provider_.UpdateChromePolicy(policies); |
| 644 EXPECT_FALSE(service->GetDefaultSearchProvider()); | 674 EXPECT_FALSE(service->GetDefaultSearchProvider()); |
| 645 ui_test_utils::SendToOmniboxAndSubmit(location_bar, "should not work"); | 675 ui_test_utils::SendToOmniboxAndSubmit(location_bar, "should not work"); |
| 646 // This means that submitting won't trigger any action. | 676 // This means that submitting won't trigger any action. |
| 647 EXPECT_FALSE(model->CurrentMatch().destination_url.is_valid()); | 677 EXPECT_FALSE(model->CurrentMatch().destination_url.is_valid()); |
| 648 EXPECT_EQ(GURL(chrome::kAboutBlankURL), web_contents->GetURL()); | 678 EXPECT_EQ(GURL(chrome::kAboutBlankURL), web_contents->GetURL()); |
| 649 } | 679 } |
| 650 | 680 |
| 681 IN_PROC_BROWSER_TEST_F(PolicyTest, ForceSafeSearch) { |
| 682 // Makes the requests fail since all we want to check is that the redirection |
| 683 // is done properly. |
| 684 MakeRequestFail("google.com"); |
| 685 |
| 686 // Verifies that requests to Google Search engine with the SafeSearch |
| 687 // enabled set the safe=active&ssui=on parameters at the end of the query. |
| 688 TemplateURLService* service = TemplateURLServiceFactory::GetForProfile( |
| 689 browser()->profile()); |
| 690 ui_test_utils::WaitForTemplateURLServiceToLoad(service); |
| 691 |
| 692 // First check that nothing happens. |
| 693 content::TestNavigationObserver no_safesearch_observer( |
| 694 content::NotificationService::AllSources()); |
| 695 chrome::FocusLocationBar(browser()); |
| 696 LocationBar* location_bar = browser()->window()->GetLocationBar(); |
| 697 ui_test_utils::SendToOmniboxAndSubmit(location_bar, "http://google.com/"); |
| 698 OmniboxEditModel* model = location_bar->GetLocationEntry()->model(); |
| 699 no_safesearch_observer.Wait(); |
| 700 EXPECT_TRUE(model->CurrentMatch().destination_url.is_valid()); |
| 701 content::WebContents* web_contents = chrome::GetActiveWebContents(browser()); |
| 702 GURL expected_without("http://google.com/"); |
| 703 EXPECT_EQ(expected_without, web_contents->GetURL()); |
| 704 |
| 705 PrefService* prefs = browser()->profile()->GetPrefs(); |
| 706 EXPECT_FALSE(prefs->IsManagedPreference(prefs::kForceSafeSearch)); |
| 707 EXPECT_FALSE(prefs->GetBoolean(prefs::kForceSafeSearch)); |
| 708 |
| 709 // Override the default SafeSearch setting using policies. |
| 710 PolicyMap policies; |
| 711 policies.Set(key::kForceSafeSearch, POLICY_LEVEL_MANDATORY, |
| 712 POLICY_SCOPE_USER, base::Value::CreateBooleanValue(true)); |
| 713 provider_.UpdateChromePolicy(policies); |
| 714 |
| 715 EXPECT_TRUE(prefs->IsManagedPreference(prefs::kForceSafeSearch)); |
| 716 EXPECT_TRUE(prefs->GetBoolean(prefs::kForceSafeSearch)); |
| 717 |
| 718 content::TestNavigationObserver safesearch_observer( |
| 719 content::NotificationService::AllSources()); |
| 720 |
| 721 // Verify that searching from google.com works. |
| 722 chrome::FocusLocationBar(browser()); |
| 723 location_bar = browser()->window()->GetLocationBar(); |
| 724 ui_test_utils::SendToOmniboxAndSubmit(location_bar, "http://google.com/"); |
| 725 safesearch_observer.Wait(); |
| 726 model = location_bar->GetLocationEntry()->model(); |
| 727 EXPECT_TRUE(model->CurrentMatch().destination_url.is_valid()); |
| 728 web_contents = chrome::GetActiveWebContents(browser()); |
| 729 std::string expected_url("http://google.com/?"); |
| 730 expected_url += std::string(chrome::kSafeSearchSafeParameter) + "&" + |
| 731 chrome::kSafeSearchSsuiParameter; |
| 732 GURL expected_with_parameters(expected_url); |
| 733 EXPECT_EQ(expected_with_parameters, web_contents->GetURL()); |
| 734 } |
| 735 |
| 651 IN_PROC_BROWSER_TEST_F(PolicyTest, ReplaceSearchTerms) { | 736 IN_PROC_BROWSER_TEST_F(PolicyTest, ReplaceSearchTerms) { |
| 737 MakeRequestFail("search.example"); |
| 738 |
| 652 CommandLine::ForCurrentProcess()->AppendSwitch( | 739 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 653 switches::kEnableInstantExtendedAPI); | 740 switches::kEnableInstantExtendedAPI); |
| 654 | 741 |
| 655 // Adding the kEnableInstantExtendedAPI is not enough since | 742 // Adding the kEnableInstantExtendedAPI is not enough since |
| 656 // IsInstantExtendedAPIEnabled does not return true on CHANNEL_DEV. | 743 // IsInstantExtendedAPIEnabled does not return true on CHANNEL_DEV. |
| 657 if (!chrome::search::IsInstantExtendedAPIEnabled(browser()->profile())) | 744 if (!chrome::search::IsInstantExtendedAPIEnabled(browser()->profile())) |
| 658 return; | 745 return; |
| 659 | 746 |
| 660 // Verifies that a default search is made using the provider configured via | 747 // Verifies that a default search is made using the provider configured via |
| 661 // policy. Also checks that default search can be completely disabled. | 748 // policy. Also checks that default search can be completely disabled. |
| (...skipping 912 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1574 EXPECT_EQ(kExpectedLabel, text.substr(0, kExpectedLabel.size())); | 1661 EXPECT_EQ(kExpectedLabel, text.substr(0, kExpectedLabel.size())); |
| 1575 // HomepageLocation has policy ID 1. | 1662 // HomepageLocation has policy ID 1. |
| 1576 EXPECT_NE(std::string::npos, text.find("<br>1 ---")); | 1663 EXPECT_NE(std::string::npos, text.find("<br>1 ---")); |
| 1577 // ShowHomeButton has policy ID 35. | 1664 // ShowHomeButton has policy ID 35. |
| 1578 EXPECT_NE(std::string::npos, text.find("<br>35 ---")); | 1665 EXPECT_NE(std::string::npos, text.find("<br>35 ---")); |
| 1579 // BookmarkBarEnabled has policy ID 82. | 1666 // BookmarkBarEnabled has policy ID 82. |
| 1580 EXPECT_NE(std::string::npos, text.find("<br>82 ---")); | 1667 EXPECT_NE(std::string::npos, text.find("<br>82 ---")); |
| 1581 } | 1668 } |
| 1582 | 1669 |
| 1583 } // namespace policy | 1670 } // namespace policy |
| OLD | NEW |