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

Side by Side Diff: ash/touch/touchscreen_util_unittest.cc

Issue 2520143002: Move touchscreen_util.cc/h from ash to ui. (Closed)
Patch Set: Rebase. Created 4 years 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/touch/touchscreen_util.cc ('k') | ui/display/BUILD.gn » ('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 2014 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 <string>
6 #include <vector>
7
8 #include "ash/shell.h"
9 #include "ash/test/ash_test_base.h"
10 #include "ash/touch/touchscreen_util.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/display/manager/managed_display_info.h"
13 #include "ui/display/test/display_manager_test_api.h"
14 #include "ui/events/devices/input_device.h"
15
16 namespace ash {
17
18 using DisplayInfoList = std::vector<display::ManagedDisplayInfo>;
19
20 class TouchscreenUtilTest : public test::AshTestBase {
21 public:
22 TouchscreenUtilTest() {}
23 ~TouchscreenUtilTest() override {}
24
25 void SetUp() override {
26 test::AshTestBase::SetUp();
27 // Internal display will always match to internal touchscreen. If internal
28 // touchscreen can't be detected, it is then associated to a touch screen
29 // with matching size.
30 {
31 display::ManagedDisplayInfo display(1, "1", false);
32 scoped_refptr<display::ManagedDisplayMode> mode(
33 new display::ManagedDisplayMode(gfx::Size(1920, 1080), 60.0,
34 false /* interlaced */,
35 true /* native */, 1.0 /* ui_scale */,
36 1.0 /* device_scale_factor */));
37 display::ManagedDisplayInfo::ManagedDisplayModeList modes(1, mode);
38 display.SetManagedDisplayModes(modes);
39 displays_.push_back(display);
40 }
41
42 {
43 display::ManagedDisplayInfo display(2, "2", false);
44
45 scoped_refptr<display::ManagedDisplayMode> mode(
46 new display::ManagedDisplayMode(gfx::Size(800, 600), 60.0,
47 false /* interlaced */,
48 true /* native */, 1.0 /* ui_scale */,
49 1.0 /* device_scale_factor */));
50 display::ManagedDisplayInfo::ManagedDisplayModeList modes(1, mode);
51 display.SetManagedDisplayModes(modes);
52 displays_.push_back(display);
53 }
54
55 // Display without native mode. Must not be matched to any touch screen.
56 {
57 display::ManagedDisplayInfo display(3, "3", false);
58 displays_.push_back(display);
59 }
60
61 {
62 display::ManagedDisplayInfo display(4, "4", false);
63
64 scoped_refptr<display::ManagedDisplayMode> mode(
65 new display::ManagedDisplayMode(gfx::Size(1024, 768), 60.0,
66 false /* interlaced */,
67 /* native */ true, 1.0 /* ui_scale */,
68 1.0 /* device_scale_factor */));
69 display::ManagedDisplayInfo::ManagedDisplayModeList modes(1, mode);
70 display.SetManagedDisplayModes(modes);
71 displays_.push_back(display);
72 }
73 }
74
75 void TearDown() override {
76 displays_.clear();
77 test::AshTestBase::TearDown();
78 }
79
80 protected:
81 DisplayInfoList displays_;
82
83 private:
84 DISALLOW_COPY_AND_ASSIGN(TouchscreenUtilTest);
85 };
86
87 TEST_F(TouchscreenUtilTest, NoTouchscreens) {
88 std::vector<ui::TouchscreenDevice> devices;
89
90 display::test::ScopedSetInternalDisplayId set_internal(display_manager(),
91 displays_[0].id());
92 AssociateTouchscreens(&displays_, devices);
93
94 for (size_t i = 0; i < displays_.size(); ++i)
95 EXPECT_EQ(0u, displays_[i].input_devices().size());
96 }
97
98 // Verify that if there are a lot of touchscreens, they will all get associated
99 // with a display.
100 TEST_F(TouchscreenUtilTest, ManyTouchscreens) {
101 std::vector<ui::TouchscreenDevice> devices;
102 for (int i = 0; i < 5; ++i) {
103 devices.push_back(
104 ui::TouchscreenDevice(i, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "",
105 gfx::Size(256, 256), 0));
106 }
107
108 DisplayInfoList displays;
109 displays.push_back(displays_[3]);
110
111 display::test::ScopedSetInternalDisplayId set_internal(display_manager(),
112 displays_[0].id());
113 AssociateTouchscreens(&displays, devices);
114
115 for (int i = 0; i < 5; ++i)
116 EXPECT_EQ(i, displays[0].input_devices()[i]);
117 }
118
119 TEST_F(TouchscreenUtilTest, OneToOneMapping) {
120 std::vector<ui::TouchscreenDevice> devices;
121 devices.push_back(
122 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1",
123 gfx::Size(800, 600), 0));
124 devices.push_back(
125 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2",
126 gfx::Size(1024, 768), 0));
127
128 display::test::ScopedSetInternalDisplayId set_internal(display_manager(),
129 displays_[0].id());
130 AssociateTouchscreens(&displays_, devices);
131
132 EXPECT_EQ(0u, displays_[0].input_devices().size());
133 EXPECT_EQ(1u, displays_[1].input_devices().size());
134 EXPECT_EQ(1, displays_[1].input_devices()[0]);
135 EXPECT_EQ(0u, displays_[2].input_devices().size());
136 EXPECT_EQ(1u, displays_[3].input_devices().size());
137 EXPECT_EQ(2, displays_[3].input_devices()[0]);
138 }
139
140 TEST_F(TouchscreenUtilTest, MapToCorrectDisplaySize) {
141 std::vector<ui::TouchscreenDevice> devices;
142 devices.push_back(
143 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2",
144 gfx::Size(1024, 768), 0));
145
146 display::test::ScopedSetInternalDisplayId set_internal(display_manager(),
147 displays_[0].id());
148 AssociateTouchscreens(&displays_, devices);
149
150 EXPECT_EQ(0u, displays_[0].input_devices().size());
151 EXPECT_EQ(0u, displays_[1].input_devices().size());
152 EXPECT_EQ(0u, displays_[2].input_devices().size());
153 EXPECT_EQ(1u, displays_[3].input_devices().size());
154 EXPECT_EQ(2, displays_[3].input_devices()[0]);
155 }
156
157 TEST_F(TouchscreenUtilTest, MapWhenSizeDiffersByOne) {
158 std::vector<ui::TouchscreenDevice> devices;
159 devices.push_back(
160 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1",
161 gfx::Size(801, 600), 0));
162 devices.push_back(
163 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2",
164 gfx::Size(1023, 768), 0));
165
166 display::test::ScopedSetInternalDisplayId set_internal(display_manager(),
167 displays_[0].id());
168 AssociateTouchscreens(&displays_, devices);
169
170 EXPECT_EQ(0u, displays_[0].input_devices().size());
171 EXPECT_EQ(1u, displays_[1].input_devices().size());
172 EXPECT_EQ(1, displays_[1].input_devices()[0]);
173 EXPECT_EQ(0u, displays_[2].input_devices().size());
174 EXPECT_EQ(1u, displays_[3].input_devices().size());
175 EXPECT_EQ(2, displays_[3].input_devices()[0]);
176 }
177
178 TEST_F(TouchscreenUtilTest, MapWhenSizesDoNotMatch) {
179 std::vector<ui::TouchscreenDevice> devices;
180 devices.push_back(
181 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1",
182 gfx::Size(1022, 768), 0));
183 devices.push_back(
184 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2",
185 gfx::Size(802, 600), 0));
186
187 DisplayInfoList displays;
188 displays.push_back(displays_[0]);
189 displays.push_back(displays_[1]);
190
191 display::test::ScopedSetInternalDisplayId set_internal(display_manager(),
192 displays[0].id());
193 AssociateTouchscreens(&displays, devices);
194
195 EXPECT_EQ(0u, displays[0].input_devices().size());
196 EXPECT_EQ(2u, displays[1].input_devices().size());
197 EXPECT_EQ(1, displays[1].input_devices()[0]);
198 EXPECT_EQ(2, displays[1].input_devices()[1]);
199 }
200
201 TEST_F(TouchscreenUtilTest, MapInternalTouchscreen) {
202 std::vector<ui::TouchscreenDevice> devices;
203 devices.push_back(
204 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1",
205 gfx::Size(1920, 1080), 0));
206 devices.push_back(
207 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2",
208 gfx::Size(9999, 888), 0));
209
210 DisplayInfoList displays;
211 displays.push_back(displays_[0]);
212 displays.push_back(displays_[1]);
213
214 display::test::ScopedSetInternalDisplayId set_internal(display_manager(),
215 displays[0].id());
216 AssociateTouchscreens(&displays, devices);
217
218 // Internal touchscreen is always mapped to internal display.
219 EXPECT_EQ(1u, displays[0].input_devices().size());
220 EXPECT_EQ(2, displays[0].input_devices()[0]);
221 EXPECT_EQ(1u, displays[1].input_devices().size());
222 EXPECT_EQ(1, displays[1].input_devices()[0]);
223 }
224
225 TEST_F(TouchscreenUtilTest, MultipleInternal) {
226 std::vector<ui::TouchscreenDevice> devices;
227 devices.push_back(
228 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1",
229 gfx::Size(1920, 1080), 0));
230 devices.push_back(
231 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2",
232 gfx::Size(1920, 1080), 0));
233
234 display::test::ScopedSetInternalDisplayId set_internal(display_manager(),
235 displays_[0].id());
236 AssociateTouchscreens(&displays_, devices);
237
238 EXPECT_EQ(2u, displays_[0].input_devices().size());
239 EXPECT_EQ(0u, displays_[1].input_devices().size());
240 EXPECT_EQ(0u, displays_[2].input_devices().size());
241 EXPECT_EQ(0u, displays_[3].input_devices().size());
242 }
243
244 TEST_F(TouchscreenUtilTest, MultipleInternalAndExternal) {
245 std::vector<ui::TouchscreenDevice> devices;
246 devices.push_back(
247 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1",
248 gfx::Size(1920, 1080), 0));
249 devices.push_back(
250 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2",
251 gfx::Size(1920, 1080), 0));
252 devices.push_back(
253 ui::TouchscreenDevice(3, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "3",
254 gfx::Size(1024, 768), 0));
255
256 display::test::ScopedSetInternalDisplayId set_internal(
257 Shell::GetInstance()->display_manager(), displays_[0].id());
258 AssociateTouchscreens(&displays_, devices);
259
260 EXPECT_EQ(2u, displays_[0].input_devices().size());
261 EXPECT_EQ(1, displays_[0].input_devices()[0]);
262 EXPECT_EQ(2, displays_[0].input_devices()[1]);
263 EXPECT_EQ(0u, displays_[1].input_devices().size());
264 EXPECT_EQ(0u, displays_[2].input_devices().size());
265 EXPECT_EQ(1u, displays_[3].input_devices().size());
266 EXPECT_EQ(3, displays_[3].input_devices()[0]);
267 }
268
269 // crbug.com/515201
270 TEST_F(TouchscreenUtilTest, TestWithNoInternalDisplay) {
271 std::vector<ui::TouchscreenDevice> devices;
272 devices.push_back(
273 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1",
274 gfx::Size(1920, 1080), 0));
275 devices.push_back(
276 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2",
277 gfx::Size(9999, 888), 0));
278
279 // Internal touchscreen should not be associated with any display
280 AssociateTouchscreens(&displays_, devices);
281
282 EXPECT_EQ(1u, displays_[0].input_devices().size());
283 EXPECT_EQ(1, displays_[0].input_devices()[0]);
284 EXPECT_EQ(0u, displays_[1].input_devices().size());
285 EXPECT_EQ(0u, displays_[2].input_devices().size());
286 EXPECT_EQ(0u, displays_[3].input_devices().size());
287 }
288
289 } // namespace ash
OLDNEW
« no previous file with comments | « ash/touch/touchscreen_util.cc ('k') | ui/display/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698