- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / tab_contents / navigation_metrics_recorder.cc
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 (base::win::GetVersion() >= base::win::VERSION_WIN8) {
39     gfx::NativeView view = render_view_host->GetView()->GetNativeView();
40     if (view) {
41       chrome::HostDesktopType desktop =
42           chrome::GetHostDesktopTypeForNativeView(view);
43       UMA_HISTOGRAM_ENUMERATION("Win8.PageLoad",
44                                 chrome::GetWin8Environment(desktop),
45                                 chrome::WIN_8_ENVIRONMENT_MAX);
46     }
47   }
48 #endif
49 }
50
51