Index: chrome/browser/ui/ash/metrics/user_metrics_recorder_proxy.cc |
diff --git a/chrome/browser/ui/ash/metrics/user_metrics_recorder_proxy.cc b/chrome/browser/ui/ash/metrics/user_metrics_recorder_proxy.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..69bb08962fdd7088e48ab13874950040a5e5d4a2 |
--- /dev/null |
+++ b/chrome/browser/ui/ash/metrics/user_metrics_recorder_proxy.cc |
@@ -0,0 +1,51 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/ui/ash/metrics/user_metrics_recorder_proxy.h" |
+ |
+#include "ash/metrics/task_switch_metrics_recorder.h" |
+#include "ash/metrics/user_metrics_recorder.h" |
+#include "ash/shell.h" |
+#include "base/logging.h" |
+#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/browser_list.h" |
+#include "chrome/browser/ui/tabs/tab_strip_model.h" |
+ |
+namespace ash { |
+ |
+UserMetricsRecorderProxy::UserMetricsRecorderProxy() { |
+ BrowserList::AddObserver(this); |
+} |
+ |
+UserMetricsRecorderProxy::~UserMetricsRecorderProxy() { |
+ BrowserList::RemoveObserver(this); |
+} |
+ |
+void UserMetricsRecorderProxy::OnBrowserAdded(Browser* browser) { |
+ browser->tab_strip_model()->AddObserver(this); |
+} |
+ |
+void UserMetricsRecorderProxy::OnBrowserRemoved(Browser* browser) { |
+ browser->tab_strip_model()->RemoveObserver(this); |
+} |
+ |
+void UserMetricsRecorderProxy::ActiveTabChanged( |
+ content::WebContents* old_contents, |
+ content::WebContents* new_contents, |
+ int index, |
+ int reason) { |
+ if (reason & CHANGE_REASON_USER_GESTURE) { |
+ OnTabSwitchedByUserGesture(); |
+ } |
+} |
+ |
+void UserMetricsRecorderProxy::OnTabSwitchedByUserGesture() { |
+ CHECK(ash::Shell::HasInstance()); |
+ ash::Shell::GetInstance() |
+ ->metrics() |
+ ->task_switch_metrics_recorder() |
+ .OnTaskSwitch(ash::TaskSwitchMetricsRecorder::kTabStrip); |
+} |
+ |
+} // namespace ash |