| 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 "components/subresource_filter/content/browser/content_subresource_filt
er_driver_factory.h" | 5 #include "components/subresource_filter/content/browser/content_subresource_filt
er_driver_factory.h" |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
| 10 #include "base/test/histogram_tester.h" | 10 #include "base/test/histogram_tester.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 namespace subresource_filter { | 27 namespace subresource_filter { |
| 28 | 28 |
| 29 using ActivationDecision = | 29 using ActivationDecision = |
| 30 ContentSubresourceFilterDriverFactory::ActivationDecision; | 30 ContentSubresourceFilterDriverFactory::ActivationDecision; |
| 31 | 31 |
| 32 namespace { | 32 namespace { |
| 33 | 33 |
| 34 const char kExampleUrlWithParams[] = "https://example.com/soceng?q=engsoc"; | 34 const char kExampleUrlWithParams[] = "https://example.com/soceng?q=engsoc"; |
| 35 const char kExampleUrl[] = "https://example.com"; | 35 const char kExampleUrl[] = "https://example.com"; |
| 36 const char kExampleLoginUrl[] = "https://example.com/login"; | 36 const char kExampleLoginUrl[] = "https://example.com/login"; |
| 37 const char kMatchesPatternHistogramName[] = | |
| 38 "SubresourceFilter.PageLoad.RedirectChainMatchPattern"; | |
| 39 const char kNavigationChainSize[] = | |
| 40 "SubresourceFilter.PageLoad.RedirectChainLength"; | |
| 41 const char kUrlA[] = "https://example_a.com"; | 37 const char kUrlA[] = "https://example_a.com"; |
| 42 const char kUrlB[] = "https://example_b.com"; | 38 const char kUrlB[] = "https://example_b.com"; |
| 43 const char kUrlC[] = "https://example_c.com"; | 39 const char kUrlC[] = "https://example_c.com"; |
| 44 const char kUrlD[] = "https://example_d.com"; | 40 const char kUrlD[] = "https://example_d.com"; |
| 45 const char kSubframeName[] = "Child"; | 41 const char kSubframeName[] = "Child"; |
| 46 | 42 |
| 43 const char kMatchesPatternHistogramName[] = |
| 44 "SubresourceFilter.PageLoad.RedirectChainMatchPattern"; |
| 45 const char kNavigationChainSize[] = |
| 46 "SubresourceFilter.PageLoad.RedirectChainLength"; |
| 47 |
| 48 #if defined(GOOGLE_CHROME_BUILD) |
| 49 const char kSubresourceFilterSuffix[] = ".SubresourceFilter"; |
| 50 #endif |
| 51 |
| 47 // Human readable representation of expected redirect chain match patterns. | 52 // Human readable representation of expected redirect chain match patterns. |
| 48 // The explanations for the buckets given for the following redirect chain: | 53 // The explanations for the buckets given for the following redirect chain: |
| 49 // A->B->C->D, where A is initial URL and D is a final URL. | 54 // A->B->C->D, where A is initial URL and D is a final URL. |
| 50 enum RedirectChainMatchPattern { | 55 enum RedirectChainMatchPattern { |
| 51 EMPTY, // No histograms were recorded. | 56 EMPTY, // No histograms were recorded. |
| 52 F0M0L1, // D is a Safe Browsing match. | 57 F0M0L1, // D is a Safe Browsing match. |
| 53 F0M1L0, // B or C, or both are Safe Browsing matches. | 58 F0M1L0, // B or C, or both are Safe Browsing matches. |
| 54 F0M1L1, // B or C, or both and D are Safe Browsing matches. | 59 F0M1L1, // B or C, or both and D are Safe Browsing matches. |
| 55 F1M0L0, // A is Safe Browsing match | 60 F1M0L0, // A is Safe Browsing match |
| 56 F1M0L1, // A and D are Safe Browsing matches. | 61 F1M0L1, // A and D are Safe Browsing matches. |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 } | 228 } |
| 224 | 229 |
| 225 void BlacklistURLWithRedirectsNavigateAndCommit( | 230 void BlacklistURLWithRedirectsNavigateAndCommit( |
| 226 const std::vector<bool>& blacklisted_urls, | 231 const std::vector<bool>& blacklisted_urls, |
| 227 const std::vector<GURL>& navigation_chain, | 232 const std::vector<GURL>& navigation_chain, |
| 228 safe_browsing::SBThreatType threat_type, | 233 safe_browsing::SBThreatType threat_type, |
| 229 safe_browsing::ThreatPatternType threat_type_metadata, | 234 safe_browsing::ThreatPatternType threat_type_metadata, |
| 230 const content::Referrer& referrer, | 235 const content::Referrer& referrer, |
| 231 ui::PageTransition transition, | 236 ui::PageTransition transition, |
| 232 RedirectChainMatchPattern expected_pattern, | 237 RedirectChainMatchPattern expected_pattern, |
| 238 const std::string& histogram_suffix, |
| 233 ActivationDecision expected_activation_decision) { | 239 ActivationDecision expected_activation_decision) { |
| 234 const bool expected_activation = | 240 const bool expected_activation = |
| 235 expected_activation_decision == ActivationDecision::ACTIVATED; | 241 expected_activation_decision == ActivationDecision::ACTIVATED; |
| 236 base::HistogramTester tester; | 242 base::HistogramTester tester; |
| 237 EXPECT_CALL(*client(), ToggleNotificationVisibility(false)).Times(1); | 243 EXPECT_CALL(*client(), ToggleNotificationVisibility(false)).Times(1); |
| 238 | 244 |
| 239 std::unique_ptr<content::NavigationSimulator> navigation_simulator = | 245 std::unique_ptr<content::NavigationSimulator> navigation_simulator = |
| 240 content::NavigationSimulator::CreateRendererInitiated( | 246 content::NavigationSimulator::CreateRendererInitiated( |
| 241 navigation_chain.front(), main_rfh()); | 247 navigation_chain.front(), main_rfh()); |
| 242 navigation_simulator->SetReferrer(referrer); | 248 navigation_simulator->SetReferrer(referrer); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 263 ExpectActivationSignalForFrame(main_rfh(), expected_activation); | 269 ExpectActivationSignalForFrame(main_rfh(), expected_activation); |
| 264 EXPECT_EQ(expected_activation_decision, | 270 EXPECT_EQ(expected_activation_decision, |
| 265 factory()->GetActivationDecisionForLastCommittedPageLoad()); | 271 factory()->GetActivationDecisionForLastCommittedPageLoad()); |
| 266 | 272 |
| 267 // Re-create a subframe now that the frame has navigated. | 273 // Re-create a subframe now that the frame has navigated. |
| 268 content::RenderFrameHostTester* rfh_tester = | 274 content::RenderFrameHostTester* rfh_tester = |
| 269 content::RenderFrameHostTester::For(main_rfh()); | 275 content::RenderFrameHostTester::For(main_rfh()); |
| 270 rfh_tester->AppendChild(kSubframeName); | 276 rfh_tester->AppendChild(kSubframeName); |
| 271 | 277 |
| 272 if (expected_pattern != EMPTY) { | 278 if (expected_pattern != EMPTY) { |
| 273 EXPECT_THAT(tester.GetAllSamples(kMatchesPatternHistogramName), | |
| 274 ::testing::ElementsAre(base::Bucket(expected_pattern, 1))); | |
| 275 EXPECT_THAT( | 279 EXPECT_THAT( |
| 276 tester.GetAllSamples(kNavigationChainSize), | 280 tester.GetAllSamples(kMatchesPatternHistogramName + histogram_suffix), |
| 281 ::testing::ElementsAre(base::Bucket(expected_pattern, 1))); |
| 282 EXPECT_THAT( |
| 283 tester.GetAllSamples(kNavigationChainSize + histogram_suffix), |
| 277 ::testing::ElementsAre(base::Bucket(navigation_chain.size(), 1))); | 284 ::testing::ElementsAre(base::Bucket(navigation_chain.size(), 1))); |
| 278 | 285 |
| 279 } else { | 286 } else { |
| 280 EXPECT_THAT(tester.GetAllSamples(kMatchesPatternHistogramName), | 287 EXPECT_THAT( |
| 281 ::testing::IsEmpty()); | 288 tester.GetAllSamples(kMatchesPatternHistogramName + histogram_suffix), |
| 282 EXPECT_THAT(tester.GetAllSamples(kNavigationChainSize), | 289 ::testing::IsEmpty()); |
| 290 EXPECT_THAT(tester.GetAllSamples(kNavigationChainSize + histogram_suffix), |
| 283 ::testing::IsEmpty()); | 291 ::testing::IsEmpty()); |
| 284 } | 292 } |
| 285 } | 293 } |
| 286 | 294 |
| 287 void NavigateAndCommitSubframe(const GURL& url, bool expected_activation) { | 295 void NavigateAndCommitSubframe(const GURL& url, bool expected_activation) { |
| 288 EXPECT_CALL(*client(), ToggleNotificationVisibility(::testing::_)).Times(0); | 296 EXPECT_CALL(*client(), ToggleNotificationVisibility(::testing::_)).Times(0); |
| 289 | 297 |
| 290 content::NavigationSimulator::NavigateAndCommitFromDocument( | 298 content::NavigationSimulator::NavigateAndCommitFromDocument( |
| 291 url, GetSubframeRFH()); | 299 url, GetSubframeRFH()); |
| 292 ExpectActivationSignalForFrame(GetSubframeRFH(), expected_activation); | 300 ExpectActivationSignalForFrame(GetSubframeRFH(), expected_activation); |
| 293 ::testing::Mock::VerifyAndClearExpectations(client()); | 301 ::testing::Mock::VerifyAndClearExpectations(client()); |
| 294 } | 302 } |
| 295 | 303 |
| 296 void NavigateAndExpectActivation( | 304 void NavigateAndExpectActivation( |
| 297 const std::vector<bool>& blacklisted_urls, | 305 const std::vector<bool>& blacklisted_urls, |
| 298 const std::vector<GURL>& navigation_chain, | 306 const std::vector<GURL>& navigation_chain, |
| 299 safe_browsing::SBThreatType threat_type, | 307 safe_browsing::SBThreatType threat_type, |
| 300 safe_browsing::ThreatPatternType threat_type_metadata, | 308 safe_browsing::ThreatPatternType threat_type_metadata, |
| 301 const content::Referrer& referrer, | 309 const content::Referrer& referrer, |
| 302 ui::PageTransition transition, | 310 ui::PageTransition transition, |
| 303 RedirectChainMatchPattern expected_pattern, | 311 RedirectChainMatchPattern expected_pattern, |
| 312 const std::string& histogram_suffix, |
| 304 ActivationDecision expected_activation_decision) { | 313 ActivationDecision expected_activation_decision) { |
| 305 const bool expected_activation = | 314 const bool expected_activation = |
| 306 expected_activation_decision == ActivationDecision::ACTIVATED; | 315 expected_activation_decision == ActivationDecision::ACTIVATED; |
| 307 BlacklistURLWithRedirectsNavigateAndCommit( | 316 BlacklistURLWithRedirectsNavigateAndCommit( |
| 308 blacklisted_urls, navigation_chain, threat_type, threat_type_metadata, | 317 blacklisted_urls, navigation_chain, threat_type, threat_type_metadata, |
| 309 referrer, transition, expected_pattern, expected_activation_decision); | 318 referrer, transition, expected_pattern, histogram_suffix, |
| 319 expected_activation_decision); |
| 310 | 320 |
| 311 NavigateAndCommitSubframe(GURL(kExampleLoginUrl), expected_activation); | 321 NavigateAndCommitSubframe(GURL(kExampleLoginUrl), expected_activation); |
| 312 } | 322 } |
| 313 | 323 |
| 314 void NavigateAndExpectActivation( | 324 void NavigateAndExpectActivation( |
| 315 const std::vector<bool>& blacklisted_urls, | 325 const std::vector<bool>& blacklisted_urls, |
| 316 const std::vector<GURL>& navigation_chain, | 326 const std::vector<GURL>& navigation_chain, |
| 317 RedirectChainMatchPattern expected_pattern, | 327 RedirectChainMatchPattern expected_pattern, |
| 318 ActivationDecision expected_activation_decision) { | 328 ActivationDecision expected_activation_decision) { |
| 319 NavigateAndExpectActivation( | 329 NavigateAndExpectActivation( |
| 320 blacklisted_urls, navigation_chain, | 330 blacklisted_urls, navigation_chain, |
| 321 safe_browsing::SB_THREAT_TYPE_URL_PHISHING, | 331 safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
| 322 safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS, | 332 safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS, |
| 323 content::Referrer(), ui::PAGE_TRANSITION_LINK, expected_pattern, | 333 content::Referrer(), ui::PAGE_TRANSITION_LINK, expected_pattern, |
| 324 expected_activation_decision); | 334 std::string(), expected_activation_decision); |
| 325 } | 335 } |
| 326 | 336 |
| 327 void EmulateDidDisallowFirstSubresourceMessage() { | 337 void EmulateDidDisallowFirstSubresourceMessage() { |
| 328 factory()->OnMessageReceived( | 338 factory()->OnMessageReceived( |
| 329 SubresourceFilterHostMsg_DidDisallowFirstSubresource( | 339 SubresourceFilterHostMsg_DidDisallowFirstSubresource( |
| 330 main_rfh()->GetRoutingID()), | 340 main_rfh()->GetRoutingID()), |
| 331 main_rfh()); | 341 main_rfh()); |
| 332 } | 342 } |
| 333 | 343 |
| 334 void EmulateFailedNavigationAndExpectNoActivation(const GURL& url) { | 344 void EmulateFailedNavigationAndExpectNoActivation(const GURL& url) { |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 F0M0L1, | 524 F0M0L1, |
| 515 ActivationDecision::ACTIVATED}, | 525 ActivationDecision::ACTIVATED}, |
| 516 {{true, false}, | 526 {{true, false}, |
| 517 {GURL(kUrlA), GURL(kUrlB)}, | 527 {GURL(kUrlA), GURL(kUrlB)}, |
| 518 F1M0L0, | 528 F1M0L0, |
| 519 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED}, | 529 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED}, |
| 520 {{true, true}, | 530 {{true, true}, |
| 521 {GURL(kUrlA), GURL(kUrlB)}, | 531 {GURL(kUrlA), GURL(kUrlB)}, |
| 522 F1M0L1, | 532 F1M0L1, |
| 523 ActivationDecision::ACTIVATED}, | 533 ActivationDecision::ACTIVATED}, |
| 524 | |
| 525 {{false, false, false}, | 534 {{false, false, false}, |
| 526 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC)}, | 535 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC)}, |
| 527 EMPTY, | 536 EMPTY, |
| 528 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED}, | 537 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED}, |
| 529 {{false, false, true}, | 538 {{false, false, true}, |
| 530 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC)}, | 539 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC)}, |
| 531 F0M0L1, | 540 F0M0L1, |
| 532 ActivationDecision::ACTIVATED}, | 541 ActivationDecision::ACTIVATED}, |
| 533 {{false, true, false}, | 542 {{false, true, false}, |
| 534 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC)}, | 543 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC)}, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 561 }; | 570 }; |
| 562 | 571 |
| 563 for (size_t i = 0U; i < arraysize(kRedirectRedirectChainMatchPatternTestData); | 572 for (size_t i = 0U; i < arraysize(kRedirectRedirectChainMatchPatternTestData); |
| 564 ++i) { | 573 ++i) { |
| 565 auto test_data = kRedirectRedirectChainMatchPatternTestData[i]; | 574 auto test_data = kRedirectRedirectChainMatchPatternTestData[i]; |
| 566 NavigateAndExpectActivation( | 575 NavigateAndExpectActivation( |
| 567 test_data.blacklisted_urls, test_data.navigation_chain, | 576 test_data.blacklisted_urls, test_data.navigation_chain, |
| 568 safe_browsing::SB_THREAT_TYPE_URL_PHISHING, | 577 safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
| 569 safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS, | 578 safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS, |
| 570 content::Referrer(), ui::PAGE_TRANSITION_LINK, | 579 content::Referrer(), ui::PAGE_TRANSITION_LINK, |
| 571 test_data.hit_expected_pattern, test_data.expected_activation_decision); | 580 test_data.hit_expected_pattern, std::string(), |
| 581 test_data.expected_activation_decision); |
| 572 NavigateAndExpectActivation( | 582 NavigateAndExpectActivation( |
| 573 {false}, {GURL("https://dummy.com")}, EMPTY, | 583 {false}, {GURL("https://dummy.com")}, EMPTY, |
| 574 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); | 584 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); |
| 585 #if defined(GOOGLE_CHROME_BUILD) |
| 586 NavigateAndExpectActivation( |
| 587 test_data.blacklisted_urls, test_data.navigation_chain, |
| 588 safe_browsing::SB_THREAT_TYPE_SUBRESOURCE_FILTER, |
| 589 safe_browsing::ThreatPatternType::NONE, content::Referrer(), |
| 590 ui::PAGE_TRANSITION_LINK, EMPTY, test_data.hit_expected_pattern, |
| 591 kSubresourceFilterSuffix, |
| 592 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); |
| 593 #endif |
| 575 } | 594 } |
| 576 } | 595 } |
| 577 | 596 |
| 578 TEST_F(ContentSubresourceFilterDriverFactoryTest, NotificationVisibility) { | 597 TEST_F(ContentSubresourceFilterDriverFactoryTest, NotificationVisibility) { |
| 579 base::FieldTrialList field_trial_list(nullptr); | 598 base::FieldTrialList field_trial_list(nullptr); |
| 580 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 599 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 581 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 600 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 582 kActivationScopeAllSites); | 601 kActivationScopeAllSites); |
| 583 | 602 |
| 584 NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, | 603 NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 645 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 627 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 646 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 628 kActivationScopeAllSites, "" /* activation_lists */, | 647 kActivationScopeAllSites, "" /* activation_lists */, |
| 629 "" /* performance_measurement_rate */, "" /* suppress_notifications */, | 648 "" /* performance_measurement_rate */, "" /* suppress_notifications */, |
| 630 "true" /* whitelist_site_on_reload */); | 649 "true" /* whitelist_site_on_reload */); |
| 631 | 650 |
| 632 NavigateAndExpectActivation( | 651 NavigateAndExpectActivation( |
| 633 {false}, {GURL(kExampleUrl)}, | 652 {false}, {GURL(kExampleUrl)}, |
| 634 safe_browsing::SB_THREAT_TYPE_URL_PHISHING, | 653 safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
| 635 safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS, | 654 safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS, |
| 636 test_case.referrer, test_case.transition, EMPTY, | 655 test_case.referrer, test_case.transition, EMPTY, std::string(), |
| 637 test_case.expected_activation_decision); | 656 test_case.expected_activation_decision); |
| 638 // Verify that if the first URL failed to activate, subsequent same-origin | 657 // Verify that if the first URL failed to activate, subsequent same-origin |
| 639 // navigations also fail to activate. | 658 // navigations also fail to activate. |
| 640 NavigateAndExpectActivation({false}, {GURL(kExampleUrlWithParams)}, EMPTY, | 659 NavigateAndExpectActivation({false}, {GURL(kExampleUrlWithParams)}, EMPTY, |
| 641 test_case.expected_activation_decision); | 660 test_case.expected_activation_decision); |
| 642 } | 661 } |
| 643 } | 662 } |
| 644 | 663 |
| 645 TEST_P(ContentSubresourceFilterDriverFactoryActivationLevelTest, | 664 TEST_P(ContentSubresourceFilterDriverFactoryActivationLevelTest, |
| 646 ActivateForFrameState) { | 665 ActivateForFrameState) { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 675 const GURL test_url("https://example.com/nonsoceng?q=engsocnon"); | 694 const GURL test_url("https://example.com/nonsoceng?q=engsocnon"); |
| 676 std::vector<GURL> navigation_chain; | 695 std::vector<GURL> navigation_chain; |
| 677 | 696 |
| 678 const bool expected_activation = | 697 const bool expected_activation = |
| 679 test_data.expected_activation_decision == ActivationDecision::ACTIVATED; | 698 test_data.expected_activation_decision == ActivationDecision::ACTIVATED; |
| 680 NavigateAndExpectActivation( | 699 NavigateAndExpectActivation( |
| 681 {false, false, false, true}, | 700 {false, false, false, true}, |
| 682 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC), test_url}, test_data.threat_type, | 701 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC), test_url}, test_data.threat_type, |
| 683 test_data.threat_type_metadata, content::Referrer(), | 702 test_data.threat_type_metadata, content::Referrer(), |
| 684 ui::PAGE_TRANSITION_LINK, expected_activation ? F0M0L1 : EMPTY, | 703 ui::PAGE_TRANSITION_LINK, expected_activation ? F0M0L1 : EMPTY, |
| 685 test_data.expected_activation_decision); | 704 std::string(), test_data.expected_activation_decision); |
| 686 }; | 705 }; |
| 687 | 706 |
| 688 TEST_P(ContentSubresourceFilterDriverFactoryActivationScopeTest, | 707 TEST_P(ContentSubresourceFilterDriverFactoryActivationScopeTest, |
| 689 ActivateForScopeType) { | 708 ActivateForScopeType) { |
| 690 const ActivationScopeTestData& test_data = GetParam(); | 709 const ActivationScopeTestData& test_data = GetParam(); |
| 691 base::FieldTrialList field_trial_list(nullptr); | 710 base::FieldTrialList field_trial_list(nullptr); |
| 692 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 711 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 693 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 712 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 694 test_data.activation_scope, | 713 test_data.activation_scope, |
| 695 kActivationListSocialEngineeringAdsInterstitial); | 714 kActivationListSocialEngineeringAdsInterstitial); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 ActivationScopeTest, | 774 ActivationScopeTest, |
| 756 ContentSubresourceFilterDriverFactoryActivationScopeTest, | 775 ContentSubresourceFilterDriverFactoryActivationScopeTest, |
| 757 ::testing::ValuesIn(kActivationScopeTestData)); | 776 ::testing::ValuesIn(kActivationScopeTestData)); |
| 758 | 777 |
| 759 INSTANTIATE_TEST_CASE_P( | 778 INSTANTIATE_TEST_CASE_P( |
| 760 ActivationLevelTest, | 779 ActivationLevelTest, |
| 761 ContentSubresourceFilterDriverFactoryActivationLevelTest, | 780 ContentSubresourceFilterDriverFactoryActivationLevelTest, |
| 762 ::testing::ValuesIn(kActivationLevelTestData)); | 781 ::testing::ValuesIn(kActivationLevelTestData)); |
| 763 | 782 |
| 764 } // namespace subresource_filter | 783 } // namespace subresource_filter |
| OLD | NEW |