1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/metrics/rappor/sampling.h" 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/browser_process.h" 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/rappor/rappor_service.h" 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "net/base/registry_controlled_domains/registry_controlled_domain.h" 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "url/gurl.h" 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace rappor { 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)std::string GetDomainAndRegistrySampleFromGURL(const GURL& gurl) { 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (gurl.SchemeIsHTTPOrHTTPS()) { 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return net::registry_controlled_domains::GetDomainAndRegistry( 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) gurl, net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (gurl.SchemeIsFile()) 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return gurl.scheme() + "://"; 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return gurl.scheme() + "://" + gurl.host(); 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void SampleDomainAndRegistryFromGURL(const std::string& metric, 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const GURL& gurl) { 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (!g_browser_process->rappor_service()) 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return; 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) g_browser_process->rappor_service()->RecordSample( 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) metric, 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) rappor::ETLD_PLUS_ONE_RAPPOR_TYPE, 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) GetDomainAndRegistrySampleFromGURL(gurl)); 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace rappor 35