Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3307)

Unified Diff: chrome/browser/subresource_filter/subresource_filter_browsertest.cc

Issue 2645283007: Add the client for accessing Subresource Filter only list. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 44d5dd81f66e6d9c730c2949fc8ddcbbb32cb367..4efabaa6e12bb231a39c718e24bc69d72d784848 100644
--- a/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_browsertest.cc
@@ -90,10 +90,34 @@ constexpr const char kEvaluationWallDuration[] =
constexpr const char kEvaluationCPUDuration[] =
"SubresourceFilter.SubresourceLoad.Evaluation.CPUDuration";
+// Names of navigation chain patterns diagram.
+const char kMatchesPatternHistogramName[] =
+ "SubresourceFilter.PageLoad.RedirectChainMatchPattern";
+const char kNavigationChainSize[] =
+ "SubresourceFilter.PageLoad.RedirectChainLength";
+const char kSubresourceFilterOnlySuffix[] = ".SubresourceFilterOnly";
+
// Other histograms.
const char kSubresourceFilterPromptHistogram[] =
"SubresourceFilter.Prompt.NumVisibility";
+// Human readable representation of expected redirect chain match patterns.
+// The explanations for the buckets given for the following redirect chain:
+// A->B->C->D, where A is initial URL and D is a final URL.
+enum RedirectChainMatchPattern {
+ EMPTY, // No histograms were recorded.
+ F0M0L1, // D is a Safe Browsing match.
+ F0M1L0, // B or C, or both are Safe Browsing matches.
+ F0M1L1, // B or C, or both and D are Safe Browsing matches.
+ F1M0L0, // A is Safe Browsing match
+ F1M0L1, // A and D are Safe Browsing matches.
+ F1M1L0, // B and/or C and A are Safe Browsing matches.
+ F1M1L1, // B and/or C and A and D are Safe Browsing matches.
+ NO_REDIRECTS_HIT, // Redirect chain consists of single URL, aka no redirects
+ // has happened, and this URL was a Safe Browsing hit.
+ NUM_HIT_PATTERNS,
+};
+
// Database manager that allows any URL to be configured as blacklisted for
// testing.
class FakeSafeBrowsingDatabaseManager
@@ -125,6 +149,17 @@ class FakeSafeBrowsingDatabaseManager
return true;
}
+ bool CheckUrlForSubresourceFilter(const GURL& url, Client* client) override {
+ if (!url_to_threat_type_.count(url))
+ return true;
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO, FROM_HERE,
+ base::Bind(&Client::OnCheckBrowseUrlResult, base::Unretained(client),
+ url, url_to_threat_type_[url],
+ safe_browsing::ThreatMetadata()));
+ return false;
+ }
+
bool IsSupported() const override { return true; }
bool ChecksAreAlwaysAsync() const override { return false; }
bool CanCheckResourceType(
@@ -217,8 +252,10 @@ class SubresourceFilterBrowserTestImpl : public InProcessBrowserTest {
// As a workaround, enable the feature here, then enable the feature once
// again + set up the field trials later.
void SetUpCommandLine(base::CommandLine* command_line) override {
- command_line->AppendSwitchASCII(switches::kEnableFeatures,
- kSafeBrowsingSubresourceFilter.name);
+ command_line->AppendSwitchASCII(
+ switches::kEnableFeatures,
+ std::string(kSafeBrowsingSubresourceFilter.name) +
+ ", SafeBrowsingV4OnlyEnabled");
}
void SetUpInProcessBrowserTestFixture() override {
@@ -254,6 +291,11 @@ class SubresourceFilterBrowserTestImpl : public InProcessBrowserTest {
url, safe_browsing::SB_THREAT_TYPE_URL_PHISHING);
}
+ void ConfigureAsSubresourceFilterOnlyURL(const GURL& url) {
+ fake_safe_browsing_database_->AddBlacklistedURL(
+ url, safe_browsing::SB_THREAT_TYPE_SUBRESOURCE_FILTER);
+ }
+
content::WebContents* web_contents() {
return browser()->tab_strip_model()->GetActiveWebContents();
}
@@ -726,4 +768,73 @@ IN_PROC_BROWSER_TEST_F(SubresourceFilterBrowserTest,
static_cast<base::Histogram::Sample>(ActivationState::DISABLED), 6);
}
+IN_PROC_BROWSER_TEST_F(
+ SubresourceFilterBrowserTest,
+ ExpectRedirectPatternHistogramsAreRecordedForSubresourceFilterOnlyMatch) {
+ ASSERT_NO_FATAL_FAILURE(SetRulesetToDisallowURLsWithPathSuffix(
+ "suffix-that-does-not-match-anything"));
+
+ GURL url(GetTestUrl("subresource_filter/frame_with_included_script.html"));
+ ConfigureAsSubresourceFilterOnlyURL(url);
+
+ base::HistogramTester tester;
+ ui_test_utils::NavigateToURL(browser(), url);
+
+ EXPECT_THAT(tester.GetAllSamples(std::string(kMatchesPatternHistogramName) +
+ std::string(kSubresourceFilterOnlySuffix)),
+ ::testing::ElementsAre(base::Bucket(NO_REDIRECTS_HIT, 1)));
+ EXPECT_THAT(tester.GetAllSamples(std::string(kNavigationChainSize) +
+ std::string(kSubresourceFilterOnlySuffix)),
+ ::testing::ElementsAre(base::Bucket(1, 1)));
+}
+
+IN_PROC_BROWSER_TEST_F(
+ SubresourceFilterBrowserTest,
+ ExpectRedirectPatternHistogramsAreRecordedForSubresourceFilterOnlyWithRedirects) {
+ ASSERT_NO_FATAL_FAILURE(
+ SetRulesetToDisallowURLsWithPathSuffix("included_script.js"));
+ std::string initial_host("a.com");
+ std::string redirected_host("b.com");
+
+ GURL redirect_url(embedded_test_server()->GetURL(redirected_host, "/"));
+ GURL url(embedded_test_server()->GetURL(
+ initial_host, "/client-redirect?" + redirect_url.spec()));
+
+ ConfigureAsSubresourceFilterOnlyURL(redirect_url);
+ base::HistogramTester tester;
+ ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), url, 2);
+ EXPECT_THAT(tester.GetAllSamples(std::string(kMatchesPatternHistogramName) +
+ std::string(kSubresourceFilterOnlySuffix)),
+ ::testing::ElementsAre(base::Bucket(NO_REDIRECTS_HIT, 1)));
+
+ EXPECT_THAT(tester.GetAllSamples(std::string(kNavigationChainSize) +
+ std::string(kSubresourceFilterOnlySuffix)),
+ ::testing::ElementsAre(base::Bucket(1, 1)));
+}
+
+IN_PROC_BROWSER_TEST_F(
+ SubresourceFilterBrowserTest,
+ ExpectRedirectPatternHistogramsAreRecordedForSubresourceFilterOnlyRedirectMatch) {
+ ASSERT_NO_FATAL_FAILURE(
+ SetRulesetToDisallowURLsWithPathSuffix("included_script.js"));
+ std::string initial_host("a.com");
+ std::string redirected_host("b.com");
+
+ GURL redirect_url(embedded_test_server()->GetURL(
+ redirected_host, "/subresource_filter/frame_with_included_script.html"));
+ GURL url(embedded_test_server()->GetURL(
+ initial_host, "/client-redirect?" + redirect_url.spec()));
+
+ ConfigureAsSubresourceFilterOnlyURL(GURL(url.host()));
+ base::HistogramTester tester;
+ ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), url, 2);
+ EXPECT_THAT(tester.GetAllSamples(std::string(kMatchesPatternHistogramName) +
+ std::string(kSubresourceFilterOnlySuffix)),
+ ::testing::IsEmpty());
+
+ EXPECT_THAT(tester.GetAllSamples(std::string(kNavigationChainSize) +
+ std::string(kSubresourceFilterOnlySuffix)),
+ ::testing::IsEmpty());
+}
+
} // namespace subresource_filter

Powered by Google App Engine
This is Rietveld 408576698