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