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

Side by Side Diff: chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_unittest.cc

Issue 1182303005: Fixed the Touchscreen.TouchEventsEnabled histogram to record the correct values on X11 and Ozone ba… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added Touchscreen.TouchEventsEnabled histogram to public histograms.xml. 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h"
6
7 #include "base/macros.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop/message_loop.h"
10 #include "base/test/histogram_tester.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/aura/test/test_screen.h"
13 #include "ui/events/devices/device_data_manager.h"
14 #include "ui/events/test/device_data_manager_test_api.h"
15 #include "ui/gfx/geometry/size.h"
16 #include "ui/gfx/screen.h"
17
18 namespace {
19
20 const char kTouchEventsEnabledHistogramName[] =
21 "Touchscreen.TouchEventsEnabled";
22
23 } // namespace
24
25 class ChromeBrowserMainExtraPartsMetricsTest : public testing::Test {
26 public:
27 ChromeBrowserMainExtraPartsMetricsTest();
28 ~ChromeBrowserMainExtraPartsMetricsTest() override;
29
30 protected:
31 ui::test::DeviceDataManagerTestAPI* device_data_manager_test_api() {
32 return device_data_manager_test_api_.get();
33 }
Ilya Sherman 2015/06/25 20:31:47 nit: It's fine for test fixture classes to have pu
bruthig 2015/06/25 22:36:25 Done.
34
35 private:
36 // A newly constructed DeviceDataManger. Accessible via
37 // DeviceDataManager::GetInstance().
38 scoped_ptr<ui::DeviceDataManager> device_data_manager_;
39
40 // Test API wrapping |device_data_manager_|.
41 scoped_ptr<ui::test::DeviceDataManagerTestAPI> device_data_manager_test_api_;
42
43 // Required by a ChromeBrowserMainExtraPartsMetrics test target.
44 base::MessageLoop message_loop_;
45
46 // Dummy screen required by a ChromeBrowserMainExtraPartsMetrics test target.
47 scoped_ptr<aura::TestScreen> test_screen_;
48
49 DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMainExtraPartsMetricsTest);
50 };
51
52 ChromeBrowserMainExtraPartsMetricsTest::ChromeBrowserMainExtraPartsMetricsTest()
53 : device_data_manager_(
54 ui::test::DeviceDataManagerTestAPI::CreateDeviceDataManager().Pass()),
Ilya Sherman 2015/06/25 20:31:47 nit: I think you can omit the ".Pass()" here and s
bruthig 2015/06/25 22:36:25 Done.
55 device_data_manager_test_api_(
56 new ui::test::DeviceDataManagerTestAPI(device_data_manager_.get())),
57 test_screen_(aura::TestScreen::Create(gfx::Size())) {
58 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, test_screen_.get());
59 ui::test::DeviceDataManagerTestAPI::SetDeviceDataManagerInstance(
60 device_data_manager_.get());
61 }
62
63 ChromeBrowserMainExtraPartsMetricsTest::
64 ~ChromeBrowserMainExtraPartsMetricsTest() {
65 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, nullptr);
66 ui::test::DeviceDataManagerTestAPI::SetDeviceDataManagerInstance(nullptr);
67 }
68
69 // Verify a TouchEventsEnabled value isn't recorded during construction.
70 TEST_F(ChromeBrowserMainExtraPartsMetricsTest,
71 VerifyTouchEventsEnabledIsNotRecordedAfterConstruction) {
72 base::HistogramTester histogram_tester;
73 ChromeBrowserMainExtraPartsMetrics test_target;
74 histogram_tester.ExpectTotalCount(kTouchEventsEnabledHistogramName, 0);
75 }
76
77 #if defined(USE_OZONE) || defined(USE_X11)
78
79 // Verify a TouchEventsEnabled value isn't recorded during PostBrowserStart if
80 // the device scan hasn't completed yet.
81 TEST_F(ChromeBrowserMainExtraPartsMetricsTest,
82 VerifyTouchEventsEnabledIsNotRecordedAfterPostBrowserStart) {
83 base::HistogramTester histogram_tester;
84
85 ChromeBrowserMainExtraPartsMetrics test_target;
86
87 test_target.PostBrowserStart();
88 histogram_tester.ExpectTotalCount(kTouchEventsEnabledHistogramName, 0);
89 }
90
91 // Verify a TouchEventsEnabled value is recorded during PostBrowserStart if the
92 // device scan has already completed.
93 TEST_F(ChromeBrowserMainExtraPartsMetricsTest,
94 VerifyTouchEventsEnabledIsRecordedAfterPostBrowserStart) {
95 base::HistogramTester histogram_tester;
96
97 device_data_manager_test_api()->OnDeviceListsComplete();
98
99 ChromeBrowserMainExtraPartsMetrics test_target;
100
101 test_target.PostBrowserStart();
102 histogram_tester.ExpectTotalCount(kTouchEventsEnabledHistogramName, 1);
103 }
104
105 // Verify a TouchEventsEnabled value is recorded when an asynchronous device
106 // scan completes.
107 TEST_F(ChromeBrowserMainExtraPartsMetricsTest,
108 VerifyTouchEventsEnabledIsRecordedWhenDeviceListsComplete) {
109 base::HistogramTester histogram_tester;
110 ChromeBrowserMainExtraPartsMetrics test_target;
111
112 test_target.PostBrowserStart();
113 device_data_manager_test_api()->NotifyObserversDeviceListsComplete();
114 histogram_tester.ExpectTotalCount(kTouchEventsEnabledHistogramName, 1);
115 }
116
117 // Verify a TouchEventsEnabled value is only recorded once if multiple
118 // asynchronous device scans happen.
119 TEST_F(ChromeBrowserMainExtraPartsMetricsTest,
120 VerifyTouchEventsEnabledIsOnlyRecordedOnce) {
121 base::HistogramTester histogram_tester;
122 ChromeBrowserMainExtraPartsMetrics test_target;
123
124 test_target.PostBrowserStart();
125 device_data_manager_test_api()->NotifyObserversDeviceListsComplete();
126 device_data_manager_test_api()->NotifyObserversDeviceListsComplete();
127 histogram_tester.ExpectTotalCount(kTouchEventsEnabledHistogramName, 1);
128 }
129
130 #else
131
132 // Verify a TouchEventsEnabled value is recorded during PostBrowserStart.
133 TEST_F(ChromeBrowserMainExtraPartsMetricsTest,
134 VerifyTouchEventsEnabledIsRecordedAfterPostBrowserStart) {
135 base::HistogramTester histogram_tester;
136 ChromeBrowserMainExtraPartsMetrics test_target;
137
138 test_target.PostBrowserStart();
139 histogram_tester.ExpectTotalCount(kTouchEventsEnabledHistogramName, 1);
140 }
141
142 #endif // defined(USE_OZONE) || defined(USE_X11)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698