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

Side by Side Diff: ash/common/metrics/pointer_metrics_recorder_unittest.cc

Issue 2331093002: UMA stats for stylus usage (Closed)
Patch Set: nit and rebase Created 4 years, 2 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
« no previous file with comments | « ash/common/metrics/pointer_metrics_recorder.cc ('k') | ash/common/wm_window.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ash/common/metrics/pointer_metrics_recorder.h"
6
7 #include "ash/common/shell_window_ids.h"
8 #include "ash/common/wm/maximize_mode/maximize_mode_controller.h"
9 #include "ash/common/wm_lookup.h"
10 #include "ash/common/wm_shell.h"
11 #include "ash/common/wm_window.h"
12 #include "ash/shared/app_types.h"
13 #include "ash/test/ash_test_base.h"
14 #include "base/test/histogram_tester.h"
15 #include "ui/events/event.h"
16 #include "ui/views/pointer_watcher.h"
17 #include "ui/views/widget/widget.h"
18
19 using views::PointerWatcher;
20
21 namespace ash {
22 namespace {
23
24 const char kFormFactorHistogramName[] = "Event.DownEventCount.PerFormFactor";
25 const char kInputHistogramName[] = "Event.DownEventCount.PerInput";
26 const char kDestinationHistogramName[] = "Event.DownEventCount.PerDestination";
27
28 // Test fixture for the PointerMetricsRecorder class.
29 class PointerMetricsRecorderTest : public test::AshTestBase {
30 public:
31 PointerMetricsRecorderTest();
32 ~PointerMetricsRecorderTest() override;
33
34 // test::AshTestBase:
35 void SetUp() override;
36 void TearDown() override;
37
38 protected:
39 // The test target.
40 std::unique_ptr<PointerMetricsRecorder> pointer_metrics_recorder_;
41
42 // Used to verify recorded data.
43 std::unique_ptr<base::HistogramTester> histogram_tester_;
44
45 private:
46 DISALLOW_COPY_AND_ASSIGN(PointerMetricsRecorderTest);
47 };
48
49 PointerMetricsRecorderTest::PointerMetricsRecorderTest() {}
50
51 PointerMetricsRecorderTest::~PointerMetricsRecorderTest() {}
52
53 void PointerMetricsRecorderTest::SetUp() {
54 test::AshTestBase::SetUp();
55 pointer_metrics_recorder_.reset(new PointerMetricsRecorder());
56 histogram_tester_.reset(new base::HistogramTester());
57 }
58
59 void PointerMetricsRecorderTest::TearDown() {
60 pointer_metrics_recorder_.reset();
61 test::AshTestBase::TearDown();
62 }
63
64 } // namespace
65
66 // Verifies that histogram is not recorded when receiving events that are not
67 // down events.
68 TEST_F(PointerMetricsRecorderTest, NonDownEventsInAllPointerHistogram) {
69 std::unique_ptr<views::Widget> target =
70 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
71 const ui::PointerEvent pointer_event(
72 ui::ET_POINTER_UP, gfx::Point(), gfx::Point(), 0, 0, 0,
73 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
74 base::TimeTicks());
75 pointer_metrics_recorder_->OnPointerEventObserved(pointer_event, gfx::Point(),
76 target.get());
77
78 histogram_tester_->ExpectTotalCount(kFormFactorHistogramName, 0);
79 histogram_tester_->ExpectTotalCount(kInputHistogramName, 0);
80 histogram_tester_->ExpectTotalCount(kDestinationHistogramName, 0);
81 }
82
83 // Verifies that down events from different inputs are recorded.
84 TEST_F(PointerMetricsRecorderTest, DownEventPerInput) {
85 std::unique_ptr<views::Widget> target =
86 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
87
88 const ui::PointerEvent unknown_event(
89 ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), 0, 0, 0,
90 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_UNKNOWN),
91 base::TimeTicks());
92 pointer_metrics_recorder_->OnPointerEventObserved(unknown_event, gfx::Point(),
93 target.get());
94 histogram_tester_->ExpectBucketCount(kInputHistogramName, 0, 1);
95
96 const ui::PointerEvent mouse_event(
97 ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), 0, 0, 0,
98 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
99 base::TimeTicks());
100 pointer_metrics_recorder_->OnPointerEventObserved(mouse_event, gfx::Point(),
101 target.get());
102 histogram_tester_->ExpectBucketCount(kInputHistogramName, 1, 1);
103
104 const ui::PointerEvent stylus_event(
105 ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), 0, 0, 0,
106 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_PEN),
107 base::TimeTicks());
108 pointer_metrics_recorder_->OnPointerEventObserved(stylus_event, gfx::Point(),
109 target.get());
110 histogram_tester_->ExpectBucketCount(kInputHistogramName, 2, 1);
111
112 const ui::PointerEvent stylus_event2(
113 ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), 0, 0, 0,
114 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_ERASER),
115 base::TimeTicks());
116 pointer_metrics_recorder_->OnPointerEventObserved(stylus_event2, gfx::Point(),
117 target.get());
118 histogram_tester_->ExpectBucketCount(kInputHistogramName, 2, 2);
119
120 const ui::PointerEvent touch_event(
121 ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), 0, 0, 0,
122 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
123 base::TimeTicks());
124 pointer_metrics_recorder_->OnPointerEventObserved(touch_event, gfx::Point(),
125 target.get());
126 histogram_tester_->ExpectBucketCount(kInputHistogramName, 3, 1);
127 }
128
129 // Verifies that down events in different form factors are recorded.
130 TEST_F(PointerMetricsRecorderTest, DownEventPerFormFactor) {
131 std::unique_ptr<views::Widget> target =
132 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
133 const ui::PointerEvent pointer_event(
134 ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), 0, 0, 0,
135 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
136 base::TimeTicks());
137
138 // Enable maximize mode
139 WmShell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager(
140 true);
141 pointer_metrics_recorder_->OnPointerEventObserved(pointer_event, gfx::Point(),
142 target.get());
143 histogram_tester_->ExpectBucketCount(kFormFactorHistogramName, 1, 1);
144
145 // Disable maximize mode
146 WmShell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager(
147 false);
148 pointer_metrics_recorder_->OnPointerEventObserved(pointer_event, gfx::Point(),
149 target.get());
150 histogram_tester_->ExpectBucketCount(kFormFactorHistogramName, 0, 1);
151 }
152
153 // Verifies that down events dispatched to different destinations are recorded.
154 TEST_F(PointerMetricsRecorderTest, DownEventPerDestination) {
155 std::unique_ptr<views::Widget> target =
156 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
157 const ui::PointerEvent pointer_event(
158 ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), 0, 0, 0,
159 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
160 base::TimeTicks());
161
162 WmWindow* window = WmLookup::Get()->GetWindowForWidget(target.get());
163 CHECK(window);
164
165 window->SetAppType(static_cast<int>(AppType::OTHERS));
166 pointer_metrics_recorder_->OnPointerEventObserved(pointer_event, gfx::Point(),
167 target.get());
168 histogram_tester_->ExpectBucketCount(kDestinationHistogramName, 0, 1);
169
170 window->SetAppType(static_cast<int>(AppType::BROWSER));
171 pointer_metrics_recorder_->OnPointerEventObserved(pointer_event, gfx::Point(),
172 target.get());
173 histogram_tester_->ExpectBucketCount(kDestinationHistogramName, 1, 1);
174
175 window->SetAppType(static_cast<int>(AppType::CHROME_APP));
176 pointer_metrics_recorder_->OnPointerEventObserved(pointer_event, gfx::Point(),
177 target.get());
178 histogram_tester_->ExpectBucketCount(kDestinationHistogramName, 2, 1);
179
180 window->SetAppType(static_cast<int>(AppType::ARC_APP));
181 pointer_metrics_recorder_->OnPointerEventObserved(pointer_event, gfx::Point(),
182 target.get());
183 histogram_tester_->ExpectBucketCount(kDestinationHistogramName, 3, 1);
184
185 window->SetAppType(static_cast<int>(AppType::DEFAULT_NOTE_TAKING_APP));
186 pointer_metrics_recorder_->OnPointerEventObserved(pointer_event, gfx::Point(),
187 target.get());
188 histogram_tester_->ExpectBucketCount(kDestinationHistogramName, 4, 1);
189 }
190
191 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/metrics/pointer_metrics_recorder.cc ('k') | ash/common/wm_window.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698