Index: chrome/browser/subresource_filter/subresource_filter_browsertest.cc |
diff --git a/chrome/browser/subresource_filter/subresource_filter_browsertest.cc b/chrome/browser/subresource_filter/subresource_filter_browsertest.cc |
index 61e93674f650ec1f7ab7e28416e58eaf3002a530..72ee00c9b785b0cc8fdb3068b8e9f805f6d9ef78 100644 |
--- a/chrome/browser/subresource_filter/subresource_filter_browsertest.cc |
+++ b/chrome/browser/subresource_filter/subresource_filter_browsertest.cc |
@@ -26,6 +26,9 @@ |
#include "chrome/browser/safe_browsing/test_safe_browsing_service.h" |
#include "chrome/browser/safe_browsing/v4_test_utils.h" |
#include "chrome/browser/subresource_filter/chrome_subresource_filter_client.h" |
+#include "chrome/browser/subresource_filter/subresource_filter_activation_tracker.h" |
+#include "chrome/browser/subresource_filter/subresource_filter_profile_context.h" |
+#include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" |
#include "chrome/browser/subresource_filter/test_ruleset_publisher.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_commands.h" |
@@ -485,6 +488,20 @@ class SubresourceFilterListBrowserTest |
}; |
#endif |
+class SubresourceFilterDryRunBrowserTest |
+ : public SubresourceFilterBrowserTestImpl { |
+ public: |
+ SubresourceFilterDryRunBrowserTest() |
+ : SubresourceFilterBrowserTestImpl(false, false) {} |
+ |
+ void SetUpActivationFeature() override { |
+ ToggleFeatures(base::MakeUnique<ScopedSubresourceFilterFeatureToggle>( |
+ base::FeatureList::OVERRIDE_ENABLE_FEATURE, kActivationLevelDryRun, |
+ kActivationScopeActivationList, kActivationListSubresourceFilter, "0", |
+ "" /* suppress_notifications */, "false")); |
+ } |
+}; |
+ |
// Tests ----------------------------------------------------------------------- |
IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, MainFrameActivation) { |
@@ -1018,6 +1035,66 @@ IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, |
EXPECT_FALSE(WasParsedScriptElementLoaded(web_contents()->GetMainFrame())); |
} |
+IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest, ActivationTracking) { |
+ SetRulesetWithRules(std::vector<proto::UrlRule>()); |
+ SubresourceFilterProfileContext* context = |
+ SubresourceFilterProfileContextFactory::GetForProfile( |
+ browser()->profile()); |
+ |
+ const GURL kActivatedUrl = GetTestUrl(kTestFrameSetPath); |
+ ConfigureAsPhishingURL(kActivatedUrl); |
+ |
+ EXPECT_FALSE(context->activation_tracker()->HasActivatedWebContents()); |
+ ui_test_utils::NavigateToURL(browser(), kActivatedUrl); |
+ EXPECT_TRUE(context->activation_tracker()->HasActivatedWebContents()); |
+ |
+ // Add another tab without activation. |
+ AddTabAtIndex(0, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); |
+ EXPECT_TRUE(context->activation_tracker()->HasActivatedWebContents()); |
+ ui_test_utils::NavigateToURL(browser(), GURL("https://example.test")); |
+ EXPECT_TRUE(context->activation_tracker()->HasActivatedWebContents()); |
+ |
+ // Add another tab with activation, but close it. |
+ AddTabAtIndex(0, kActivatedUrl, ui::PAGE_TRANSITION_LINK); |
+ EXPECT_TRUE(context->activation_tracker()->HasActivatedWebContents()); |
+ browser()->tab_strip_model()->CloseSelectedTabs(); |
+ EXPECT_TRUE(context->activation_tracker()->HasActivatedWebContents()); |
+ |
+ // Go back to the original tab and navigate away. |
+ browser()->tab_strip_model()->ActivateTabAt(1, true /* user_gesture */); |
+ ui_test_utils::NavigateToURL(browser(), GURL("https://example.test")); |
+ EXPECT_FALSE(context->activation_tracker()->HasActivatedWebContents()); |
+ |
+ // Navigate once again, and close all the tabs. |
+ ui_test_utils::NavigateToURL(browser(), kActivatedUrl); |
+ EXPECT_TRUE(context->activation_tracker()->HasActivatedWebContents()); |
+ |
+ browser()->tab_strip_model()->CloseAllTabs(); |
+ EXPECT_FALSE(context->activation_tracker()->HasActivatedWebContents()); |
+} |
+ |
+// Dry run activation should not be tracked by that activation tracker. |
+IN_PROC_BROWSER_TEST_F(SubresourceFilterDryRunBrowserTest, |
+ DryRun_NoActivationTracking) { |
+ SetRulesetWithRules(std::vector<proto::UrlRule>()); |
+ SubresourceFilterProfileContext* context = |
+ SubresourceFilterProfileContextFactory::GetForProfile( |
+ browser()->profile()); |
+ |
+ const GURL kActivatedUrl = GetTestUrl(kTestFrameSetPath); |
+ ConfigureAsPhishingURL(kActivatedUrl); |
+ |
+ EXPECT_FALSE(context->activation_tracker()->HasActivatedWebContents()); |
+ ui_test_utils::NavigateToURL(browser(), kActivatedUrl); |
+ EXPECT_FALSE(context->activation_tracker()->HasActivatedWebContents()); |
+ |
+ // Add another tab with activation, but close it. |
+ AddTabAtIndex(0, kActivatedUrl, ui::PAGE_TRANSITION_LINK); |
+ EXPECT_FALSE(context->activation_tracker()->HasActivatedWebContents()); |
+ browser()->tab_strip_model()->CloseSelectedTabs(); |
+ EXPECT_FALSE(context->activation_tracker()->HasActivatedWebContents()); |
+} |
+ |
IN_PROC_BROWSER_TEST_P(SubresourceFilterWebSocketBrowserTest, BlockWebSocket) { |
GURL url(GetTestUrl( |
base::StringPrintf("subresource_filter/page_with_websocket.html?%s", |