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 19 DEFINE_WEB_CONTENTS_USER_DATA_KEY(NavigationMetricsRecorder); 20 21 NavigationMetricsRecorder::NavigationMetricsRecorder( 22 content::WebContents* web_contents) 23 : content::WebContentsObserver(web_contents) { 24 } 25 26 NavigationMetricsRecorder::~NavigationMetricsRecorder() { 27 } 28 29 void NavigationMetricsRecorder::DidNavigateMainFrame( 30 const content::LoadCommittedDetails& details, 31 const content::FrameNavigateParams& params) { 32 navigation_metrics::RecordMainFrameNavigation(details.entry->GetVirtualURL()); 33 } 34 35 void 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