Home | History | Annotate | Download | only in navigation_metrics
      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 
     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