11e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// found in the LICENSE file. 41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 51e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "components/navigation_metrics/navigation_metrics.h" 61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/metrics/histogram.h" 81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "url/gurl.h" 91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace { 111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)enum Scheme { 131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_UNKNOWN, 141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_HTTP, 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_HTTPS, 161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_FILE, 171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_FTP, 181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_DATA, 191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_JAVASCRIPT, 201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_ABOUT, 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_CHROME, 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) SCHEME_MAX, 231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}; 241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)static const char* kSchemeNames[] = { 261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "unknown", 271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "http", 281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "https", 291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "file", 301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "ftp", 311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "data", 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "javascript", 331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "about", 341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "chrome", 351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "max", 361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}; 371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)COMPILE_ASSERT(arraysize(kSchemeNames) == SCHEME_MAX + 1, 391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NavigationMetricsRecorder_name_count_mismatch); 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} // namespace 421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace navigation_metrics { 441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void RecordMainFrameNavigation(const GURL& url) { 461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) Scheme scheme = SCHEME_UNKNOWN; 471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) for (int i = 1; i < SCHEME_MAX; ++i) { 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (url.SchemeIs(kSchemeNames[i])) { 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) scheme = static_cast<Scheme>(i); 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) break; 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) UMA_HISTOGRAM_ENUMERATION( 541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) "Navigation.MainFrameScheme", scheme, SCHEME_MAX); 551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} // namespace navigation_metrics 58