OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <map> | 5 #include <map> |
6 #include <memory> | 6 #include <memory> |
7 #include <string> | 7 #include <string> |
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 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 GURL GetURLWithFragment(const GURL& url, base::StringPiece fragment) { | 163 GURL GetURLWithFragment(const GURL& url, base::StringPiece fragment) { |
164 GURL::Replacements replacements; | 164 GURL::Replacements replacements; |
165 replacements.SetRefStr(fragment); | 165 replacements.SetRefStr(fragment); |
166 return url.ReplaceComponents(replacements); | 166 return url.ReplaceComponents(replacements); |
167 } | 167 } |
168 | 168 |
169 } // namespace | 169 } // namespace |
170 | 170 |
171 namespace subresource_filter { | 171 namespace subresource_filter { |
172 | 172 |
173 using subresource_filter::testing::ScopedSubresourceFilterFeatureToggle; | 173 using subresource_filter::testing::ScopedSubresourceFilterConfigurator; |
174 using subresource_filter::testing::TestRulesetPublisher; | 174 using subresource_filter::testing::TestRulesetPublisher; |
175 using subresource_filter::testing::TestRulesetCreator; | 175 using subresource_filter::testing::TestRulesetCreator; |
176 using subresource_filter::testing::TestRulesetPair; | 176 using subresource_filter::testing::TestRulesetPair; |
177 using ActivationDecision = | 177 using ActivationDecision = |
178 ContentSubresourceFilterDriverFactory::ActivationDecision; | 178 ContentSubresourceFilterDriverFactory::ActivationDecision; |
179 | 179 |
180 // SubresourceFilterDisabledBrowserTest --------------------------------------- | 180 // SubresourceFilterDisabledBrowserTest --------------------------------------- |
181 | 181 |
182 class SubresourceFilterDisabledByDefaultBrowserTest | 182 class SubresourceFilterDisabledByDefaultBrowserTest |
183 : public InProcessBrowserTest { | 183 : public InProcessBrowserTest { |
(...skipping 13 matching lines...) Expand all Loading... |
197 // The RulesetService should not even be instantiated when the feature is | 197 // The RulesetService should not even be instantiated when the feature is |
198 // disabled, which should be the default state unless there is an override | 198 // disabled, which should be the default state unless there is an override |
199 // specified in the field trial configuration. | 199 // specified in the field trial configuration. |
200 IN_PROC_BROWSER_TEST_F(SubresourceFilterDisabledByDefaultBrowserTest, | 200 IN_PROC_BROWSER_TEST_F(SubresourceFilterDisabledByDefaultBrowserTest, |
201 RulesetServiceNotCreated) { | 201 RulesetServiceNotCreated) { |
202 EXPECT_FALSE(g_browser_process->subresource_filter_ruleset_service()); | 202 EXPECT_FALSE(g_browser_process->subresource_filter_ruleset_service()); |
203 } | 203 } |
204 | 204 |
205 // SubresourceFilterBrowserTest ----------------------------------------------- | 205 // SubresourceFilterBrowserTest ----------------------------------------------- |
206 | 206 |
207 class SubresourceFilterBrowserTestImpl : public InProcessBrowserTest { | 207 class SubresourceFilterBrowserTest : public InProcessBrowserTest { |
208 public: | 208 public: |
209 explicit SubresourceFilterBrowserTestImpl(bool measure_performance, | 209 SubresourceFilterBrowserTest() {} |
210 bool whitelist_site_on_reload) | 210 ~SubresourceFilterBrowserTest() override {} |
211 : measure_performance_(measure_performance), | |
212 whitelist_site_on_reload_(whitelist_site_on_reload) {} | |
213 | |
214 ~SubresourceFilterBrowserTestImpl() override {} | |
215 | 211 |
216 protected: | 212 protected: |
217 // It would be too late to enable the feature in SetUpOnMainThread(), as it is | |
218 // called after ChromeBrowserMainParts::PreBrowserStart(), which instantiates | |
219 // the RulesetService. | |
220 // | |
221 // On the other hand, setting up field trials in this method would be too | |
222 // early, as it is called before BrowserMain, which expects no FieldTrialList | |
223 // singleton to exist. There are no other hooks we could use either. | |
224 // | |
225 // As a workaround, enable the feature here, then enable the feature once | |
226 // again + set up the field trials later. | |
227 void SetUpCommandLine(base::CommandLine* command_line) override { | 213 void SetUpCommandLine(base::CommandLine* command_line) override { |
228 command_line->AppendSwitchASCII( | 214 command_line->AppendSwitchASCII( |
229 switches::kEnableFeatures, | 215 switches::kEnableFeatures, |
230 base::JoinString( | 216 base::JoinString( |
231 {kSafeBrowsingSubresourceFilter.name, "SafeBrowsingV4OnlyEnabled", | 217 {kSafeBrowsingSubresourceFilter.name, "SafeBrowsingV4OnlyEnabled", |
232 kSafeBrowsingSubresourceFilterExperimentalUI.name}, | 218 kSafeBrowsingSubresourceFilterExperimentalUI.name}, |
233 ",")); | 219 ",")); |
234 } | 220 } |
235 | 221 |
236 void SetUp() override { | 222 void SetUp() override { |
(...skipping 21 matching lines...) Expand all Loading... |
258 InProcessBrowserTest::TearDown(); | 244 InProcessBrowserTest::TearDown(); |
259 // Unregister test factories after InProcessBrowserTest::TearDown | 245 // Unregister test factories after InProcessBrowserTest::TearDown |
260 // (which destructs SafeBrowsingService). | 246 // (which destructs SafeBrowsingService). |
261 safe_browsing::V4GetHashProtocolManager::RegisterFactory(nullptr); | 247 safe_browsing::V4GetHashProtocolManager::RegisterFactory(nullptr); |
262 safe_browsing::V4Database::RegisterDatabaseFactoryForTest(nullptr); | 248 safe_browsing::V4Database::RegisterDatabaseFactoryForTest(nullptr); |
263 safe_browsing::V4Database::RegisterStoreFactoryForTest(nullptr); | 249 safe_browsing::V4Database::RegisterStoreFactoryForTest(nullptr); |
264 safe_browsing::SafeBrowsingService::RegisterFactory(nullptr); | 250 safe_browsing::SafeBrowsingService::RegisterFactory(nullptr); |
265 } | 251 } |
266 | 252 |
267 void SetUpOnMainThread() override { | 253 void SetUpOnMainThread() override { |
268 SetUpActivationFeature(); | |
269 base::FilePath test_data_dir; | 254 base::FilePath test_data_dir; |
270 PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir); | 255 PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir); |
271 embedded_test_server()->ServeFilesFromDirectory(test_data_dir); | 256 embedded_test_server()->ServeFilesFromDirectory(test_data_dir); |
272 host_resolver()->AddSimulatedFailure("host-with-dns-lookup-failure"); | 257 host_resolver()->AddSimulatedFailure("host-with-dns-lookup-failure"); |
273 host_resolver()->AddRule("*", "127.0.0.1"); | 258 host_resolver()->AddRule("*", "127.0.0.1"); |
274 content::SetupCrossSiteRedirector(embedded_test_server()); | 259 content::SetupCrossSiteRedirector(embedded_test_server()); |
275 ASSERT_TRUE(embedded_test_server()->Start()); | 260 ASSERT_TRUE(embedded_test_server()->Start()); |
276 } | 261 ResetConfigurationToEnableOnPhishingSites(); |
277 | |
278 virtual void SetUpActivationFeature() { | |
279 ToggleFeatures(base::MakeUnique<ScopedSubresourceFilterFeatureToggle>( | |
280 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | |
281 kActivationScopeActivationList, kActivationListPhishingInterstitial, | |
282 measure_performance_ ? "1" : "0", "" /* suppress_notifications */, | |
283 whitelist_site_on_reload_ ? "true" : "false")); | |
284 } | 262 } |
285 | 263 |
286 GURL GetTestUrl(const std::string& relative_url) { | 264 GURL GetTestUrl(const std::string& relative_url) { |
287 return embedded_test_server()->base_url().Resolve(relative_url); | 265 return embedded_test_server()->base_url().Resolve(relative_url); |
288 } | 266 } |
289 | 267 |
290 void MarkUrlAsMatchingListWithId( | 268 void MarkUrlAsMatchingListWithId( |
291 const GURL& bad_url, | 269 const GURL& bad_url, |
292 const safe_browsing::ListIdentifier& list_id, | 270 const safe_browsing::ListIdentifier& list_id, |
293 safe_browsing::ThreatPatternType threat_pattern_type) { | 271 safe_browsing::ThreatPatternType threat_pattern_type) { |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 test_ruleset_publisher_.SetRuleset(test_ruleset_pair.unindexed)); | 349 test_ruleset_publisher_.SetRuleset(test_ruleset_pair.unindexed)); |
372 } | 350 } |
373 | 351 |
374 void SetRulesetWithRules(const std::vector<proto::UrlRule>& rules) { | 352 void SetRulesetWithRules(const std::vector<proto::UrlRule>& rules) { |
375 TestRulesetPair test_ruleset_pair; | 353 TestRulesetPair test_ruleset_pair; |
376 ruleset_creator_.CreateRulesetWithRules(rules, &test_ruleset_pair); | 354 ruleset_creator_.CreateRulesetWithRules(rules, &test_ruleset_pair); |
377 ASSERT_NO_FATAL_FAILURE( | 355 ASSERT_NO_FATAL_FAILURE( |
378 test_ruleset_publisher_.SetRuleset(test_ruleset_pair.unindexed)); | 356 test_ruleset_publisher_.SetRuleset(test_ruleset_pair.unindexed)); |
379 } | 357 } |
380 | 358 |
381 void ToggleFeatures( | 359 void ResetConfiguration(Configuration config) { |
382 std::unique_ptr<ScopedSubresourceFilterFeatureToggle> features) { | 360 scoped_configuration_.ResetConfiguration(std::move(config)); |
383 scoped_feature_toggle_ = std::move(features); | 361 } |
| 362 |
| 363 void ResetConfigurationToEnableOnPhishingSites( |
| 364 bool measure_performance = false, |
| 365 bool whitelist_site_on_reload = false) { |
| 366 Configuration config( |
| 367 subresource_filter::ActivationLevel::ENABLED, |
| 368 subresource_filter::ActivationScope::ACTIVATION_LIST, |
| 369 subresource_filter::ActivationList::PHISHING_INTERSTITIAL); |
| 370 config.performance_measurement_rate = measure_performance ? 1.0 : 0.0; |
| 371 config.should_whitelist_site_on_reload = whitelist_site_on_reload; |
| 372 ResetConfiguration(std::move(config)); |
384 } | 373 } |
385 | 374 |
386 private: | 375 private: |
387 TestRulesetCreator ruleset_creator_; | 376 TestRulesetCreator ruleset_creator_; |
388 | 377 ScopedSubresourceFilterConfigurator scoped_configuration_; |
389 std::unique_ptr<ScopedSubresourceFilterFeatureToggle> scoped_feature_toggle_; | |
390 TestRulesetPublisher test_ruleset_publisher_; | 378 TestRulesetPublisher test_ruleset_publisher_; |
391 const bool measure_performance_; | |
392 const bool whitelist_site_on_reload_; | |
393 | 379 |
394 std::unique_ptr<safe_browsing::TestSafeBrowsingServiceFactory> sb_factory_; | 380 std::unique_ptr<safe_browsing::TestSafeBrowsingServiceFactory> sb_factory_; |
395 // Owned by the V4Database. | 381 // Owned by the V4Database. |
396 safe_browsing::TestV4DatabaseFactory* v4_db_factory_; | 382 safe_browsing::TestV4DatabaseFactory* v4_db_factory_; |
397 // Owned by the V4GetHashProtocolManager. | 383 // Owned by the V4GetHashProtocolManager. |
398 safe_browsing::TestV4GetHashProtocolManagerFactory* v4_get_hash_factory_; | 384 safe_browsing::TestV4GetHashProtocolManagerFactory* v4_get_hash_factory_; |
399 | 385 |
400 DISALLOW_COPY_AND_ASSIGN(SubresourceFilterBrowserTestImpl); | 386 DISALLOW_COPY_AND_ASSIGN(SubresourceFilterBrowserTest); |
401 }; | |
402 | |
403 class SubresourceFilterBrowserTest : public SubresourceFilterBrowserTestImpl { | |
404 public: | |
405 SubresourceFilterBrowserTest() | |
406 : SubresourceFilterBrowserTestImpl(false, false) {} | |
407 }; | |
408 | |
409 // TODO(pkalinnikov): It should be possible to have only one fixture, i.e., | |
410 // SubresourceFilterBrowserTest, unsetting |measure_performance| by default, and | |
411 // providing a method to switch it on. However, the current implementation of | |
412 // ScopedSubresourceFilterFeatureToggle in use pollutes the global | |
413 // FieldTrialList in such a way that variation parameters can not be reassigned. | |
414 class SubresourceFilterWithPerformanceMeasurementBrowserTest | |
415 : public SubresourceFilterBrowserTestImpl { | |
416 public: | |
417 SubresourceFilterWithPerformanceMeasurementBrowserTest() | |
418 : SubresourceFilterBrowserTestImpl(true, false) {} | |
419 }; | |
420 | |
421 class SubresourceFilterWhitelistSiteOnReloadBrowserTest | |
422 : public SubresourceFilterBrowserTestImpl { | |
423 public: | |
424 SubresourceFilterWhitelistSiteOnReloadBrowserTest() | |
425 : SubresourceFilterBrowserTestImpl(false, true) {} | |
426 }; | 387 }; |
427 | 388 |
428 enum WebSocketCreationPolicy { | 389 enum WebSocketCreationPolicy { |
429 IN_MAIN_FRAME, | 390 IN_MAIN_FRAME, |
430 IN_WORKER, | 391 IN_WORKER, |
431 }; | 392 }; |
432 class SubresourceFilterWebSocketBrowserTest | 393 class SubresourceFilterWebSocketBrowserTest |
433 : public SubresourceFilterBrowserTestImpl, | 394 : public SubresourceFilterBrowserTest, |
434 public ::testing::WithParamInterface<WebSocketCreationPolicy> { | 395 public ::testing::WithParamInterface<WebSocketCreationPolicy> { |
435 public: | 396 public: |
436 SubresourceFilterWebSocketBrowserTest() | 397 SubresourceFilterWebSocketBrowserTest() {} |
437 : SubresourceFilterBrowserTestImpl(false, false) {} | |
438 | 398 |
439 void SetUpOnMainThread() override { | 399 void SetUpOnMainThread() override { |
440 SubresourceFilterBrowserTestImpl::SetUpOnMainThread(); | 400 SubresourceFilterBrowserTest::SetUpOnMainThread(); |
441 websocket_test_server_ = base::MakeUnique<net::SpawnedTestServer>( | 401 websocket_test_server_ = base::MakeUnique<net::SpawnedTestServer>( |
442 net::SpawnedTestServer::TYPE_WS, net::SpawnedTestServer::kLocalhost, | 402 net::SpawnedTestServer::TYPE_WS, net::SpawnedTestServer::kLocalhost, |
443 net::GetWebSocketTestDataDirectory()); | 403 net::GetWebSocketTestDataDirectory()); |
444 ASSERT_TRUE(websocket_test_server_->Start()); | 404 ASSERT_TRUE(websocket_test_server_->Start()); |
445 } | 405 } |
446 | 406 |
447 net::SpawnedTestServer* websocket_test_server() { | 407 net::SpawnedTestServer* websocket_test_server() { |
448 return websocket_test_server_.get(); | 408 return websocket_test_server_.get(); |
449 } | 409 } |
450 | 410 |
(...skipping 10 matching lines...) Expand all Loading... |
461 browser()->tab_strip_model()->GetActiveWebContents(), | 421 browser()->tab_strip_model()->GetActiveWebContents(), |
462 base::StringPrintf("connectWebSocket('%s');", url.spec().c_str()), | 422 base::StringPrintf("connectWebSocket('%s');", url.spec().c_str()), |
463 &websocket_connection_succeeded)); | 423 &websocket_connection_succeeded)); |
464 EXPECT_EQ(expect_connection_success, websocket_connection_succeeded); | 424 EXPECT_EQ(expect_connection_success, websocket_connection_succeeded); |
465 } | 425 } |
466 | 426 |
467 private: | 427 private: |
468 std::unique_ptr<net::SpawnedTestServer> websocket_test_server_; | 428 std::unique_ptr<net::SpawnedTestServer> websocket_test_server_; |
469 }; | 429 }; |
470 | 430 |
471 #if defined(GOOGLE_CHROME_BUILD) | |
472 class SubresourceFilterListBrowserTest | |
473 : public SubresourceFilterBrowserTestImpl { | |
474 public: | |
475 SubresourceFilterListBrowserTest() | |
476 : SubresourceFilterBrowserTestImpl(false, false) {} | |
477 | |
478 void SetUpActivationFeature() override { | |
479 ToggleFeatures(base::MakeUnique<ScopedSubresourceFilterFeatureToggle>( | |
480 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | |
481 kActivationScopeActivationList, kActivationListSubresourceFilter, "0", | |
482 "" /* suppress_notifications */, "false")); | |
483 } | |
484 }; | |
485 #endif | |
486 | 431 |
487 // Tests ----------------------------------------------------------------------- | 432 // Tests ----------------------------------------------------------------------- |
488 | 433 |
489 IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, MainFrameActivation) { | 434 IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, MainFrameActivation) { |
490 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); | 435 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); |
491 ConfigureAsPhishingURL(url); | 436 ConfigureAsPhishingURL(url); |
492 ASSERT_NO_FATAL_FAILURE(SetRulesetToDisallowURLsWithPathSuffix( | 437 ASSERT_NO_FATAL_FAILURE(SetRulesetToDisallowURLsWithPathSuffix( |
493 "suffix-that-does-not-match-anything")); | 438 "suffix-that-does-not-match-anything")); |
494 ui_test_utils::NavigateToURL(browser(), url); | 439 ui_test_utils::NavigateToURL(browser(), url); |
495 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 440 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
496 | 441 |
497 ASSERT_NO_FATAL_FAILURE( | 442 ASSERT_NO_FATAL_FAILURE( |
498 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); | 443 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); |
499 ui_test_utils::NavigateToURL(browser(), url); | 444 ui_test_utils::NavigateToURL(browser(), url); |
500 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 445 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
501 | 446 |
502 // The main frame document should never be filtered. | 447 // The main frame document should never be filtered. |
503 SetRulesetToDisallowURLsWithPathSuffix("frame_with_included_script.html"); | 448 SetRulesetToDisallowURLsWithPathSuffix("frame_with_included_script.html"); |
504 ui_test_utils::NavigateToURL(browser(), url); | 449 ui_test_utils::NavigateToURL(browser(), url); |
505 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 450 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
506 } | 451 } |
507 | 452 |
508 #if defined(GOOGLE_CHROME_BUILD) | 453 #if defined(GOOGLE_CHROME_BUILD) |
509 IN_PROC_BROWSER_TEST_F(SubresourceFilterListBrowserTest, MainFrameActivation) { | 454 IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, |
| 455 MainFrameActivation_SubresourceFilterList) { |
510 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); | 456 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); |
511 ConfigureAsSubresourceFilterOnlyURL(url); | 457 ConfigureAsSubresourceFilterOnlyURL(url); |
512 ASSERT_NO_FATAL_FAILURE(SetRulesetToDisallowURLsWithPathSuffix( | 458 ASSERT_NO_FATAL_FAILURE(SetRulesetToDisallowURLsWithPathSuffix( |
513 "suffix-that-does-not-match-anything")); | 459 "suffix-that-does-not-match-anything")); |
| 460 |
| 461 Configuration config(subresource_filter::ActivationLevel::ENABLED, |
| 462 subresource_filter::ActivationScope::ACTIVATION_LIST, |
| 463 subresource_filter::ActivationList::SUBRESOURCE_FILTER); |
| 464 ResetConfiguration(std::move(config)); |
| 465 |
514 ui_test_utils::NavigateToURL(browser(), url); | 466 ui_test_utils::NavigateToURL(browser(), url); |
515 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 467 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
516 | 468 |
517 ASSERT_NO_FATAL_FAILURE( | 469 ASSERT_NO_FATAL_FAILURE( |
518 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); | 470 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); |
519 ui_test_utils::NavigateToURL(browser(), url); | 471 ui_test_utils::NavigateToURL(browser(), url); |
520 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 472 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
521 | 473 |
522 // The main frame document should never be filtered. | 474 // The main frame document should never be filtered. |
523 SetRulesetToDisallowURLsWithPathSuffix("frame_with_included_script.html"); | 475 SetRulesetToDisallowURLsWithPathSuffix("frame_with_included_script.html"); |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1098 | 1050 |
1099 // Force a navigation to another page, which flushes page load metrics for the | 1051 // Force a navigation to another page, which flushes page load metrics for the |
1100 // previous page load. | 1052 // previous page load. |
1101 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); | 1053 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); |
1102 | 1054 |
1103 // Make sure that pages that have subresource filtered in child frames are | 1055 // Make sure that pages that have subresource filtered in child frames are |
1104 // also counted. | 1056 // also counted. |
1105 tester.ExpectTotalCount(internal::kHistogramSubresourceFilterCount, 1); | 1057 tester.ExpectTotalCount(internal::kHistogramSubresourceFilterCount, 1); |
1106 } | 1058 } |
1107 | 1059 |
1108 IN_PROC_BROWSER_TEST_F(SubresourceFilterWithPerformanceMeasurementBrowserTest, | 1060 IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, |
1109 ExpectHistogramsAreRecorded) { | 1061 ExpectPerformanceHistogramsAreRecorded) { |
1110 ASSERT_NO_FATAL_FAILURE( | 1062 ASSERT_NO_FATAL_FAILURE( |
1111 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); | 1063 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); |
| 1064 ResetConfigurationToEnableOnPhishingSites( |
| 1065 true /* measure_performance */, false /* whitelist_site_on_reload */); |
1112 const GURL url = GetTestUrl(kTestFrameSetPath); | 1066 const GURL url = GetTestUrl(kTestFrameSetPath); |
1113 ConfigureAsPhishingURL(url); | 1067 ConfigureAsPhishingURL(url); |
1114 | 1068 |
1115 base::HistogramTester tester; | 1069 base::HistogramTester tester; |
1116 ui_test_utils::NavigateToURL(browser(), url); | 1070 ui_test_utils::NavigateToURL(browser(), url); |
1117 | 1071 |
1118 ExpectHistogramsAreRecordedForTestFrameSet( | 1072 ExpectHistogramsAreRecordedForTestFrameSet( |
1119 tester, true /* expect_performance_measurements */); | 1073 tester, true /* expect_performance_measurements */); |
1120 } | 1074 } |
1121 | 1075 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1185 internal::kHistogramSubresourceFilterActivationDecision, | 1139 internal::kHistogramSubresourceFilterActivationDecision, |
1186 static_cast<int>(ActivationDecision::ACTIVATED), 2); | 1140 static_cast<int>(ActivationDecision::ACTIVATED), 2); |
1187 | 1141 |
1188 tester.ExpectTotalCount( | 1142 tester.ExpectTotalCount( |
1189 internal::kHistogramSubresourceFilterActivationDecisionReload, 1); | 1143 internal::kHistogramSubresourceFilterActivationDecisionReload, 1); |
1190 tester.ExpectBucketCount( | 1144 tester.ExpectBucketCount( |
1191 internal::kHistogramSubresourceFilterActivationDecisionReload, | 1145 internal::kHistogramSubresourceFilterActivationDecisionReload, |
1192 static_cast<int>(ActivationDecision::ACTIVATED), 1); | 1146 static_cast<int>(ActivationDecision::ACTIVATED), 1); |
1193 } | 1147 } |
1194 | 1148 |
1195 IN_PROC_BROWSER_TEST_F(SubresourceFilterWhitelistSiteOnReloadBrowserTest, | 1149 IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, |
1196 ActivationDisabledOnReload) { | 1150 WhiteliseSiteOnReload_ActivationDisabledOnReload) { |
1197 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); | 1151 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); |
1198 ConfigureAsPhishingURL(url); | 1152 ConfigureAsPhishingURL(url); |
1199 ASSERT_NO_FATAL_FAILURE( | 1153 ASSERT_NO_FATAL_FAILURE( |
1200 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); | 1154 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); |
1201 | 1155 ResetConfigurationToEnableOnPhishingSites( |
| 1156 false /* measure_performance */, true /* whitelist_site_on_reload */); |
1202 base::HistogramTester tester; | 1157 base::HistogramTester tester; |
1203 ui_test_utils::NavigateToURL(browser(), url); | 1158 ui_test_utils::NavigateToURL(browser(), url); |
1204 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 1159 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
1205 | 1160 |
1206 content::TestNavigationObserver observer( | 1161 content::TestNavigationObserver observer( |
1207 browser()->tab_strip_model()->GetActiveWebContents(), | 1162 browser()->tab_strip_model()->GetActiveWebContents(), |
1208 content::MessageLoopRunner::QuitMode::DEFERRED); | 1163 content::MessageLoopRunner::QuitMode::DEFERRED); |
1209 chrome::Reload(browser(), WindowOpenDisposition::CURRENT_TAB); | 1164 chrome::Reload(browser(), WindowOpenDisposition::CURRENT_TAB); |
1210 observer.Wait(); | 1165 observer.Wait(); |
1211 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 1166 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
1212 | 1167 |
1213 tester.ExpectTotalCount( | 1168 tester.ExpectTotalCount( |
1214 internal::kHistogramSubresourceFilterActivationDecision, 2); | 1169 internal::kHistogramSubresourceFilterActivationDecision, 2); |
1215 tester.ExpectBucketCount( | 1170 tester.ExpectBucketCount( |
1216 internal::kHistogramSubresourceFilterActivationDecision, | 1171 internal::kHistogramSubresourceFilterActivationDecision, |
1217 static_cast<int>(ActivationDecision::ACTIVATED), 1); | 1172 static_cast<int>(ActivationDecision::ACTIVATED), 1); |
1218 tester.ExpectBucketCount( | 1173 tester.ExpectBucketCount( |
1219 internal::kHistogramSubresourceFilterActivationDecision, | 1174 internal::kHistogramSubresourceFilterActivationDecision, |
1220 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); | 1175 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); |
1221 | 1176 |
1222 tester.ExpectTotalCount( | 1177 tester.ExpectTotalCount( |
1223 internal::kHistogramSubresourceFilterActivationDecisionReload, 1); | 1178 internal::kHistogramSubresourceFilterActivationDecisionReload, 1); |
1224 tester.ExpectBucketCount( | 1179 tester.ExpectBucketCount( |
1225 internal::kHistogramSubresourceFilterActivationDecisionReload, | 1180 internal::kHistogramSubresourceFilterActivationDecisionReload, |
1226 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); | 1181 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); |
1227 } | 1182 } |
1228 | 1183 |
1229 IN_PROC_BROWSER_TEST_F(SubresourceFilterWhitelistSiteOnReloadBrowserTest, | 1184 IN_PROC_BROWSER_TEST_F( |
1230 ActivationDisabledOnReloadFromScript) { | 1185 SubresourceFilterBrowserTest, |
| 1186 WhiteliseSiteOnReload_ActivationDisabledOnReloadFromScript) { |
1231 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); | 1187 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); |
1232 ConfigureAsPhishingURL(url); | 1188 ConfigureAsPhishingURL(url); |
1233 ASSERT_NO_FATAL_FAILURE( | 1189 ASSERT_NO_FATAL_FAILURE( |
1234 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); | 1190 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); |
1235 | 1191 ResetConfigurationToEnableOnPhishingSites( |
| 1192 false /* measure_performance */, true /* whitelist_site_on_reload */); |
1236 base::HistogramTester tester; | 1193 base::HistogramTester tester; |
1237 ui_test_utils::NavigateToURL(browser(), url); | 1194 ui_test_utils::NavigateToURL(browser(), url); |
1238 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 1195 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
1239 | 1196 |
1240 content::TestNavigationObserver observer( | 1197 content::TestNavigationObserver observer( |
1241 browser()->tab_strip_model()->GetActiveWebContents(), | 1198 browser()->tab_strip_model()->GetActiveWebContents(), |
1242 content::MessageLoopRunner::QuitMode::DEFERRED); | 1199 content::MessageLoopRunner::QuitMode::DEFERRED); |
1243 ASSERT_TRUE(content::ExecuteScript( | 1200 ASSERT_TRUE(content::ExecuteScript( |
1244 browser()->tab_strip_model()->GetActiveWebContents(), | 1201 browser()->tab_strip_model()->GetActiveWebContents(), |
1245 "location.reload();")); | 1202 "location.reload();")); |
1246 observer.Wait(); | 1203 observer.Wait(); |
1247 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 1204 EXPECT_TRUE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
1248 | 1205 |
1249 tester.ExpectTotalCount( | 1206 tester.ExpectTotalCount( |
1250 internal::kHistogramSubresourceFilterActivationDecision, 2); | 1207 internal::kHistogramSubresourceFilterActivationDecision, 2); |
1251 tester.ExpectBucketCount( | 1208 tester.ExpectBucketCount( |
1252 internal::kHistogramSubresourceFilterActivationDecision, | 1209 internal::kHistogramSubresourceFilterActivationDecision, |
1253 static_cast<int>(ActivationDecision::ACTIVATED), 1); | 1210 static_cast<int>(ActivationDecision::ACTIVATED), 1); |
1254 tester.ExpectBucketCount( | 1211 tester.ExpectBucketCount( |
1255 internal::kHistogramSubresourceFilterActivationDecision, | 1212 internal::kHistogramSubresourceFilterActivationDecision, |
1256 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); | 1213 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); |
1257 | 1214 |
1258 tester.ExpectTotalCount( | 1215 tester.ExpectTotalCount( |
1259 internal::kHistogramSubresourceFilterActivationDecisionReload, 1); | 1216 internal::kHistogramSubresourceFilterActivationDecisionReload, 1); |
1260 tester.ExpectBucketCount( | 1217 tester.ExpectBucketCount( |
1261 internal::kHistogramSubresourceFilterActivationDecisionReload, | 1218 internal::kHistogramSubresourceFilterActivationDecisionReload, |
1262 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); | 1219 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); |
1263 } | 1220 } |
1264 | 1221 |
1265 IN_PROC_BROWSER_TEST_F(SubresourceFilterWhitelistSiteOnReloadBrowserTest, | 1222 IN_PROC_BROWSER_TEST_F( |
1266 ActivationDisabledOnNavigationToSameURL) { | 1223 SubresourceFilterBrowserTest, |
| 1224 WhiteliseSiteOnReload_ActivationDisabledOnNavigationToSameURL) { |
1267 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); | 1225 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); |
1268 ConfigureAsPhishingURL(url); | 1226 ConfigureAsPhishingURL(url); |
1269 ASSERT_NO_FATAL_FAILURE( | 1227 ASSERT_NO_FATAL_FAILURE( |
1270 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); | 1228 SetRulesetToDisallowURLsWithPathSuffix("included_script.js")); |
1271 | 1229 ResetConfigurationToEnableOnPhishingSites( |
| 1230 false /* measure_performance */, true /* whitelist_site_on_reload */); |
1272 base::HistogramTester tester; | 1231 base::HistogramTester tester; |
1273 ui_test_utils::NavigateToURL(browser(), url); | 1232 ui_test_utils::NavigateToURL(browser(), url); |
1274 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); | 1233 EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
1275 | 1234 |
1276 content::TestNavigationObserver observer( | 1235 content::TestNavigationObserver observer( |
1277 browser()->tab_strip_model()->GetActiveWebContents(), | 1236 browser()->tab_strip_model()->GetActiveWebContents(), |
1278 content::MessageLoopRunner::QuitMode::DEFERRED); | 1237 content::MessageLoopRunner::QuitMode::DEFERRED); |
1279 std::string nav_frame_script = "location.href = '" + url.spec() + "';"; | 1238 std::string nav_frame_script = "location.href = '" + url.spec() + "';"; |
1280 ASSERT_TRUE(content::ExecuteScript( | 1239 ASSERT_TRUE(content::ExecuteScript( |
1281 browser()->tab_strip_model()->GetActiveWebContents(), nav_frame_script)); | 1240 browser()->tab_strip_model()->GetActiveWebContents(), nav_frame_script)); |
(...skipping 10 matching lines...) Expand all Loading... |
1292 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); | 1251 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); |
1293 | 1252 |
1294 tester.ExpectTotalCount( | 1253 tester.ExpectTotalCount( |
1295 internal::kHistogramSubresourceFilterActivationDecisionReload, 1); | 1254 internal::kHistogramSubresourceFilterActivationDecisionReload, 1); |
1296 tester.ExpectBucketCount( | 1255 tester.ExpectBucketCount( |
1297 internal::kHistogramSubresourceFilterActivationDecisionReload, | 1256 internal::kHistogramSubresourceFilterActivationDecisionReload, |
1298 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); | 1257 static_cast<int>(ActivationDecision::URL_WHITELISTED), 1); |
1299 } | 1258 } |
1300 | 1259 |
1301 #if defined(GOOGLE_CHROME_BUILD) | 1260 #if defined(GOOGLE_CHROME_BUILD) |
1302 // This test is only enabled when GOOGLE_CHROME_BUILD is true because the store | 1261 // These tests are only enabled when GOOGLE_CHROME_BUILD is true because the |
1303 // that this test uses is only populated on GOOGLE_CHROME_BUILD builds. | 1262 // store that this test uses is only populated on GOOGLE_CHROME_BUILD builds. |
1304 IN_PROC_BROWSER_TEST_F( | 1263 IN_PROC_BROWSER_TEST_F( |
1305 SubresourceFilterBrowserTest, | 1264 SubresourceFilterBrowserTest, |
1306 ExpectRedirectPatternHistogramsAreRecordedForSubresourceFilterOnlyMatch) { | 1265 ExpectRedirectPatternHistogramsAreRecordedForSubresourceFilterOnlyMatch) { |
1307 ASSERT_NO_FATAL_FAILURE(SetRulesetToDisallowURLsWithPathSuffix( | 1266 ASSERT_NO_FATAL_FAILURE(SetRulesetToDisallowURLsWithPathSuffix( |
1308 "suffix-that-does-not-match-anything")); | 1267 "suffix-that-does-not-match-anything")); |
1309 | 1268 |
1310 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); | 1269 GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html")); |
1311 ConfigureAsSubresourceFilterOnlyURL(url); | 1270 ConfigureAsSubresourceFilterOnlyURL(url); |
1312 | 1271 |
1313 base::HistogramTester tester; | 1272 base::HistogramTester tester; |
(...skipping 27 matching lines...) Expand all Loading... |
1341 std::string(kSubresourceFilterOnlySuffix)), | 1300 std::string(kSubresourceFilterOnlySuffix)), |
1342 ::testing::IsEmpty()); | 1301 ::testing::IsEmpty()); |
1343 | 1302 |
1344 EXPECT_THAT(tester.GetAllSamples(std::string(kNavigationChainSize) + | 1303 EXPECT_THAT(tester.GetAllSamples(std::string(kNavigationChainSize) + |
1345 std::string(kSubresourceFilterOnlySuffix)), | 1304 std::string(kSubresourceFilterOnlySuffix)), |
1346 ::testing::IsEmpty()); | 1305 ::testing::IsEmpty()); |
1347 } | 1306 } |
1348 #endif | 1307 #endif |
1349 | 1308 |
1350 } // namespace subresource_filter | 1309 } // namespace subresource_filter |
OLD | NEW |