| 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 113 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   124 const FilePath::CharType kGoodCrxName[] = FILE_PATH_LITERAL("good.crx"); |   124 const FilePath::CharType kGoodCrxName[] = FILE_PATH_LITERAL("good.crx"); | 
|   125 const FilePath::CharType kAdBlockCrxName[] = FILE_PATH_LITERAL("adblock.crx"); |   125 const FilePath::CharType kAdBlockCrxName[] = FILE_PATH_LITERAL("adblock.crx"); | 
|   126  |   126  | 
|   127 const char kGoodCrxId[] = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; |   127 const char kGoodCrxId[] = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; | 
|   128 const char kAdBlockCrxId[] = "dojnnbeimaimaojcialkkgajdnefpgcn"; |   128 const char kAdBlockCrxId[] = "dojnnbeimaimaojcialkkgajdnefpgcn"; | 
|   129  |   129  | 
|   130 const FilePath::CharType kGoodCrxManifestName[] = |   130 const FilePath::CharType kGoodCrxManifestName[] = | 
|   131     FILE_PATH_LITERAL("good_update_manifest.xml"); |   131     FILE_PATH_LITERAL("good_update_manifest.xml"); | 
|   132  |   132  | 
|   133 const char* kURLs[] = { |   133 const char* kURLs[] = { | 
|   134   "http://aaa.com/empty.html", |   134   "http://aaaa.com/empty.html", | 
|   135   "http://bbb.com/empty.html", |   135   "http://bbbb.com/empty.html", | 
|   136   "http://ccc.com/empty.html", |   136   "http://ccc.com/empty.html", | 
|   137   "http://ddd.com/empty.html", |   137   "http://ddd.com/empty.html", | 
|   138   "http://eee.com/empty.html", |   138   "http://eee.com/empty.html", | 
|   139 }; |   139 }; | 
|   140  |   140  | 
|   141 // Filters requests to the hosts in |urls| and redirects them to the test data |   141 // Filters requests to the hosts in |urls| and redirects them to the test data | 
|   142 // dir through URLRequestMockHTTPJobs. |   142 // dir through URLRequestMockHTTPJobs. | 
|   143 void RedirectHostsToTestData(const char* const urls[], size_t size) { |   143 void RedirectHostsToTestData(const char* const urls[], size_t size) { | 
|   144   // Map the given hosts to the test data dir. |   144   // Map the given hosts to the test data dir. | 
|   145   net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); |   145   net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); | 
|   146   for (size_t i = 0; i < size; ++i) { |   146   for (size_t i = 0; i < size; ++i) { | 
|   147     const GURL url(urls[i]); |   147     const GURL url(urls[i]); | 
|   148     EXPECT_TRUE(url.is_valid()); |   148     EXPECT_TRUE(url.is_valid()); | 
|   149     filter->AddHostnameHandler(url.scheme(), url.host(), |   149     filter->AddUrlHandler(url, URLRequestMockHTTPJob::Factory); | 
|   150                                URLRequestMockHTTPJob::Factory); |  | 
|   151   } |   150   } | 
|   152 } |   151 } | 
|   153  |   152  | 
 |   153 // Remove filters for requests to the hosts in |urls|. | 
 |   154 void UndoRedirectHostsToTestData(const char* const urls[], size_t size) { | 
 |   155   // Map the given hosts to the test data dir. | 
 |   156   net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); | 
 |   157   for (size_t i = 0; i < size; ++i) { | 
 |   158     const GURL url(urls[i]); | 
 |   159     EXPECT_TRUE(url.is_valid()); | 
 |   160     filter->RemoveUrlHandler(url); | 
 |   161   } | 
 |   162 } | 
 |   163  | 
