// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/rappor/rappor_utils.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" namespace rappor { void SampleString(RapporService* rappor_service, const std::string& metric, RapporType type, const std::string& sample) { if (!rappor_service) return; rappor_service->RecordSample(metric, type, sample); } 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); } if (gurl.SchemeIsFile()) return gurl.scheme() + "://"; return gurl.scheme() + "://" + gurl.host(); } void SampleDomainAndRegistryFromGURL(RapporService* rappor_service, const std::string& metric, const GURL& gurl) { if (!rappor_service) return; rappor_service->RecordSample( metric, rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, GetDomainAndRegistrySampleFromGURL(gurl)); } } // namespace rappor