Index: ash/metrics/user_metrics_recorder.cc |
diff --git a/ash/metrics/user_metrics_recorder.cc b/ash/metrics/user_metrics_recorder.cc |
index cfc4d8ee16d4a79a28fe463ce86ff38e8f60b497..8229039ea3e29e54e364fd0f4d36a715d7ee82de 100644 |
--- a/ash/metrics/user_metrics_recorder.cc |
+++ b/ash/metrics/user_metrics_recorder.cc |
@@ -4,6 +4,7 @@ |
#include "ash/metrics/user_metrics_recorder.h" |
+#include "ash/metrics/desktop_task_switch_metric_recorder.h" |
#include "ash/session/session_state_delegate.h" |
#include "ash/shelf/shelf_delegate.h" |
#include "ash/shelf/shelf_item_types.h" |
@@ -236,6 +237,11 @@ void UserMetricsRecorder::RecordUserMetricsAction(UserMetricsAction action) { |
case ash::UMA_CLOSE_THROUGH_CONTEXT_MENU: |
base::RecordAction(base::UserMetricsAction("CloseFromContextMenu")); |
break; |
+ case ash::UMA_DESKTOP_SWITCH_TASK: |
+ base::RecordAction(base::UserMetricsAction("Desktop_SwitchTask")); |
+ task_switch_metrics_recorder_.OnTaskSwitch( |
+ TaskSwitchMetricsRecorder::kDesktop); |
+ break; |
case ash::UMA_DRAG_MAXIMIZE_LEFT: |
base::RecordAction(base::UserMetricsAction("WindowDrag_MaximizeLeft")); |
break; |
@@ -598,6 +604,19 @@ void UserMetricsRecorder::RecordUserMetricsAction(UserMetricsAction action) { |
} |
} |
+void UserMetricsRecorder::OnShellInitialized() { |
+ // Lazy creation of the DesktopTaskSwitchMetricRecorder because it accesses |
+ // Shell::GetInstance() which is not available when |this| is instantiated. |
+ if (!desktop_task_switch_metric_recorder_) { |
+ desktop_task_switch_metric_recorder_.reset( |
+ new DesktopTaskSwitchMetricRecorder()); |
+ } |
+} |
+ |
+void UserMetricsRecorder::OnShellShuttingDown() { |
+ desktop_task_switch_metric_recorder_.reset(); |
+} |
+ |
void UserMetricsRecorder::RecordPeriodicMetrics() { |
ShelfLayoutManager* manager = |
ShelfLayoutManager::ForShelf(Shell::GetPrimaryRootWindow()); |