|   154 // Fails requests using ERR_CONNECTION_RESET. |   164 // Fails requests using ERR_CONNECTION_RESET. | 
|   155 net::URLRequestJob* FailedJobFactory( |   165 net::URLRequestJob* FailedJobFactory( | 
|   156     net::URLRequest* request, |   166     net::URLRequest* request, | 
|   157     net::NetworkDelegate* network_delegate, |   167     net::NetworkDelegate* network_delegate, | 
|   158     const std::string& scheme) { |   168     const std::string& scheme) { | 
|   159   return new content::URLRequestFailedJob( |   169   return new content::URLRequestFailedJob( | 
|   160       request, network_delegate, net::ERR_CONNECTION_RESET); |   170       request, network_delegate, net::ERR_CONNECTION_RESET); | 
|   161 } |   171 } | 
|   162  |   172  | 
|   163 // Filters requests to the |host| such that they fail. Run on IO thread. |   173 // While |MakeRequestFail| is in scope URLRequests to |host| will fail. | 
|   164 void MakeRequestFailOnIO(const std::string& host) { |   174 class MakeRequestFail { | 
|   165   net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); |   175  public: | 
|   166   filter->AddHostnameHandler("http", host, &FailedJobFactory); |   176   // Sets up the filter on IO thread such that requests to |host| fail. | 
|   167   filter->AddHostnameHandler("https", host, &FailedJobFactory); |   177   explicit MakeRequestFail(const std::string& host) : host_(host) { | 
|   168 } |   178     BrowserThread::PostTaskAndReply( | 
 |   179         BrowserThread::IO, FROM_HERE, | 
 |   180         base::Bind(MakeRequestFailOnIO, host_), | 
 |   181         MessageLoop::QuitClosure()); | 
 |   182     content::RunMessageLoop(); | 
 |   183   } | 
 |   184   ~MakeRequestFail() { | 
 |   185     BrowserThread::PostTaskAndReply( | 
 |   186         BrowserThread::IO, FROM_HERE, | 
 |   187         base::Bind(UndoMakeRequestFailOnIO, host_), | 
 |   188         MessageLoop::QuitClosure()); | 
 |   189     content::RunMessageLoop(); | 
 |   190   } | 
|   169  |   191  | 
|   170 // Sets up the filter on IO thread such that requests to |host| fail. |   192  private: | 
|   171 void MakeRequestFail(const std::string& host) { |   193   // Filters requests to the |host| such that they fail. Run on IO thread. | 
|   172   BrowserThread::PostTaskAndReply( |   194   static void MakeRequestFailOnIO(const std::string& host) { | 
|   173       BrowserThread::IO, FROM_HERE, |   195     net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); | 
|   174       base::Bind(MakeRequestFailOnIO, host), |   196     filter->AddHostnameHandler("http", host, &FailedJobFactory); | 
|   175       MessageLoop::QuitClosure()); |   197     filter->AddHostnameHandler("https", host, &FailedJobFactory); | 
|   176   content::RunMessageLoop(); |   198   } | 
|   177 } |   199  | 
 |   200   // Remove filters for requests to the |host|. Run on IO thread. | 
 |   201   static void UndoMakeRequestFailOnIO(const std::string& host) { | 
 |   202     net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); | 
 |   203     filter->RemoveHostnameHandler("http", host); | 
 |   204     filter->RemoveHostnameHandler("https", host); | 
 |   205   } | 
 |   206  | 
 |   207   const std::string host_; | 
 |   208 }; | 
