| 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",
|
|
|