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 |