|   178  |   209  | 
|   179 // Verifies that the given url |spec| can be opened. This assumes that |spec| |   210 // Verifies that the given url |spec| can be opened. This assumes that |spec| | 
|   180 // points at empty.html in the test data dir. |   211 // points at empty.html in the test data dir. | 
|   181 void CheckCanOpenURL(Browser* browser, const char* spec) { |   212 void CheckCanOpenURL(Browser* browser, const char* spec) { | 
|   182   GURL url(spec); |   213   GURL url(spec); | 
|   183   ui_test_utils::NavigateToURL(browser, url); |   214   ui_test_utils::NavigateToURL(browser, url); | 
|   184   content::WebContents* contents = chrome::GetActiveWebContents(browser); |   215   content::WebContents* contents = chrome::GetActiveWebContents(browser); | 
|   185   EXPECT_EQ(url, contents->GetURL()); |   216   EXPECT_EQ(url, contents->GetURL()); | 
|   186   EXPECT_EQ(net::FormatUrl(url, std::string()), contents->GetTitle()); |   217   EXPECT_EQ(net::FormatUrl(url, std::string()), contents->GetTitle()); | 
|   187 } |   218 } | 
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   606                POLICY_SCOPE_USER, base::Value::CreateBooleanValue(true)); |   637                POLICY_SCOPE_USER, base::Value::CreateBooleanValue(true)); | 
|   607   provider_.UpdateChromePolicy(policies); |   638   provider_.UpdateChromePolicy(policies); | 
|   608 } |   639 } | 
|   609  |   640  | 
|   610 IN_PROC_BROWSER_TEST_F(PolicyTest, ClearSiteDataOnExit) { |   641 IN_PROC_BROWSER_TEST_F(PolicyTest, ClearSiteDataOnExit) { | 
|   611   // Verify that the cookie is gone. |   642   // Verify that the cookie is gone. | 
|   612   EXPECT_TRUE(GetCookies(browser()->profile(), GURL(kURL)).empty()); |   643   EXPECT_TRUE(GetCookies(browser()->profile(), GURL(kURL)).empty()); | 
|   613 } |   644 } | 
|   614  |   645  | 
|   615 IN_PROC_BROWSER_TEST_F(PolicyTest, DefaultSearchProvider) { |   646 IN_PROC_BROWSER_TEST_F(PolicyTest, DefaultSearchProvider) { | 
|   616   MakeRequestFail("search.example"); |   647   MakeRequestFail make_request_fail("search.example"); | 
|   617  |   648  | 
|   618   // Verifies that a default search is made using the provider configured via |   649   // Verifies that a default search is made using the provider configured via | 
|   619   // policy. Also checks that default search can be completely disabled. |   650   // policy. Also checks that default search can be completely disabled. | 
|   620   const string16 kKeyword(ASCIIToUTF16("testsearch")); |   651   const string16 kKeyword(ASCIIToUTF16("testsearch")); | 
|   621   const std::string kSearchURL("http://search.example/search?q={searchTerms}"); |   652   const std::string kSearchURL("http://search.example/search?q={searchTerms}"); | 
|   622   const std::string kAlternateURL0( |   653   const std::string kAlternateURL0( | 
|   623       "http://search.example/search#q={searchTerms}"); |   654       "http://search.example/search#q={searchTerms}"); | 
|   624   const std::string kAlternateURL1("http://search.example/#q={searchTerms}"); |   655   const std::string kAlternateURL1("http://search.example/#q={searchTerms}"); | 
|   625  |   656  | 
|   626   TemplateURLService* service = TemplateURLServiceFactory::GetForProfile( |   657   TemplateURLService* service = TemplateURLServiceFactory::GetForProfile( | 
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   676   EXPECT_FALSE(service->GetDefaultSearchProvider()); |   707   EXPECT_FALSE(service->GetDefaultSearchProvider()); | 
|   677   ui_test_utils::SendToOmniboxAndSubmit(location_bar, "should not work"); |   708   ui_test_utils::SendToOmniboxAndSubmit(location_bar, "should not work"); | 
|   678   // This means that submitting won't trigger any action. |   709   // This means that submitting won't trigger any action. | 
|   679   EXPECT_FALSE(model->CurrentMatch().destination_url.is_valid()); |   710   EXPECT_FALSE(model->CurrentMatch().destination_url.is_valid()); | 
|   680   EXPECT_EQ(GURL(chrome::kAboutBlankURL), web_contents->GetURL()); |   711   EXPECT_EQ(GURL(chrome::kAboutBlankURL), web_contents->GetURL()); | 
|   681 } |   712 } | 
|   682  |   713  | 
|   683 IN_PROC_BROWSER_TEST_F(PolicyTest, ForceSafeSearch) { |   714 IN_PROC_BROWSER_TEST_F(PolicyTest, ForceSafeSearch) { | 
|   684   // Makes the requests fail since all we want to check is that the redirection |   715   // Makes the requests fail since all we want to check is that the redirection | 
|   685   // is done properly. |   716   // is done properly. | 
|   686   MakeRequestFail("google.com"); |   717   MakeRequestFail make_request_fail("google.com"); | 
|   687  |   718  | 
|   688   // Verifies that requests to Google Search engine with the SafeSearch |   719   // Verifies that requests to Google Search engine with the SafeSearch | 
|   689   // enabled set the safe=active&ssui=on parameters at the end of the query. |   720   // enabled set the safe=active&ssui=on parameters at the end of the query. | 
|   690   TemplateURLService* service = TemplateURLServiceFactory::GetForProfile( |   721   TemplateURLService* service = TemplateURLServiceFactory::GetForProfile( | 
|   691       browser()->profile()); |   722       browser()->profile()); | 
|   692   ui_test_utils::WaitForTemplateURLServiceToLoad(service); |   723   ui_test_utils::WaitForTemplateURLServiceToLoad(service); | 
|   693  |   724  | 
|   694   // First check that nothing happens. |   725   // First check that nothing happens. | 
|   695   content::TestNavigationObserver no_safesearch_observer( |   726   content::TestNavigationObserver no_safesearch_observer( | 
|   696       content::NotificationService::AllSources()); |   727       content::NotificationService::AllSources()); | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   729   EXPECT_TRUE(model->CurrentMatch().destination_url.is_valid()); |   760   EXPECT_TRUE(model->CurrentMatch().destination_url.is_valid()); | 
|   730   web_contents = chrome::GetActiveWebContents(browser()); |   761   web_contents = chrome::GetActiveWebContents(browser()); | 
|   731   std::string expected_url("http://google.com/?"); |   762   std::string expected_url("http://google.com/?"); | 
|   732   expected_url += std::string(chrome::kSafeSearchSafeParameter) + "&" + |   763   expected_url += std::string(chrome::kSafeSearchSafeParameter) + "&" + | 
|   733                   chrome::kSafeSearchSsuiParameter; |   764                   chrome::kSafeSearchSsuiParameter; | 
|   734   GURL expected_with_parameters(expected_url); |   765   GURL expected_with_parameters(expected_url); | 
|   735   EXPECT_EQ(expected_with_parameters, web_contents->GetURL()); |   766   EXPECT_EQ(expected_with_parameters, web_contents->GetURL()); | 
|   736 } |   767 } | 
|   737  |   768  | 
|   738 IN_PROC_BROWSER_TEST_F(PolicyTest, ReplaceSearchTerms) { |   769 IN_PROC_BROWSER_TEST_F(PolicyTest, ReplaceSearchTerms) { | 
|   739   MakeRequestFail("search.example"); |   770   MakeRequestFail make_request_fail("search.example"); | 
|   740  |   771  | 
|   741   chrome::search::EnableInstantExtendedAPIForTesting(); |   772   chrome::search::EnableInstantExtendedAPIForTesting(); | 
|   742  |   773  | 
|   743   // Verifies that a default search is made using the provider configured via |   774   // Verifies that a default search is made using the provider configured via | 
|   744   // policy. Also checks that default search can be completely disabled. |   775   // policy. Also checks that default search can be completely disabled. | 
|   745   const string16 kKeyword(ASCIIToUTF16("testsearch")); |   776   const string16 kKeyword(ASCIIToUTF16("testsearch")); | 
|   746   const std::string kSearchURL("https://www.google.com/search?q={searchTerms}"); |   777   const std::string kSearchURL("https://www.google.com/search?q={searchTerms}"); | 
|   747   const std::string kAlternateURL0( |   778   const std::string kAlternateURL0( | 
|   748       "https://www.google.com/search#q={searchTerms}"); |   779       "https://www.google.com/search#q={searchTerms}"); | 
|   749   const std::string kAlternateURL1("https://www.google.com/#q={searchTerms}"); |   780   const std::string kAlternateURL1("https://www.google.com/#q={searchTerms}"); | 
| (...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1379   whitelist.Append(base::Value::CreateStringValue("sub.bbb.com")); |  1410   whitelist.Append(base::Value::CreateStringValue("sub.bbb.com")); | 
|  1380   whitelist.Append(base::Value::CreateStringValue("bbb.com/policy")); |  1411   whitelist.Append(base::Value::CreateStringValue("bbb.com/policy")); | 
|  1381   policies.Set(key::kURLWhitelist, POLICY_LEVEL_MANDATORY, |  1412   policies.Set(key::kURLWhitelist, POLICY_LEVEL_MANDATORY, | 
|  1382                POLICY_SCOPE_USER, whitelist.DeepCopy()); |  1413                POLICY_SCOPE_USER, whitelist.DeepCopy()); | 
|  1383   provider_.UpdateChromePolicy(policies); |  1414   provider_.UpdateChromePolicy(policies); | 
|  1384   FlushBlacklistPolicy(); |  1415   FlushBlacklistPolicy(); | 
|  1385   CheckCanOpenURL(browser(), kURLS[0]); |  1416   CheckCanOpenURL(browser(), kURLS[0]); | 
|  1386   CheckURLIsBlocked(browser(), kURLS[1]); |  1417   CheckURLIsBlocked(browser(), kURLS[1]); | 
|  1387   CheckCanOpenURL(browser(), kURLS[2]); |  1418   CheckCanOpenURL(browser(), kURLS[2]); | 
|  1388   CheckCanOpenURL(browser(), kURLS[3]); |  1419   CheckCanOpenURL(browser(), kURLS[3]); | 
 |  1420  | 
 |  1421   BrowserThread::PostTaskAndReply( | 
 |  1422       BrowserThread::IO, FROM_HERE, | 
 |  1423       base::Bind(UndoRedirectHostsToTestData, kURLS, arraysize(kURLS)), | 
 |  1424       MessageLoop::QuitClosure()); | 
 |  1425   content::RunMessageLoop(); | 
|  1389 } |  1426 } | 
|  1390  |  1427  | 
|  1391 // Flaky on Linux. http://crbug.com/155459 |  1428 // Flaky on Linux. http://crbug.com/155459 | 
|  1392 #if defined(OS_LINUX) |  1429 #if defined(OS_LINUX) | 
|  1393 #define MAYBE_DisableScreenshotsFeedback DISABLED_DisableScreenshotsFeedback |  1430 #define MAYBE_DisableScreenshotsFeedback DISABLED_DisableScreenshotsFeedback | 
|  1394 #else |  1431 #else | 
|  1395 #define MAYBE_DisableScreenshotsFeedback DisableScreenshotsFeedback |  1432 #define MAYBE_DisableScreenshotsFeedback DisableScreenshotsFeedback | 
|  1396 #endif |  1433 #endif | 
|  1397 IN_PROC_BROWSER_TEST_F(PolicyTest, MAYBE_DisableScreenshotsFeedback) { |  1434 IN_PROC_BROWSER_TEST_F(PolicyTest, MAYBE_DisableScreenshotsFeedback) { | 
|  1398   // Make sure current screenshot can be taken and displayed on feedback page. |  1435   // Make sure current screenshot can be taken and displayed on feedback page. | 
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1667   EXPECT_EQ(kExpectedLabel, text.substr(0, kExpectedLabel.size())); |  1704   EXPECT_EQ(kExpectedLabel, text.substr(0, kExpectedLabel.size())); | 
|  1668   // HomepageLocation has policy ID 1. |  1705   // HomepageLocation has policy ID 1. | 
|  1669   EXPECT_NE(std::string::npos, text.find("<br>1   ---")); |  1706   EXPECT_NE(std::string::npos, text.find("<br>1   ---")); | 
|  1670   // ShowHomeButton has policy ID 35. |  1707   // ShowHomeButton has policy ID 35. | 
|  1671   EXPECT_NE(std::string::npos, text.find("<br>35  ---")); |  1708   EXPECT_NE(std::string::npos, text.find("<br>35  ---")); | 
|  1672   // BookmarkBarEnabled has policy ID 82. |  1709   // BookmarkBarEnabled has policy ID 82. | 
|  1673   EXPECT_NE(std::string::npos, text.find("<br>82  ---")); |  1710   EXPECT_NE(std::string::npos, text.find("<br>82  ---")); | 
|  1674 } |  1711 } | 
|  1675  |  1712  | 
|  1676 }  // namespace policy |  1713 }  // namespace policy | 
| OLD | NEW |