| 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/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 | 452 |
| 453 std::vector<std::unique_ptr<content::NavigationThrottle>> throttles; | 453 std::vector<std::unique_ptr<content::NavigationThrottle>> throttles; |
| 454 factory()->throttle_manager()->MaybeAppendNavigationThrottles( | 454 factory()->throttle_manager()->MaybeAppendNavigationThrottles( |
| 455 navigation_handle, &throttles); | 455 navigation_handle, &throttles); |
| 456 for (auto& it : throttles) | 456 for (auto& it : throttles) |
| 457 navigation_handle->RegisterThrottleForTesting(std::move(it)); | 457 navigation_handle->RegisterThrottleForTesting(std::move(it)); |
| 458 } | 458 } |
| 459 | 459 |
| 460 private: | 460 private: |
| 461 static bool expected_measure_performance() { | 461 static bool expected_measure_performance() { |
| 462 const double rate = GetPerformanceMeasurementRate(); | 462 const double rate = GetActiveConfiguration().performance_measurement_rate; |
| 463 // Note: The case when 0 < rate < 1 is not deterministic, don't test it. | 463 // Note: The case when 0 < rate < 1 is not deterministic, don't test it. |
| 464 EXPECT_TRUE(rate == 0 || rate == 1); | 464 EXPECT_TRUE(rate == 0 || rate == 1); |
| 465 return rate == 1; | 465 return rate == 1; |
| 466 } | 466 } |
| 467 | 467 |
| 468 testing::TestRulesetCreator test_ruleset_creator_; | 468 testing::TestRulesetCreator test_ruleset_creator_; |
| 469 testing::TestRulesetPair test_ruleset_pair_; | 469 testing::TestRulesetPair test_ruleset_pair_; |
| 470 | 470 |
| 471 // Owned by the factory. | 471 // Owned by the factory. |
| 472 MockSubresourceFilterClient* client_; | 472 MockSubresourceFilterClient* client_; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 | 513 |
| 514 TEST_F(ContentSubresourceFilterDriverFactoryTest, | 514 TEST_F(ContentSubresourceFilterDriverFactoryTest, |
| 515 ActivateForFrameHostDisabledFeature) { | 515 ActivateForFrameHostDisabledFeature) { |
| 516 // Activation scope is set to NONE => no activation should happen even if URL | 516 // Activation scope is set to NONE => no activation should happen even if URL |
| 517 // which is visited was a SB hit. | 517 // which is visited was a SB hit. |
| 518 base::FieldTrialList field_trial_list(nullptr); | 518 base::FieldTrialList field_trial_list(nullptr); |
| 519 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 519 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 520 base::FeatureList::OVERRIDE_DISABLE_FEATURE, kActivationLevelEnabled, | 520 base::FeatureList::OVERRIDE_DISABLE_FEATURE, kActivationLevelEnabled, |
| 521 kActivationScopeAllSites, | 521 kActivationScopeAllSites, |
| 522 kActivationListSocialEngineeringAdsInterstitial); | 522 kActivationListSocialEngineeringAdsInterstitial); |
| 523 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 523 const GURL url(kExampleUrlWithParams); | 524 const GURL url(kExampleUrlWithParams); |
| 524 NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, | 525 NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, |
| 525 ActivationDecision::ACTIVATION_DISABLED); | 526 ActivationDecision::ACTIVATION_DISABLED); |
| 526 factory()->AddHostOfURLToWhitelistSet(url); | 527 factory()->AddHostOfURLToWhitelistSet(url); |
| 527 NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, | 528 NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, |
| 528 ActivationDecision::ACTIVATION_DISABLED); | 529 ActivationDecision::ACTIVATION_DISABLED); |
| 529 } | 530 } |
| 530 | 531 |
| 531 TEST_F(ContentSubresourceFilterDriverFactoryTest, NoActivationWhenNoMatch) { | 532 TEST_F(ContentSubresourceFilterDriverFactoryTest, NoActivationWhenNoMatch) { |
| 532 base::FieldTrialList field_trial_list(nullptr); | 533 base::FieldTrialList field_trial_list(nullptr); |
| 533 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 534 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 534 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 535 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 535 kActivationScopeActivationList, | 536 kActivationScopeActivationList, |
| 536 kActivationListSocialEngineeringAdsInterstitial); | 537 kActivationListSocialEngineeringAdsInterstitial); |
| 538 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 537 NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, | 539 NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, |
| 538 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); | 540 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); |
| 539 } | 541 } |
| 540 | 542 |
| 541 TEST_F(ContentSubresourceFilterDriverFactoryTest, | 543 TEST_F(ContentSubresourceFilterDriverFactoryTest, |
| 542 SpecialCaseNavigationAllSitesEnabled) { | 544 SpecialCaseNavigationAllSitesEnabled) { |
| 543 // Check that when the experiment is enabled for all site, the activation | 545 // Check that when the experiment is enabled for all site, the activation |
| 544 // signal is always sent. | 546 // signal is always sent. |
| 545 base::FieldTrialList field_trial_list(nullptr); | 547 base::FieldTrialList field_trial_list(nullptr); |
| 546 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 548 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 547 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 549 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 548 kActivationScopeAllSites); | 550 kActivationScopeAllSites); |
| 551 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 549 EmulateInPageNavigation({false}, EMPTY, ActivationDecision::ACTIVATED); | 552 EmulateInPageNavigation({false}, EMPTY, ActivationDecision::ACTIVATED); |
| 550 } | 553 } |
| 551 | 554 |
| 552 TEST_F(ContentSubresourceFilterDriverFactoryTest, | 555 TEST_F(ContentSubresourceFilterDriverFactoryTest, |
| 553 SpecialCaseNavigationActivationListEnabled) { | 556 SpecialCaseNavigationActivationListEnabled) { |
| 554 base::FieldTrialList field_trial_list(nullptr); | 557 base::FieldTrialList field_trial_list(nullptr); |
| 555 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 558 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 556 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 559 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 557 kActivationScopeActivationList, | 560 kActivationScopeActivationList, |
| 558 kActivationListSocialEngineeringAdsInterstitial); | 561 kActivationListSocialEngineeringAdsInterstitial); |
| 562 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 559 EmulateInPageNavigation({true}, NO_REDIRECTS_HIT, | 563 EmulateInPageNavigation({true}, NO_REDIRECTS_HIT, |
| 560 ActivationDecision::ACTIVATED); | 564 ActivationDecision::ACTIVATED); |
| 561 } | 565 } |
| 562 | 566 |
| 563 TEST_F(ContentSubresourceFilterDriverFactoryTest, | 567 TEST_F(ContentSubresourceFilterDriverFactoryTest, |
| 564 SpecialCaseNavigationActivationListEnabledWithPerformanceMeasurement) { | 568 SpecialCaseNavigationActivationListEnabledWithPerformanceMeasurement) { |
| 565 base::FieldTrialList field_trial_list(nullptr); | 569 base::FieldTrialList field_trial_list(nullptr); |
| 566 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 570 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 567 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 571 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 568 kActivationScopeActivationList, | 572 kActivationScopeActivationList, |
| 569 kActivationListSocialEngineeringAdsInterstitial, | 573 kActivationListSocialEngineeringAdsInterstitial, |
| 570 "1" /* performance_measurement_rate */); | 574 "1" /* performance_measurement_rate */); |
| 575 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 571 EmulateInPageNavigation({true}, NO_REDIRECTS_HIT, | 576 EmulateInPageNavigation({true}, NO_REDIRECTS_HIT, |
| 572 ActivationDecision::ACTIVATED); | 577 ActivationDecision::ACTIVATED); |
| 573 } | 578 } |
| 574 | 579 |
| 575 TEST_F(ContentSubresourceFilterDriverFactoryTest, FailedNavigation) { | 580 TEST_F(ContentSubresourceFilterDriverFactoryTest, FailedNavigation) { |
| 576 base::FieldTrialList field_trial_list(nullptr); | 581 base::FieldTrialList field_trial_list(nullptr); |
| 577 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 582 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 578 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 583 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 579 kActivationScopeAllSites); | 584 kActivationScopeAllSites); |
| 585 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 580 const GURL url(kExampleUrl); | 586 const GURL url(kExampleUrl); |
| 581 NavigateAndExpectActivation({false}, {url}, EMPTY, | 587 NavigateAndExpectActivation({false}, {url}, EMPTY, |
| 582 ActivationDecision::ACTIVATED); | 588 ActivationDecision::ACTIVATED); |
| 583 EmulateFailedNavigationAndExpectNoActivation(url); | 589 EmulateFailedNavigationAndExpectNoActivation(url); |
| 584 } | 590 } |
| 585 | 591 |
| 586 // TODO(melandory): refactor the test so it no longer require the current | 592 // TODO(melandory): refactor the test so it no longer require the current |
| 587 // activation list to be matching. | 593 // activation list to be matching. |
| 588 TEST_F(ContentSubresourceFilterDriverFactoryTest, RedirectPatternTest) { | 594 TEST_F(ContentSubresourceFilterDriverFactoryTest, RedirectPatternTest) { |
| 589 base::FieldTrialList field_trial_list(nullptr); | 595 base::FieldTrialList field_trial_list(nullptr); |
| 590 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 596 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 591 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 597 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 592 kActivationScopeActivationList, | 598 kActivationScopeActivationList, |
| 593 kActivationListSocialEngineeringAdsInterstitial); | 599 kActivationListSocialEngineeringAdsInterstitial); |
| 600 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 594 struct RedirectRedirectChainMatchPatternTestData { | 601 struct RedirectRedirectChainMatchPatternTestData { |
| 595 std::vector<bool> blacklisted_urls; | 602 std::vector<bool> blacklisted_urls; |
| 596 std::vector<GURL> navigation_chain; | 603 std::vector<GURL> navigation_chain; |
| 597 RedirectChainMatchPattern hit_expected_pattern; | 604 RedirectChainMatchPattern hit_expected_pattern; |
| 598 ActivationDecision expected_activation_decision; | 605 ActivationDecision expected_activation_decision; |
| 599 } kRedirectRedirectChainMatchPatternTestData[] = { | 606 } kRedirectRedirectChainMatchPatternTestData[] = { |
| 600 {{false}, | 607 {{false}, |
| 601 {GURL(kUrlA)}, | 608 {GURL(kUrlA)}, |
| 602 EMPTY, | 609 EMPTY, |
| 603 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED}, | 610 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED}, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 677 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); | 684 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); |
| 678 #endif | 685 #endif |
| 679 } | 686 } |
| 680 } | 687 } |
| 681 | 688 |
| 682 TEST_F(ContentSubresourceFilterDriverFactoryTest, NotificationVisibility) { | 689 TEST_F(ContentSubresourceFilterDriverFactoryTest, NotificationVisibility) { |
| 683 base::FieldTrialList field_trial_list(nullptr); | 690 base::FieldTrialList field_trial_list(nullptr); |
| 684 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 691 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 685 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 692 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 686 kActivationScopeAllSites); | 693 kActivationScopeAllSites); |
| 694 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 687 | 695 |
| 688 NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, | 696 NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, |
| 689 ActivationDecision::ACTIVATED); | 697 ActivationDecision::ACTIVATED); |
| 690 EXPECT_CALL(*client(), ToggleNotificationVisibility(true)).Times(1); | 698 EXPECT_CALL(*client(), ToggleNotificationVisibility(true)).Times(1); |
| 691 NavigateSubframeAndExpectCheckResult(GURL(kDisallowedUrl), | 699 NavigateSubframeAndExpectCheckResult(GURL(kDisallowedUrl), |
| 692 true /* expect_cancelled */); | 700 true /* expect_cancelled */); |
| 693 } | 701 } |
| 694 | 702 |
| 695 TEST_F(ContentSubresourceFilterDriverFactoryTest, | 703 TEST_F(ContentSubresourceFilterDriverFactoryTest, |
| 696 SuppressNotificationVisibility) { | 704 SuppressNotificationVisibility) { |
| 697 base::FieldTrialList field_trial_list(nullptr); | 705 base::FieldTrialList field_trial_list(nullptr); |
| 698 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 706 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 699 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 707 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 700 kActivationScopeAllSites, "" /* activation_lists */, | 708 kActivationScopeAllSites, "" /* activation_lists */, |
| 701 "" /* performance_measurement_rate */, | 709 "" /* performance_measurement_rate */, |
| 702 "true" /* suppress_notifications */); | 710 "true" /* suppress_notifications */); |
| 711 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 703 | 712 |
| 704 NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, | 713 NavigateAndExpectActivation({false}, {GURL(kExampleUrl)}, EMPTY, |
| 705 ActivationDecision::ACTIVATED); | 714 ActivationDecision::ACTIVATED); |
| 706 EXPECT_CALL(*client(), ToggleNotificationVisibility(::testing::_)).Times(0); | 715 EXPECT_CALL(*client(), ToggleNotificationVisibility(::testing::_)).Times(0); |
| 707 NavigateSubframeAndExpectCheckResult(GURL(kDisallowedUrl), | 716 NavigateSubframeAndExpectCheckResult(GURL(kDisallowedUrl), |
| 708 true /* expect_cancelled */); | 717 true /* expect_cancelled */); |
| 709 } | 718 } |
| 710 | 719 |
| 711 TEST_F(ContentSubresourceFilterDriverFactoryTest, | 720 TEST_F(ContentSubresourceFilterDriverFactoryTest, |
| 712 InactiveMainFrame_SubframeNotFiltered) { | 721 InactiveMainFrame_SubframeNotFiltered) { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 735 SCOPED_TRACE(::testing::Message("referrer = \"") | 744 SCOPED_TRACE(::testing::Message("referrer = \"") |
| 736 << test_case.referrer.url << "\"" | 745 << test_case.referrer.url << "\"" |
| 737 << " transition = \"" << test_case.transition << "\""); | 746 << " transition = \"" << test_case.transition << "\""); |
| 738 | 747 |
| 739 base::FieldTrialList field_trial_list(nullptr); | 748 base::FieldTrialList field_trial_list(nullptr); |
| 740 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 749 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 741 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 750 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 742 kActivationScopeAllSites, "" /* activation_lists */, | 751 kActivationScopeAllSites, "" /* activation_lists */, |
| 743 "" /* performance_measurement_rate */, "" /* suppress_notifications */, | 752 "" /* performance_measurement_rate */, "" /* suppress_notifications */, |
| 744 "true" /* whitelist_site_on_reload */); | 753 "true" /* whitelist_site_on_reload */); |
| 754 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 745 | 755 |
| 746 NavigateAndExpectActivation( | 756 NavigateAndExpectActivation( |
| 747 {false}, {GURL(kExampleUrl)}, | 757 {false}, {GURL(kExampleUrl)}, |
| 748 safe_browsing::SB_THREAT_TYPE_URL_PHISHING, | 758 safe_browsing::SB_THREAT_TYPE_URL_PHISHING, |
| 749 safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS, | 759 safe_browsing::ThreatPatternType::SOCIAL_ENGINEERING_ADS, |
| 750 test_case.referrer, test_case.transition, EMPTY, | 760 test_case.referrer, test_case.transition, EMPTY, |
| 751 test_case.expected_activation_decision); | 761 test_case.expected_activation_decision); |
| 752 // Verify that if the first URL failed to activate, subsequent same-origin | 762 // Verify that if the first URL failed to activate, subsequent same-origin |
| 753 // navigations also fail to activate. | 763 // navigations also fail to activate. |
| 754 NavigateAndExpectActivation({false}, {GURL(kExampleUrlWithParams)}, EMPTY, | 764 NavigateAndExpectActivation({false}, {GURL(kExampleUrlWithParams)}, EMPTY, |
| 755 test_case.expected_activation_decision); | 765 test_case.expected_activation_decision); |
| 756 } | 766 } |
| 757 } | 767 } |
| 758 | 768 |
| 759 TEST_P(ContentSubresourceFilterDriverFactoryActivationLevelTest, | 769 TEST_P(ContentSubresourceFilterDriverFactoryActivationLevelTest, |
| 760 ActivateForFrameState) { | 770 ActivateForFrameState) { |
| 761 const ActivationLevelTestData& test_data = GetParam(); | 771 const ActivationLevelTestData& test_data = GetParam(); |
| 762 base::FieldTrialList field_trial_list(nullptr); | 772 base::FieldTrialList field_trial_list(nullptr); |
| 763 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 773 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 764 base::FeatureList::OVERRIDE_ENABLE_FEATURE, test_data.activation_level, | 774 base::FeatureList::OVERRIDE_ENABLE_FEATURE, test_data.activation_level, |
| 765 kActivationScopeActivationList, | 775 kActivationScopeActivationList, |
| 766 kActivationListSocialEngineeringAdsInterstitial); | 776 kActivationListSocialEngineeringAdsInterstitial); |
| 777 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 767 | 778 |
| 768 const GURL url(kExampleUrlWithParams); | 779 const GURL url(kExampleUrlWithParams); |
| 769 NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, | 780 NavigateAndExpectActivation({true}, {url}, NO_REDIRECTS_HIT, |
| 770 test_data.expected_activation_decision); | 781 test_data.expected_activation_decision); |
| 771 factory()->AddHostOfURLToWhitelistSet(url); | 782 factory()->AddHostOfURLToWhitelistSet(url); |
| 772 NavigateAndExpectActivation( | 783 NavigateAndExpectActivation( |
| 773 {true}, {GURL(kExampleUrlWithParams)}, NO_REDIRECTS_HIT, | 784 {true}, {GURL(kExampleUrlWithParams)}, NO_REDIRECTS_HIT, |
| 774 GetMaximumActivationLevel() == ActivationLevel::DISABLED | 785 GetActiveConfiguration().activation_level == ActivationLevel::DISABLED |
| 775 ? ActivationDecision::ACTIVATION_DISABLED | 786 ? ActivationDecision::ACTIVATION_DISABLED |
| 776 : ActivationDecision::URL_WHITELISTED); | 787 : ActivationDecision::URL_WHITELISTED); |
| 777 } | 788 } |
| 778 | 789 |
| 779 TEST_P(ContentSubresourceFilterDriverFactoryThreatTypeTest, | 790 TEST_P(ContentSubresourceFilterDriverFactoryThreatTypeTest, |
| 780 ActivateForTheListType) { | 791 ActivateForTheListType) { |
| 781 // Sets up the experiment in a way that the activation decision depends on the | 792 // Sets up the experiment in a way that the activation decision depends on the |
| 782 // list for which the Safe Browsing hit has happened. | 793 // list for which the Safe Browsing hit has happened. |
| 783 const ActivationListTestData& test_data = GetParam(); | 794 const ActivationListTestData& test_data = GetParam(); |
| 784 base::FieldTrialList field_trial_list(nullptr); | 795 base::FieldTrialList field_trial_list(nullptr); |
| 785 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 796 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 786 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 797 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 787 kActivationScopeActivationList, test_data.activation_list); | 798 kActivationScopeActivationList, test_data.activation_list); |
| 799 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 788 | 800 |
| 789 const GURL test_url("https://example.com/nonsoceng?q=engsocnon"); | 801 const GURL test_url("https://example.com/nonsoceng?q=engsocnon"); |
| 790 std::vector<GURL> navigation_chain; | 802 std::vector<GURL> navigation_chain; |
| 791 | 803 |
| 792 ActivationList effective_list = GetListForThreatTypeAndMetadata( | 804 ActivationList effective_list = GetListForThreatTypeAndMetadata( |
| 793 test_data.threat_type, test_data.threat_type_metadata); | 805 test_data.threat_type, test_data.threat_type_metadata); |
| 794 NavigateAndExpectActivation( | 806 NavigateAndExpectActivation( |
| 795 {false, false, false, true}, | 807 {false, false, false, true}, |
| 796 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC), test_url}, test_data.threat_type, | 808 {GURL(kUrlA), GURL(kUrlB), GURL(kUrlC), test_url}, test_data.threat_type, |
| 797 test_data.threat_type_metadata, content::Referrer(), | 809 test_data.threat_type_metadata, content::Referrer(), |
| 798 ui::PAGE_TRANSITION_LINK, | 810 ui::PAGE_TRANSITION_LINK, |
| 799 effective_list != ActivationList::NONE ? F0M0L1 : EMPTY, | 811 effective_list != ActivationList::NONE ? F0M0L1 : EMPTY, |
| 800 test_data.expected_activation_decision); | 812 test_data.expected_activation_decision); |
| 801 }; | 813 }; |
| 802 | 814 |
| 803 TEST_P(ContentSubresourceFilterDriverFactoryActivationScopeTest, | 815 TEST_P(ContentSubresourceFilterDriverFactoryActivationScopeTest, |
| 804 ActivateForScopeType) { | 816 ActivateForScopeType) { |
| 805 const ActivationScopeTestData& test_data = GetParam(); | 817 const ActivationScopeTestData& test_data = GetParam(); |
| 806 base::FieldTrialList field_trial_list(nullptr); | 818 base::FieldTrialList field_trial_list(nullptr); |
| 807 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 819 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 808 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 820 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 809 test_data.activation_scope, | 821 test_data.activation_scope, |
| 810 kActivationListSocialEngineeringAdsInterstitial); | 822 kActivationListSocialEngineeringAdsInterstitial); |
| 823 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 811 | 824 |
| 812 const GURL test_url(kExampleUrlWithParams); | 825 const GURL test_url(kExampleUrlWithParams); |
| 813 | 826 |
| 814 RedirectChainMatchPattern expected_pattern = | 827 RedirectChainMatchPattern expected_pattern = |
| 815 test_data.url_matches_activation_list ? NO_REDIRECTS_HIT : EMPTY; | 828 test_data.url_matches_activation_list ? NO_REDIRECTS_HIT : EMPTY; |
| 816 NavigateAndExpectActivation({test_data.url_matches_activation_list}, | 829 NavigateAndExpectActivation({test_data.url_matches_activation_list}, |
| 817 {test_url}, expected_pattern, | 830 {test_url}, expected_pattern, |
| 818 test_data.expected_activation_decision); | 831 test_data.expected_activation_decision); |
| 819 if (test_data.url_matches_activation_list) { | 832 if (test_data.url_matches_activation_list) { |
| 820 factory()->AddHostOfURLToWhitelistSet(test_url); | 833 factory()->AddHostOfURLToWhitelistSet(test_url); |
| 821 NavigateAndExpectActivation( | 834 NavigateAndExpectActivation( |
| 822 {test_data.url_matches_activation_list}, {GURL(kExampleUrlWithParams)}, | 835 {test_data.url_matches_activation_list}, {GURL(kExampleUrlWithParams)}, |
| 823 expected_pattern, | 836 expected_pattern, |
| 824 GetCurrentActivationScope() == ActivationScope::NO_SITES | 837 GetActiveConfiguration().activation_scope == ActivationScope::NO_SITES |
| 825 ? ActivationDecision::ACTIVATION_DISABLED | 838 ? ActivationDecision::ACTIVATION_DISABLED |
| 826 : ActivationDecision::URL_WHITELISTED); | 839 : ActivationDecision::URL_WHITELISTED); |
| 827 } | 840 } |
| 828 }; | 841 }; |
| 829 | 842 |
| 830 // Only main frames with http/https schemes should activate, unless the | 843 // Only main frames with http/https schemes should activate, unless the |
| 831 // activation scope is for all sites. | 844 // activation scope is for all sites. |
| 832 TEST_P(ContentSubresourceFilterDriverFactoryActivationScopeTest, | 845 TEST_P(ContentSubresourceFilterDriverFactoryActivationScopeTest, |
| 833 ActivateForSupportedUrlScheme) { | 846 ActivateForSupportedUrlScheme) { |
| 834 const ActivationScopeTestData& test_data = GetParam(); | 847 const ActivationScopeTestData& test_data = GetParam(); |
| 835 base::FieldTrialList field_trial_list(nullptr); | 848 base::FieldTrialList field_trial_list(nullptr); |
| 836 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( | 849 testing::ScopedSubresourceFilterFeatureToggle scoped_feature_toggle( |
| 837 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, | 850 base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelEnabled, |
| 838 test_data.activation_scope, | 851 test_data.activation_scope, |
| 839 kActivationListSocialEngineeringAdsInterstitial); | 852 kActivationListSocialEngineeringAdsInterstitial); |
| 853 factory()->set_configuration_for_testing(GetActiveConfiguration()); |
| 840 | 854 |
| 841 // data URLs are also not supported, but not listed here, as it's not possible | 855 // data URLs are also not supported, but not listed here, as it's not possible |
| 842 // for a page to redirect to them after https://crbug.com/594215 is fixed. | 856 // for a page to redirect to them after https://crbug.com/594215 is fixed. |
| 843 const char* unsupported_urls[] = {"ftp://example.com/", "chrome://settings", | 857 const char* unsupported_urls[] = {"ftp://example.com/", "chrome://settings", |
| 844 "chrome-extension://some-extension", | 858 "chrome-extension://some-extension", |
| 845 "file:///var/www/index.html"}; | 859 "file:///var/www/index.html"}; |
| 846 const char* supported_urls[] = {"http://example.test", | 860 const char* supported_urls[] = {"http://example.test", |
| 847 "https://example.test"}; | 861 "https://example.test"}; |
| 848 for (auto* url : unsupported_urls) { | 862 for (auto* url : unsupported_urls) { |
| 849 SCOPED_TRACE(url); | 863 SCOPED_TRACE(url); |
| 850 RedirectChainMatchPattern expected_pattern = EMPTY; | 864 RedirectChainMatchPattern expected_pattern = EMPTY; |
| 851 NavigateAndExpectActivation( | 865 NavigateAndExpectActivation( |
| 852 {test_data.url_matches_activation_list}, {GURL(url)}, expected_pattern, | 866 {test_data.url_matches_activation_list}, {GURL(url)}, expected_pattern, |
| 853 GetCurrentActivationScope() == ActivationScope::NO_SITES | 867 GetActiveConfiguration().activation_scope == ActivationScope::NO_SITES |
| 854 ? ActivationDecision::ACTIVATION_DISABLED | 868 ? ActivationDecision::ACTIVATION_DISABLED |
| 855 : ActivationDecision::UNSUPPORTED_SCHEME); | 869 : ActivationDecision::UNSUPPORTED_SCHEME); |
| 856 } | 870 } |
| 857 for (auto* url : supported_urls) { | 871 for (auto* url : supported_urls) { |
| 858 SCOPED_TRACE(url); | 872 SCOPED_TRACE(url); |
| 859 RedirectChainMatchPattern expected_pattern = | 873 RedirectChainMatchPattern expected_pattern = |
| 860 test_data.url_matches_activation_list ? NO_REDIRECTS_HIT : EMPTY; | 874 test_data.url_matches_activation_list ? NO_REDIRECTS_HIT : EMPTY; |
| 861 NavigateAndExpectActivation({test_data.url_matches_activation_list}, | 875 NavigateAndExpectActivation({test_data.url_matches_activation_list}, |
| 862 {GURL(url)}, expected_pattern, | 876 {GURL(url)}, expected_pattern, |
| 863 test_data.expected_activation_decision); | 877 test_data.expected_activation_decision); |
| 864 } | 878 } |
| 865 }; | 879 }; |
| 866 | 880 |
| 867 INSTANTIATE_TEST_CASE_P(NoSocEngHit, | 881 INSTANTIATE_TEST_CASE_P(NoSocEngHit, |
| 868 ContentSubresourceFilterDriverFactoryThreatTypeTest, | 882 ContentSubresourceFilterDriverFactoryThreatTypeTest, |
| 869 ::testing::ValuesIn(kActivationListTestData)); | 883 ::testing::ValuesIn(kActivationListTestData)); |
| 870 | 884 |
| 871 INSTANTIATE_TEST_CASE_P( | 885 INSTANTIATE_TEST_CASE_P( |
| 872 ActivationScopeTest, | 886 ActivationScopeTest, |
| 873 ContentSubresourceFilterDriverFactoryActivationScopeTest, | 887 ContentSubresourceFilterDriverFactoryActivationScopeTest, |
| 874 ::testing::ValuesIn(kActivationScopeTestData)); | 888 ::testing::ValuesIn(kActivationScopeTestData)); |
| 875 | 889 |
| 876 INSTANTIATE_TEST_CASE_P( | 890 INSTANTIATE_TEST_CASE_P( |
| 877 ActivationLevelTest, | 891 ActivationLevelTest, |
| 878 ContentSubresourceFilterDriverFactoryActivationLevelTest, | 892 ContentSubresourceFilterDriverFactoryActivationLevelTest, |
| 879 ::testing::ValuesIn(kActivationLevelTestData)); | 893 ::testing::ValuesIn(kActivationLevelTestData)); |
| 880 | 894 |
| 881 } // namespace subresource_filter | 895 } // namespace subresource_filter |
| OLD | NEW |