15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/tab_contents/navigation_metrics_recorder.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/metrics/histogram.h" 81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "components/navigation_metrics/navigation_metrics.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_details.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_entry.h" 118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "content/public/browser/render_view_host.h" 128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "content/public/browser/render_widget_host_view.h" 138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(OS_WIN) 158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "base/win/windows_version.h" 168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/metro_utils/metro_chrome_win.h" 178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DEFINE_WEB_CONTENTS_USER_DATA_KEY(NavigationMetricsRecorder); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NavigationMetricsRecorder::NavigationMetricsRecorder( 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WebContents* web_contents) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : content::WebContentsObserver(web_contents) { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)NavigationMetricsRecorder::~NavigationMetricsRecorder() { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void NavigationMetricsRecorder::DidNavigateMainFrame( 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::LoadCommittedDetails& details, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::FrameNavigateParams& params) { 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) navigation_metrics::RecordMainFrameNavigation(details.entry->GetVirtualURL()); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)void NavigationMetricsRecorder::DidStartLoading( 368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) content::RenderViewHost* render_view_host) { 378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if defined(OS_WIN) && defined(USE_ASH) 38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch if (render_view_host && base::win::GetVersion() >= base::win::VERSION_WIN8) { 39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch content::RenderWidgetHostView* rwhv = render_view_host->GetView(); 40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch if (rwhv) { 41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch gfx::NativeView native_view = rwhv->GetNativeView(); 42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch if (native_view) { 43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch chrome::HostDesktopType desktop = 44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch chrome::GetHostDesktopTypeForNativeView(native_view); 45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch UMA_HISTOGRAM_ENUMERATION("Win8.PageLoad", 46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch chrome::GetWin8Environment(desktop), 47a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch chrome::WIN_8_ENVIRONMENT_MAX); 48a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif 528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 55