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