Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: ash/metrics/task_switch_metrics_recorder.cc

Issue 1148723006: Added Ash.TimeBetweenTaskSwitches to record time deltas between all recorded task switches. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated TaskSwitchMetricsRecorder documentation as per tdanderson@'s requests. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698