summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorholte <holte@chromium.org>2015-02-20 12:31:08 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-20 20:32:03 +0000
commit9f9f038ba648fa01256edba94cb23bd23dbf9136 (patch)
treeee7bb31e9e25747e24912e3b28b8159583c1fe1c
parent30d4c2223ff7482572ecbb1269083b58e4d90fb9 (diff)
downloadchromium_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.cc9
-rw-r--r--chrome/browser/metrics/rappor/sampling.cc5
-rw-r--r--chrome/browser/metrics/rappor/sampling_unittest.cc12
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,