diff options
author | holte <holte@chromium.org> | 2015-02-20 12:31:08 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-20 20:32:03 +0000 |
commit | 9f9f038ba648fa01256edba94cb23bd23dbf9136 (patch) | |
tree | ee7bb31e9e25747e24912e3b28b8159583c1fe1c | |
parent | 30d4c2223ff7482572ecbb1269083b58e4d90fb9 (diff) | |
download | chromium_src-9f9f038ba648fa01256edba94cb23bd23dbf9136.zip chromium_src-9f9f038ba648fa01256edba94cb23bd23dbf9136.tar.gz chromium_src-9f9f038ba648fa01256edba94cb23bd23dbf9136.tar.bz2 |
Identify localhost/ipaddress in RapporSamples
BUG=459419
Review URL: https://codereview.chromium.org/933853003
Cr-Commit-Position: refs/heads/master@{#317389}
-rw-r--r-- | chrome/browser/interstitials/security_interstitial_metrics_helper.cc | 9 | ||||
-rw-r--r-- | chrome/browser/metrics/rappor/sampling.cc | 5 | ||||
-rw-r--r-- | chrome/browser/metrics/rappor/sampling_unittest.cc | 12 |
3 files changed, 21 insertions, 5 deletions
diff --git a/chrome/browser/interstitials/security_interstitial_metrics_helper.cc b/chrome/browser/interstitials/security_interstitial_metrics_helper.cc index 322220e..2c7961b 100644 --- a/chrome/browser/interstitials/security_interstitial_metrics_helper.cc +++ b/chrome/browser/interstitials/security_interstitial_metrics_helper.cc @@ -10,6 +10,7 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/history/history_service.h" #include "chrome/browser/history/history_service_factory.h" +#include "chrome/browser/metrics/rappor/sampling.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/webdata/web_data_service_factory.h" #include "components/rappor/rappor_service.h" @@ -69,11 +70,9 @@ void SecurityInterstitialMetricsHelper::RecordUserDecision( rappor::RapporService* rappor_service = g_browser_process->rappor_service(); if (rappor_service && rappor_reporting_ == REPORT_RAPPOR && (decision == PROCEED || decision == DONT_PROCEED)) { - // |domain| will be empty for hosts w/o TLDs (localhost, ip addrs) - const std::string domain = - net::registry_controlled_domains::GetDomainAndRegistry( - request_url_, - net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); + // |domain| will be empty for hosts w/o TLDs + const std::string domain = rappor::GetDomainAndRegistrySampleFromGURL( + request_url_); // e.g. "interstitial.malware.domain" or "interstitial.ssl.domain" const std::string metric_name = diff --git a/chrome/browser/metrics/rappor/sampling.cc b/chrome/browser/metrics/rappor/sampling.cc index d5c01b3..1000098 100644 --- a/chrome/browser/metrics/rappor/sampling.cc +++ b/chrome/browser/metrics/rappor/sampling.cc @@ -6,6 +6,7 @@ #include "chrome/browser/browser_process.h" #include "components/rappor/rappor_service.h" +#include "net/base/net_util.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" #include "url/gurl.h" @@ -13,6 +14,10 @@ namespace rappor { std::string GetDomainAndRegistrySampleFromGURL(const GURL& gurl) { if (gurl.SchemeIsHTTPOrHTTPS()) { + if (net::IsLocalhost(gurl.host())) + return "localhost"; + if (gurl.HostIsIPAddress()) + return "ip_address"; return net::registry_controlled_domains::GetDomainAndRegistry( gurl, net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); } diff --git a/chrome/browser/metrics/rappor/sampling_unittest.cc b/chrome/browser/metrics/rappor/sampling_unittest.cc index fdaa1ab..6cb1071 100644 --- a/chrome/browser/metrics/rappor/sampling_unittest.cc +++ b/chrome/browser/metrics/rappor/sampling_unittest.cc @@ -19,6 +19,18 @@ TEST(RapporSamplingTest, GetDomainAndRegistrySampleFromGURLTest) { GURL("chrome-extension://abc1234/foo.html"))); EXPECT_EQ("chrome-search://local-ntp", GetDomainAndRegistrySampleFromGURL( GURL("chrome-search://local-ntp/local-ntp.html"))); + EXPECT_EQ("localhost", GetDomainAndRegistrySampleFromGURL( + GURL("http://localhost:8000/foo.html"))); + EXPECT_EQ("localhost", GetDomainAndRegistrySampleFromGURL( + GURL("http://127.0.0.1/foo.html"))); + EXPECT_EQ("ip_address", GetDomainAndRegistrySampleFromGURL( + GURL("http://192.168.0.1/foo.html"))); + EXPECT_EQ("ip_address", GetDomainAndRegistrySampleFromGURL( + GURL("http://[2001:db8::1]/"))); + EXPECT_EQ("", GetDomainAndRegistrySampleFromGURL( + GURL("http://www/"))); + EXPECT_EQ("www.corp", GetDomainAndRegistrySampleFromGURL( + GURL("http://www.corp/"))); } // Make sure recording a sample during tests, when the Rappor service is NULL, |