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 |