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/common/shelf/shelf_button_pressed_metric_tracker.h" | 5 #include "ash/common/shelf/shelf_button_pressed_metric_tracker.h" |
6 | 6 |
7 #include "ash/common/wm_shell.h" | 7 #include "ash/common/wm_shell.h" |
8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
9 #include "base/time/default_tick_clock.h" | 9 #include "base/time/default_tick_clock.h" |
10 #include "ui/views/controls/button/button.h" | 10 #include "ui/views/controls/button/button.h" |
11 | 11 |
12 namespace ash { | 12 namespace ash { |
13 | 13 |
14 const char ShelfButtonPressedMetricTracker:: | 14 const char ShelfButtonPressedMetricTracker:: |
15 kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName[] = | 15 kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName[] = |
16 "Ash.Shelf.TimeBetweenWindowMinimizedAndActivatedActions"; | 16 "Ash.Shelf.TimeBetweenWindowMinimizedAndActivatedActions"; |
17 | 17 |
18 ShelfButtonPressedMetricTracker::ShelfButtonPressedMetricTracker() | 18 ShelfButtonPressedMetricTracker::ShelfButtonPressedMetricTracker() |
19 : tick_clock_(new base::DefaultTickClock()), | 19 : tick_clock_(new base::DefaultTickClock()), |
20 time_of_last_minimize_(base::TimeTicks()), | 20 time_of_last_minimize_(base::TimeTicks()), |
21 last_minimized_source_button_(nullptr) {} | 21 last_minimized_source_button_(nullptr) {} |
22 | 22 |
23 ShelfButtonPressedMetricTracker::~ShelfButtonPressedMetricTracker() {} | 23 ShelfButtonPressedMetricTracker::~ShelfButtonPressedMetricTracker() {} |
24 | 24 |
25 void ShelfButtonPressedMetricTracker::ButtonPressed( | 25 void ShelfButtonPressedMetricTracker::ButtonPressed( |
26 const ui::Event& event, | 26 const ui::Event& event, |
27 const views::Button* sender, | 27 const views::Button* sender, |
28 ShelfItemDelegate::PerformedAction performed_action) { | 28 ShelfAction performed_action) { |
29 RecordButtonPressedSource(event); | 29 RecordButtonPressedSource(event); |
30 RecordButtonPressedAction(performed_action); | 30 RecordButtonPressedAction(performed_action); |
31 | 31 |
32 switch (performed_action) { | 32 switch (performed_action) { |
33 case ShelfItemDelegate::kExistingWindowMinimized: | 33 case SHELF_ACTION_WINDOW_MINIMIZED: |
34 SetMinimizedData(sender); | 34 SetMinimizedData(sender); |
35 break; | 35 break; |
36 case ShelfItemDelegate::kExistingWindowActivated: | 36 case SHELF_ACTION_WINDOW_ACTIVATED: |
37 if (IsSubsequentActivationEvent(sender)) | 37 if (IsSubsequentActivationEvent(sender)) |
38 RecordTimeBetweenMinimizedAndActivated(); | 38 RecordTimeBetweenMinimizedAndActivated(); |
39 break; | 39 break; |
40 default: | 40 default: |
41 break; | 41 break; |
42 } | 42 } |
43 | 43 |
44 if (performed_action != ShelfItemDelegate::kExistingWindowMinimized) | 44 if (performed_action != SHELF_ACTION_WINDOW_MINIMIZED) |
45 ResetMinimizedData(); | 45 ResetMinimizedData(); |
46 } | 46 } |
47 | 47 |
48 void ShelfButtonPressedMetricTracker::RecordButtonPressedSource( | 48 void ShelfButtonPressedMetricTracker::RecordButtonPressedSource( |
49 const ui::Event& event) { | 49 const ui::Event& event) { |
50 if (event.IsMouseEvent()) { | 50 if (event.IsMouseEvent()) { |
51 WmShell::Get()->RecordUserMetricsAction( | 51 WmShell::Get()->RecordUserMetricsAction( |
52 UMA_LAUNCHER_BUTTON_PRESSED_WITH_MOUSE); | 52 UMA_LAUNCHER_BUTTON_PRESSED_WITH_MOUSE); |
53 } else if (event.IsGestureEvent()) { | 53 } else if (event.IsGestureEvent()) { |
54 WmShell::Get()->RecordUserMetricsAction( | 54 WmShell::Get()->RecordUserMetricsAction( |
55 UMA_LAUNCHER_BUTTON_PRESSED_WITH_TOUCH); | 55 UMA_LAUNCHER_BUTTON_PRESSED_WITH_TOUCH); |
56 } | 56 } |
57 } | 57 } |
58 | 58 |
59 void ShelfButtonPressedMetricTracker::RecordButtonPressedAction( | 59 void ShelfButtonPressedMetricTracker::RecordButtonPressedAction( |
60 ShelfItemDelegate::PerformedAction performed_action) { | 60 ShelfAction performed_action) { |
61 switch (performed_action) { | 61 switch (performed_action) { |
62 case ShelfItemDelegate::kNoAction: | 62 case SHELF_ACTION_NONE: |
63 case ShelfItemDelegate::kAppListMenuShown: | 63 case SHELF_ACTION_APP_LIST_SHOWN: |
64 break; | 64 break; |
65 case ShelfItemDelegate::kNewWindowCreated: | 65 case SHELF_ACTION_NEW_WINDOW_CREATED: |
66 WmShell::Get()->RecordUserMetricsAction(UMA_LAUNCHER_LAUNCH_TASK); | 66 WmShell::Get()->RecordUserMetricsAction(UMA_LAUNCHER_LAUNCH_TASK); |
67 break; | 67 break; |
68 case ShelfItemDelegate::kExistingWindowActivated: | 68 case SHELF_ACTION_WINDOW_ACTIVATED: |
69 WmShell::Get()->RecordUserMetricsAction(UMA_LAUNCHER_SWITCH_TASK); | 69 WmShell::Get()->RecordUserMetricsAction(UMA_LAUNCHER_SWITCH_TASK); |
70 break; | 70 break; |
71 case ShelfItemDelegate::kExistingWindowMinimized: | 71 case SHELF_ACTION_WINDOW_MINIMIZED: |
72 WmShell::Get()->RecordUserMetricsAction(UMA_LAUNCHER_MINIMIZE_TASK); | 72 WmShell::Get()->RecordUserMetricsAction(UMA_LAUNCHER_MINIMIZE_TASK); |
73 break; | 73 break; |
74 } | 74 } |
75 } | 75 } |
76 | 76 |
77 void ShelfButtonPressedMetricTracker::RecordTimeBetweenMinimizedAndActivated() { | 77 void ShelfButtonPressedMetricTracker::RecordTimeBetweenMinimizedAndActivated() { |
78 UMA_HISTOGRAM_TIMES( | 78 UMA_HISTOGRAM_TIMES( |
79 kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName, | 79 kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName, |
80 tick_clock_->NowTicks() - time_of_last_minimize_); | 80 tick_clock_->NowTicks() - time_of_last_minimize_); |
81 } | 81 } |
82 | 82 |
83 bool ShelfButtonPressedMetricTracker::IsSubsequentActivationEvent( | 83 bool ShelfButtonPressedMetricTracker::IsSubsequentActivationEvent( |
84 const views::Button* sender) const { | 84 const views::Button* sender) const { |
85 return time_of_last_minimize_ != base::TimeTicks() && | 85 return time_of_last_minimize_ != base::TimeTicks() && |
86 last_minimized_source_button_ == sender; | 86 last_minimized_source_button_ == sender; |
87 } | 87 } |
88 | 88 |
89 void ShelfButtonPressedMetricTracker::SetMinimizedData( | 89 void ShelfButtonPressedMetricTracker::SetMinimizedData( |
90 const views::Button* sender) { | 90 const views::Button* sender) { |
91 last_minimized_source_button_ = sender; | 91 last_minimized_source_button_ = sender; |
92 time_of_last_minimize_ = tick_clock_->NowTicks(); | 92 time_of_last_minimize_ = tick_clock_->NowTicks(); |
93 } | 93 } |
94 | 94 |
95 void ShelfButtonPressedMetricTracker::ResetMinimizedData() { | 95 void ShelfButtonPressedMetricTracker::ResetMinimizedData() { |
96 last_minimized_source_button_ = nullptr; | 96 last_minimized_source_button_ = nullptr; |
97 time_of_last_minimize_ = base::TimeTicks(); | 97 time_of_last_minimize_ = base::TimeTicks(); |
98 } | 98 } |
99 | 99 |
100 } // namespace ash | 100 } // namespace ash |
OLD | NEW |