• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/navigation_metrics/navigation_metrics.h"
6 
7 #include "base/metrics/histogram.h"
8 #include "url/gurl.h"
9 
10 namespace {
11 
12 enum Scheme {
13   SCHEME_UNKNOWN,
14   SCHEME_HTTP,
15   SCHEME_HTTPS,
16   SCHEME_FILE,
17   SCHEME_FTP,
18   SCHEME_DATA,
19   SCHEME_JAVASCRIPT,
20   SCHEME_ABOUT,
21   SCHEME_CHROME,
22   SCHEME_MAX,
23 };
24 
25 static const char* kSchemeNames[] = {
26   "unknown",
27   "http",
28   "https",
29   "file",
30   "ftp",
31   "data",
32   "javascript",
33   "about",
34   "chrome",
35   "max",
36 };
37 
38 COMPILE_ASSERT(arraysize(kSchemeNames) == SCHEME_MAX + 1,
39                NavigationMetricsRecorder_name_count_mismatch);
40 
41 }  // namespace
42 
43 namespace navigation_metrics {
44 
RecordMainFrameNavigation(const GURL & url)45 void RecordMainFrameNavigation(const GURL& url) {
46   Scheme scheme = SCHEME_UNKNOWN;
47   for (int i = 1; i < SCHEME_MAX; ++i) {
48     if (url.SchemeIs(kSchemeNames[i])) {
49       scheme = static_cast<Scheme>(i);
50       break;
51     }
52   }
53   UMA_HISTOGRAM_ENUMERATION(
54       "Navigation.MainFrameScheme", scheme, SCHEME_MAX);
55 }
56 
57 }  // namespace navigation_metrics
58