| 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 kShelfHistogramName[] = | 15 const char kShelfHistogramName[] = |
| 14 "Ash.Shelf.TimeBetweenNavigateToTaskSwitches"; | 16 "Ash.Shelf.TimeBetweenNavigateToTaskSwitches"; |
| 15 | 17 |
| 16 const char kTabStripHistogramName[] = | 18 const char kTabStripHistogramName[] = |
| 17 "Ash.Tab.TimeBetweenSwitchToExistingTabUserActions"; | 19 "Ash.Tab.TimeBetweenSwitchToExistingTabUserActions"; |
| 18 | 20 |
| 19 const char kAcceleratorWindowCycleHistogramName[] = | 21 const char kAcceleratorWindowCycleHistogramName[] = |
| 20 "Ash.WindowCycleController.TimeBetweenTaskSwitches"; | 22 "Ash.WindowCycleController.TimeBetweenTaskSwitches"; |
| 21 | 23 |
| 22 const char kAppListHistogramName[] = "Ash.AppList.TimeBetweenTaskSwitches"; | 24 const char kAppListHistogramName[] = "Ash.AppList.TimeBetweenTaskSwitches"; |
| 23 | 25 |
| 24 const char kOverviewModeHistogramName[] = | 26 const char kOverviewModeHistogramName[] = |
| 25 "Ash.WindowSelector.TimeBetweenActiveWindowChanges"; | 27 "Ash.WindowSelector.TimeBetweenActiveWindowChanges"; |
| 26 | 28 |
| 27 // Returns the histogram name for the given |task_switch_source|. | 29 // Returns the histogram name for the given |task_switch_source|. |
| 28 const char* GetHistogramName( | 30 const char* GetHistogramName( |
| 29 TaskSwitchMetricsRecorder::TaskSwitchSource task_switch_source) { | 31 TaskSwitchMetricsRecorder::TaskSwitchSource task_switch_source) { |
| 30 switch (task_switch_source) { | 32 switch (task_switch_source) { |
| 33 case TaskSwitchMetricsRecorder::kAny: |
| 34 return kAshTaskSwitchHistogramName; |
| 31 case TaskSwitchMetricsRecorder::kAppList: | 35 case TaskSwitchMetricsRecorder::kAppList: |
| 32 return kAppListHistogramName; | 36 return kAppListHistogramName; |
| 33 case TaskSwitchMetricsRecorder::kOverviewMode: | 37 case TaskSwitchMetricsRecorder::kOverviewMode: |
| 34 return kOverviewModeHistogramName; | 38 return kOverviewModeHistogramName; |
| 35 case TaskSwitchMetricsRecorder::kShelf: | 39 case TaskSwitchMetricsRecorder::kShelf: |
| 36 return kShelfHistogramName; | 40 return kShelfHistogramName; |
| 37 case TaskSwitchMetricsRecorder::kTabStrip: | 41 case TaskSwitchMetricsRecorder::kTabStrip: |
| 38 return kTabStripHistogramName; | 42 return kTabStripHistogramName; |
| 39 case TaskSwitchMetricsRecorder::kWindowCycleController: | 43 case TaskSwitchMetricsRecorder::kWindowCycleController: |
| 40 return kAcceleratorWindowCycleHistogramName; | 44 return kAcceleratorWindowCycleHistogramName; |
| 41 } | 45 } |
| 42 NOTREACHED(); | 46 NOTREACHED(); |
| 43 return nullptr; | 47 return nullptr; |
| 44 } | 48 } |
| 45 | 49 |
| 46 } // namespace | 50 } // namespace |
| 47 | 51 |
| 48 TaskSwitchMetricsRecorder::TaskSwitchMetricsRecorder() { | 52 TaskSwitchMetricsRecorder::TaskSwitchMetricsRecorder() { |
| 49 } | 53 } |
| 50 | 54 |
| 51 TaskSwitchMetricsRecorder::~TaskSwitchMetricsRecorder() { | 55 TaskSwitchMetricsRecorder::~TaskSwitchMetricsRecorder() { |
| 52 } | 56 } |
| 53 | 57 |
| 54 void TaskSwitchMetricsRecorder::OnTaskSwitch( | 58 void TaskSwitchMetricsRecorder::OnTaskSwitch( |
| 55 TaskSwitchSource task_switch_source) { | 59 TaskSwitchSource task_switch_source) { |
| 60 DCHECK_NE(task_switch_source, kAny); |
| 61 if (task_switch_source != kAny) { |
| 62 OnTaskSwitchInternal(task_switch_source); |
| 63 OnTaskSwitchInternal(kAny); |
| 64 } |
| 65 } |
| 66 |
| 67 void TaskSwitchMetricsRecorder::OnTaskSwitchInternal( |
| 68 TaskSwitchSource task_switch_source) { |
| 56 TaskSwitchTimeTracker* task_switch_time_tracker = | 69 TaskSwitchTimeTracker* task_switch_time_tracker = |
| 57 FindTaskSwitchTimeTracker(task_switch_source); | 70 FindTaskSwitchTimeTracker(task_switch_source); |
| 58 if (!task_switch_time_tracker) | 71 if (!task_switch_time_tracker) |
| 59 AddTaskSwitchTimeTracker(task_switch_source); | 72 AddTaskSwitchTimeTracker(task_switch_source); |
| 60 | 73 |
| 61 task_switch_time_tracker = FindTaskSwitchTimeTracker(task_switch_source); | 74 task_switch_time_tracker = FindTaskSwitchTimeTracker(task_switch_source); |
| 62 CHECK(task_switch_time_tracker); | 75 CHECK(task_switch_time_tracker); |
| 63 | 76 |
| 64 task_switch_time_tracker->OnTaskSwitch(); | 77 task_switch_time_tracker->OnTaskSwitch(); |
| 65 } | 78 } |
| 66 | 79 |
| 67 TaskSwitchTimeTracker* TaskSwitchMetricsRecorder::FindTaskSwitchTimeTracker( | 80 TaskSwitchTimeTracker* TaskSwitchMetricsRecorder::FindTaskSwitchTimeTracker( |
| 68 TaskSwitchSource task_switch_source) { | 81 TaskSwitchSource task_switch_source) { |
| 69 return histogram_map_.get(task_switch_source); | 82 return histogram_map_.get(task_switch_source); |
| 70 } | 83 } |
| 71 | 84 |
| 72 void TaskSwitchMetricsRecorder::AddTaskSwitchTimeTracker( | 85 void TaskSwitchMetricsRecorder::AddTaskSwitchTimeTracker( |
| 73 TaskSwitchSource task_switch_source) { | 86 TaskSwitchSource task_switch_source) { |
| 74 CHECK(histogram_map_.find(task_switch_source) == histogram_map_.end()); | 87 CHECK(histogram_map_.find(task_switch_source) == histogram_map_.end()); |
| 75 | 88 |
| 76 const char* histogram_name = GetHistogramName(task_switch_source); | 89 const char* histogram_name = GetHistogramName(task_switch_source); |
| 77 DCHECK(histogram_name); | 90 DCHECK(histogram_name); |
| 78 | 91 |
| 79 histogram_map_.add( | 92 histogram_map_.add( |
| 80 task_switch_source, | 93 task_switch_source, |
| 81 make_scoped_ptr(new TaskSwitchTimeTracker(histogram_name))); | 94 make_scoped_ptr(new TaskSwitchTimeTracker(histogram_name))); |
| 82 } | 95 } |
| 83 | 96 |
| 84 } // namespace ash | 97 } // namespace ash |
| OLD | NEW |