1// Copyright (c) 2012 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 "chrome/browser/tab_contents/navigation_metrics_recorder.h" 6 7#include "base/metrics/histogram.h" 8#include "components/navigation_metrics/navigation_metrics.h" 9#include "content/public/browser/navigation_details.h" 10#include "content/public/browser/navigation_entry.h" 11#include "content/public/browser/render_view_host.h" 12#include "content/public/browser/render_widget_host_view.h" 13 14#if defined(OS_WIN) 15#include "base/win/windows_version.h" 16#include "chrome/browser/metro_utils/metro_chrome_win.h" 17#endif 18 19DEFINE_WEB_CONTENTS_USER_DATA_KEY(NavigationMetricsRecorder); 20 21NavigationMetricsRecorder::NavigationMetricsRecorder( 22 content::WebContents* web_contents) 23 : content::WebContentsObserver(web_contents) { 24} 25 26NavigationMetricsRecorder::~NavigationMetricsRecorder() { 27} 28 29void NavigationMetricsRecorder::DidNavigateMainFrame( 30 const content::LoadCommittedDetails& details, 31 const content::FrameNavigateParams& params) { 32 navigation_metrics::RecordMainFrameNavigation(details.entry->GetVirtualURL()); 33} 34 35void NavigationMetricsRecorder::DidStartLoading( 36 content::RenderViewHost* render_view_host) { 37#if defined(OS_WIN) && defined(USE_ASH) 38 if (render_view_host && base::win::GetVersion() >= base::win::VERSION_WIN8) { 39 content::RenderWidgetHostView* rwhv = render_view_host->GetView(); 40 if (rwhv) { 41 gfx::NativeView native_view = rwhv->GetNativeView(); 42 if (native_view) { 43 chrome::HostDesktopType desktop = 44 chrome::GetHostDesktopTypeForNativeView(native_view); 45 UMA_HISTOGRAM_ENUMERATION("Win8.PageLoad", 46 chrome::GetWin8Environment(desktop), 47 chrome::WIN_8_ENVIRONMENT_MAX); 48 } 49 } 50 } 51#endif 52} 53 54 55