Index: components/navigation_metrics/navigation_metrics.cc |
diff --git a/components/navigation_metrics/navigation_metrics.cc b/components/navigation_metrics/navigation_metrics.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cd398f699ec5b2a0c4c9b62bcccffcea1e750a19 |
--- /dev/null |
+++ b/components/navigation_metrics/navigation_metrics.cc |
@@ -0,0 +1,56 @@ |
+// Copyright (c) 2013 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/navigation_metrics/navigation_metrics.h" |
+ |
+#include "base/metrics/histogram.h" |
+ |
+namespace { |
+ |
+enum Scheme { |
+ SCHEME_UNKNOWN, |
+ SCHEME_HTTP, |
+ SCHEME_HTTPS, |
+ SCHEME_FILE, |
+ SCHEME_FTP, |
+ SCHEME_DATA, |
+ SCHEME_JAVASCRIPT, |
+ SCHEME_ABOUT, |
+ SCHEME_CHROME, |
+ SCHEME_MAX, |
+}; |
+ |
+static const char* kSchemeNames[] = { |
+ "unknown", |
+ "http", |
+ "https", |
+ "file", |
+ "ftp", |
+ "data", |
+ "javascript", |
+ "about", |
+ "chrome", |
+ "max", |
+}; |
+ |
+COMPILE_ASSERT(arraysize(kSchemeNames) == SCHEME_MAX + 1, |
+ NavigationMetricsRecorder_name_count_mismatch); |
+ |
+} // namespace |
+ |
+namespace navigation_metrics { |
+ |
+void RecordMainFrameNavigation(const GURL& url) { |
+ Scheme scheme = SCHEME_UNKNOWN; |
+ for (int i = 1; i < SCHEME_MAX; ++i) { |
+ if (url.SchemeIs(kSchemeNames[i])) { |
+ scheme = static_cast<Scheme>(i); |
+ break; |
+ } |
+ } |
+ UMA_HISTOGRAM_ENUMERATION( |
+ "Navigation.MainFrameScheme", scheme, SCHEME_MAX); |
+} |
+ |
+} // namespace navigation_metrics |