| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/metrics/task_switch_metrics_recorder.h" | 5 #include "ash/metrics/task_switch_metrics_recorder.h" |
| 6 | 6 |
| 7 #include "ash/metrics/task_switch_time_tracker.h" | 7 #include "ash/metrics/task_switch_time_tracker.h" |
| 8 | 8 |
| 9 namespace ash { | 9 namespace ash { |
| 10 | 10 |
| 11 namespace { | 11 namespace { |
| 12 | 12 |
| 13 const char kAshTaskSwitchHistogramName[] = "Ash.TimeBetweenTaskSwitches"; |
| 14 |
| 13 const char kDesktopHistogramName[] = | 15 const char kDesktopHistogramName[] = |
| 14 "Ash.Desktop.TimeBetweenNavigateToTaskSwitches"; | 16 "Ash.Desktop.TimeBetweenNavigateToTaskSwitches"; |
| 15 | 17 |
| 16 const char kShelfHistogramName[] = | 18 const char kShelfHistogramName[] = |
| 17 "Ash.Shelf.TimeBetweenNavigateToTaskSwitches"; | 19 "Ash.Shelf.TimeBetweenNavigateToTaskSwitches"; |
| 18 | 20 |
| 19 const char kTabStripHistogramName[] = | 21 const char kTabStripHistogramName[] = |
| 20 "Ash.Tab.TimeBetweenSwitchToExistingTabUserActions"; | 22 "Ash.Tab.TimeBetweenSwitchToExistingTabUserActions"; |
| 21 | 23 |
| 22 const char kAcceleratorWindowCycleHistogramName[] = | 24 const char kAcceleratorWindowCycleHistogramName[] = |
| 23 "Ash.WindowCycleController.TimeBetweenTaskSwitches"; | 25 "Ash.WindowCycleController.TimeBetweenTaskSwitches"; |
| 24 | 26 |
| 25 const char kAppListHistogramName[] = "Ash.AppList.TimeBetweenTaskSwitches"; | 27 const char kAppListHistogramName[] = "Ash.AppList.TimeBetweenTaskSwitches"; |
| 26 | 28 |
| 27 const char kOverviewModeHistogramName[] = | 29 const char kOverviewModeHistogramName[] = |
| 28 "Ash.WindowSelector.TimeBetweenActiveWindowChanges"; | 30 "Ash.WindowSelector.TimeBetweenActiveWindowChanges"; |
| 29 | 31 |
| 30 // Returns the histogram name for the given |task_switch_source|. | 32 // Returns the histogram name for the given |task_switch_source|. |
| 31 const char* GetHistogramName( | 33 const char* GetHistogramName( |
| 32 TaskSwitchMetricsRecorder::TaskSwitchSource task_switch_source) { | 34 TaskSwitchMetricsRecorder::TaskSwitchSource task_switch_source) { |
| 33 switch (task_switch_source) { | 35 switch (task_switch_source) { |
| 36 case TaskSwitchMetricsRecorder::kAny: |
| 37 return kAshTaskSwitchHistogramName; |
| 34 case TaskSwitchMetricsRecorder::kAppList: | 38 case TaskSwitchMetricsRecorder::kAppList: |
| 35 return kAppListHistogramName; | 39 return kAppListHistogramName; |
| 36 case TaskSwitchMetricsRecorder::kDesktop: | 40 case TaskSwitchMetricsRecorder::kDesktop: |
| 37 return kDesktopHistogramName; | 41 return kDesktopHistogramName; |
| 38 case TaskSwitchMetricsRecorder::kOverviewMode: | 42 case TaskSwitchMetricsRecorder::kOverviewMode: |
| 39 return kOverviewModeHistogramName; | 43 return kOverviewModeHistogramName; |
| 40 case TaskSwitchMetricsRecorder::kShelf: | 44 case TaskSwitchMetricsRecorder::kShelf: |
| 41 return kShelfHistogramName; | 45 return kShelfHistogramName; |
| 42 case TaskSwitchMetricsRecorder::kTabStrip: | 46 case TaskSwitchMetricsRecorder::kTabStrip: |
| 43 return kTabStripHistogramName; | 47 return kTabStripHistogramName; |
| 44 case TaskSwitchMetricsRecorder::kWindowCycleController: | 48 case TaskSwitchMetricsRecorder::kWindowCycleController: |
| 45 return kAcceleratorWindowCycleHistogramName; | 49 return kAcceleratorWindowCycleHistogramName; |
| 46 } | 50 } |
| 47 NOTREACHED(); | 51 NOTREACHED(); |
| 48 return nullptr; | 52 return nullptr; |
| 49 } | 53 } |
| 50 | 54 |
| 51 } // namespace | 55 } // namespace |
| 52 | 56 |
| 53 TaskSwitchMetricsRecorder::TaskSwitchMetricsRecorder() { | 57 TaskSwitchMetricsRecorder::TaskSwitchMetricsRecorder() { |
| 54 } | 58 } |
| 55 | 59 |
| 56 TaskSwitchMetricsRecorder::~TaskSwitchMetricsRecorder() { | 60 TaskSwitchMetricsRecorder::~TaskSwitchMetricsRecorder() { |
| 57 } | 61 } |
| 58 | 62 |
| 59 void TaskSwitchMetricsRecorder::OnTaskSwitch( | 63 void TaskSwitchMetricsRecorder::OnTaskSwitch( |
| 60 TaskSwitchSource task_switch_source) { | 64 TaskSwitchSource task_switch_source) { |
| 65 DCHECK_NE(task_switch_source, kAny); |
| 66 if (task_switch_source != kAny) { |
| 67 OnTaskSwitchInternal(task_switch_source); |
| 68 OnTaskSwitchInternal(kAny); |
| 69 } |
| 70 } |
| 71 |
| 72 void TaskSwitchMetricsRecorder::OnTaskSwitchInternal( |
| 73 TaskSwitchSource task_switch_source) { |
| 61 TaskSwitchTimeTracker* task_switch_time_tracker = | 74 TaskSwitchTimeTracker* task_switch_time_tracker = |
| 62 FindTaskSwitchTimeTracker(task_switch_source); | 75 FindTaskSwitchTimeTracker(task_switch_source); |
| 63 if (!task_switch_time_tracker) | 76 if (!task_switch_time_tracker) |
| 64 AddTaskSwitchTimeTracker(task_switch_source); | 77 AddTaskSwitchTimeTracker(task_switch_source); |
| 65 | 78 |
| 66 task_switch_time_tracker = FindTaskSwitchTimeTracker(task_switch_source); | 79 task_switch_time_tracker = FindTaskSwitchTimeTracker(task_switch_source); |
| 67 CHECK(task_switch_time_tracker); | 80 CHECK(task_switch_time_tracker); |
| 68 | 81 |
| 69 task_switch_time_tracker->OnTaskSwitch(); | 82 task_switch_time_tracker->OnTaskSwitch(); |
| 70 } | 83 } |
| 71 | 84 |
| 72 TaskSwitchTimeTracker* TaskSwitchMetricsRecorder::FindTaskSwitchTimeTracker( | 85 TaskSwitchTimeTracker* TaskSwitchMetricsRecorder::FindTaskSwitchTimeTracker( |
| 73 TaskSwitchSource task_switch_source) { | 86 TaskSwitchSource task_switch_source) { |
| 74 return histogram_map_.get(task_switch_source); | 87 return histogram_map_.get(task_switch_source); |
| 75 } | 88 } |
| 76 | 89 |
| 77 void TaskSwitchMetricsRecorder::AddTaskSwitchTimeTracker( | 90 void TaskSwitchMetricsRecorder::AddTaskSwitchTimeTracker( |
| 78 TaskSwitchSource task_switch_source) { | 91 TaskSwitchSource task_switch_source) { |
| 79 CHECK(histogram_map_.find(task_switch_source) == histogram_map_.end()); | 92 CHECK(histogram_map_.find(task_switch_source) == histogram_map_.end()); |
| 80 | 93 |
| 81 const char* histogram_name = GetHistogramName(task_switch_source); | 94 const char* histogram_name = GetHistogramName(task_switch_source); |
| 82 DCHECK(histogram_name); | 95 DCHECK(histogram_name); |
| 83 | 96 |
| 84 histogram_map_.add( | 97 histogram_map_.add( |
| 85 task_switch_source, | 98 task_switch_source, |
| 86 make_scoped_ptr(new TaskSwitchTimeTracker(histogram_name))); | 99 make_scoped_ptr(new TaskSwitchTimeTracker(histogram_name))); |
| 87 } | 100 } |
| 88 | 101 |
| 89 } // namespace ash | 102 } // namespace ash |
| OLD | NEW |