// Copyright 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" #include "url/gurl.h" namespace { // This enum is used in building the histogram. So, this is append only, // any new scheme should be added at the end, before SCHEME_MAX enum Scheme { SCHEME_UNKNOWN, SCHEME_HTTP, SCHEME_HTTPS, SCHEME_FILE, SCHEME_FTP, SCHEME_DATA, SCHEME_JAVASCRIPT, SCHEME_ABOUT, SCHEME_CHROME, SCHEME_BLOB, SCHEME_MAX, }; const char* const kSchemeNames[] = { "unknown", url::kHttpScheme, url::kHttpsScheme, url::kFileScheme, url::kFtpScheme, url::kDataScheme, url::kJavaScriptScheme, url::kAboutScheme, "chrome", url::kBlobScheme, "max", }; static_assert(arraysize(kSchemeNames) == SCHEME_MAX + 1, "kSchemeNames should have SCHEME_MAX + 1 elements"); } // namespace namespace navigation_metrics { void RecordMainFrameNavigation(const GURL& url, bool is_in_page) { Scheme scheme = SCHEME_UNKNOWN; for (int i = 1; i < SCHEME_MAX; ++i) { if (url.SchemeIs(kSchemeNames[i])) { scheme = static_cast(i); break; } } UMA_HISTOGRAM_ENUMERATION("Navigation.MainFrameScheme", scheme, SCHEME_MAX); if (!is_in_page) { UMA_HISTOGRAM_ENUMERATION( "Navigation.MainFrameSchemeDifferentPage", scheme, SCHEME_MAX); } } } // namespace navigation_metrics