OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
9 #include "ash/test/ash_test_base.h" | 9 #include "ash/test/ash_test_base.h" |
10 #include "ash/test/display_manager_test_api.h" | |
11 #include "ash/touch/touchscreen_util.h" | 10 #include "ash/touch/touchscreen_util.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
13 #include "ui/display/manager/managed_display_info.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" | 14 #include "ui/events/devices/input_device.h" |
15 | 15 |
16 namespace ash { | 16 namespace ash { |
17 | 17 |
18 using DisplayInfoList = std::vector<display::ManagedDisplayInfo>; | 18 using DisplayInfoList = std::vector<display::ManagedDisplayInfo>; |
19 | 19 |
20 class TouchscreenUtilTest : public test::AshTestBase { | 20 class TouchscreenUtilTest : public test::AshTestBase { |
21 public: | 21 public: |
22 TouchscreenUtilTest() {} | 22 TouchscreenUtilTest() {} |
23 ~TouchscreenUtilTest() override {} | 23 ~TouchscreenUtilTest() override {} |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 protected: | 80 protected: |
81 DisplayInfoList displays_; | 81 DisplayInfoList displays_; |
82 | 82 |
83 private: | 83 private: |
84 DISALLOW_COPY_AND_ASSIGN(TouchscreenUtilTest); | 84 DISALLOW_COPY_AND_ASSIGN(TouchscreenUtilTest); |
85 }; | 85 }; |
86 | 86 |
87 TEST_F(TouchscreenUtilTest, NoTouchscreens) { | 87 TEST_F(TouchscreenUtilTest, NoTouchscreens) { |
88 std::vector<ui::TouchscreenDevice> devices; | 88 std::vector<ui::TouchscreenDevice> devices; |
89 | 89 |
90 test::ScopedSetInternalDisplayId set_internal(display_manager(), | 90 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
91 displays_[0].id()); | 91 displays_[0].id()); |
92 AssociateTouchscreens(&displays_, devices); | 92 AssociateTouchscreens(&displays_, devices); |
93 | 93 |
94 for (size_t i = 0; i < displays_.size(); ++i) | 94 for (size_t i = 0; i < displays_.size(); ++i) |
95 EXPECT_EQ(0u, displays_[i].input_devices().size()); | 95 EXPECT_EQ(0u, displays_[i].input_devices().size()); |
96 } | 96 } |
97 | 97 |
98 // Verify that if there are a lot of touchscreens, they will all get associated | 98 // Verify that if there are a lot of touchscreens, they will all get associated |
99 // with a display. | 99 // with a display. |
100 TEST_F(TouchscreenUtilTest, ManyTouchscreens) { | 100 TEST_F(TouchscreenUtilTest, ManyTouchscreens) { |
101 std::vector<ui::TouchscreenDevice> devices; | 101 std::vector<ui::TouchscreenDevice> devices; |
102 for (int i = 0; i < 5; ++i) { | 102 for (int i = 0; i < 5; ++i) { |
103 devices.push_back( | 103 devices.push_back( |
104 ui::TouchscreenDevice(i, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", | 104 ui::TouchscreenDevice(i, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "", |
105 gfx::Size(256, 256), 0)); | 105 gfx::Size(256, 256), 0)); |
106 } | 106 } |
107 | 107 |
108 DisplayInfoList displays; | 108 DisplayInfoList displays; |
109 displays.push_back(displays_[3]); | 109 displays.push_back(displays_[3]); |
110 | 110 |
111 test::ScopedSetInternalDisplayId set_internal(display_manager(), | 111 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
112 displays_[0].id()); | 112 displays_[0].id()); |
113 AssociateTouchscreens(&displays, devices); | 113 AssociateTouchscreens(&displays, devices); |
114 | 114 |
115 for (int i = 0; i < 5; ++i) | 115 for (int i = 0; i < 5; ++i) |
116 EXPECT_EQ(i, displays[0].input_devices()[i]); | 116 EXPECT_EQ(i, displays[0].input_devices()[i]); |
117 } | 117 } |
118 | 118 |
119 TEST_F(TouchscreenUtilTest, OneToOneMapping) { | 119 TEST_F(TouchscreenUtilTest, OneToOneMapping) { |
120 std::vector<ui::TouchscreenDevice> devices; | 120 std::vector<ui::TouchscreenDevice> devices; |
121 devices.push_back( | 121 devices.push_back( |
122 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", | 122 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", |
123 gfx::Size(800, 600), 0)); | 123 gfx::Size(800, 600), 0)); |
124 devices.push_back( | 124 devices.push_back( |
125 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", | 125 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", |
126 gfx::Size(1024, 768), 0)); | 126 gfx::Size(1024, 768), 0)); |
127 | 127 |
128 test::ScopedSetInternalDisplayId set_internal(display_manager(), | 128 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
129 displays_[0].id()); | 129 displays_[0].id()); |
130 AssociateTouchscreens(&displays_, devices); | 130 AssociateTouchscreens(&displays_, devices); |
131 | 131 |
132 EXPECT_EQ(0u, displays_[0].input_devices().size()); | 132 EXPECT_EQ(0u, displays_[0].input_devices().size()); |
133 EXPECT_EQ(1u, displays_[1].input_devices().size()); | 133 EXPECT_EQ(1u, displays_[1].input_devices().size()); |
134 EXPECT_EQ(1, displays_[1].input_devices()[0]); | 134 EXPECT_EQ(1, displays_[1].input_devices()[0]); |
135 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 135 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
136 EXPECT_EQ(1u, displays_[3].input_devices().size()); | 136 EXPECT_EQ(1u, displays_[3].input_devices().size()); |
137 EXPECT_EQ(2, displays_[3].input_devices()[0]); | 137 EXPECT_EQ(2, displays_[3].input_devices()[0]); |
138 } | 138 } |
139 | 139 |
140 TEST_F(TouchscreenUtilTest, MapToCorrectDisplaySize) { | 140 TEST_F(TouchscreenUtilTest, MapToCorrectDisplaySize) { |
141 std::vector<ui::TouchscreenDevice> devices; | 141 std::vector<ui::TouchscreenDevice> devices; |
142 devices.push_back( | 142 devices.push_back( |
143 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", | 143 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", |
144 gfx::Size(1024, 768), 0)); | 144 gfx::Size(1024, 768), 0)); |
145 | 145 |
146 test::ScopedSetInternalDisplayId set_internal(display_manager(), | 146 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
147 displays_[0].id()); | 147 displays_[0].id()); |
148 AssociateTouchscreens(&displays_, devices); | 148 AssociateTouchscreens(&displays_, devices); |
149 | 149 |
150 EXPECT_EQ(0u, displays_[0].input_devices().size()); | 150 EXPECT_EQ(0u, displays_[0].input_devices().size()); |
151 EXPECT_EQ(0u, displays_[1].input_devices().size()); | 151 EXPECT_EQ(0u, displays_[1].input_devices().size()); |
152 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 152 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
153 EXPECT_EQ(1u, displays_[3].input_devices().size()); | 153 EXPECT_EQ(1u, displays_[3].input_devices().size()); |
154 EXPECT_EQ(2, displays_[3].input_devices()[0]); | 154 EXPECT_EQ(2, displays_[3].input_devices()[0]); |
155 } | 155 } |
156 | 156 |
157 TEST_F(TouchscreenUtilTest, MapWhenSizeDiffersByOne) { | 157 TEST_F(TouchscreenUtilTest, MapWhenSizeDiffersByOne) { |
158 std::vector<ui::TouchscreenDevice> devices; | 158 std::vector<ui::TouchscreenDevice> devices; |
159 devices.push_back( | 159 devices.push_back( |
160 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", | 160 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", |
161 gfx::Size(801, 600), 0)); | 161 gfx::Size(801, 600), 0)); |
162 devices.push_back( | 162 devices.push_back( |
163 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", | 163 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", |
164 gfx::Size(1023, 768), 0)); | 164 gfx::Size(1023, 768), 0)); |
165 | 165 |
166 test::ScopedSetInternalDisplayId set_internal(display_manager(), | 166 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
167 displays_[0].id()); | 167 displays_[0].id()); |
168 AssociateTouchscreens(&displays_, devices); | 168 AssociateTouchscreens(&displays_, devices); |
169 | 169 |
170 EXPECT_EQ(0u, displays_[0].input_devices().size()); | 170 EXPECT_EQ(0u, displays_[0].input_devices().size()); |
171 EXPECT_EQ(1u, displays_[1].input_devices().size()); | 171 EXPECT_EQ(1u, displays_[1].input_devices().size()); |
172 EXPECT_EQ(1, displays_[1].input_devices()[0]); | 172 EXPECT_EQ(1, displays_[1].input_devices()[0]); |
173 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 173 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
174 EXPECT_EQ(1u, displays_[3].input_devices().size()); | 174 EXPECT_EQ(1u, displays_[3].input_devices().size()); |
175 EXPECT_EQ(2, displays_[3].input_devices()[0]); | 175 EXPECT_EQ(2, displays_[3].input_devices()[0]); |
176 } | 176 } |
177 | 177 |
178 TEST_F(TouchscreenUtilTest, MapWhenSizesDoNotMatch) { | 178 TEST_F(TouchscreenUtilTest, MapWhenSizesDoNotMatch) { |
179 std::vector<ui::TouchscreenDevice> devices; | 179 std::vector<ui::TouchscreenDevice> devices; |
180 devices.push_back( | 180 devices.push_back( |
181 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", | 181 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", |
182 gfx::Size(1022, 768), 0)); | 182 gfx::Size(1022, 768), 0)); |
183 devices.push_back( | 183 devices.push_back( |
184 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", | 184 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "2", |
185 gfx::Size(802, 600), 0)); | 185 gfx::Size(802, 600), 0)); |
186 | 186 |
187 DisplayInfoList displays; | 187 DisplayInfoList displays; |
188 displays.push_back(displays_[0]); | 188 displays.push_back(displays_[0]); |
189 displays.push_back(displays_[1]); | 189 displays.push_back(displays_[1]); |
190 | 190 |
191 test::ScopedSetInternalDisplayId set_internal(display_manager(), | 191 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
192 displays[0].id()); | 192 displays[0].id()); |
193 AssociateTouchscreens(&displays, devices); | 193 AssociateTouchscreens(&displays, devices); |
194 | 194 |
195 EXPECT_EQ(0u, displays[0].input_devices().size()); | 195 EXPECT_EQ(0u, displays[0].input_devices().size()); |
196 EXPECT_EQ(2u, displays[1].input_devices().size()); | 196 EXPECT_EQ(2u, displays[1].input_devices().size()); |
197 EXPECT_EQ(1, displays[1].input_devices()[0]); | 197 EXPECT_EQ(1, displays[1].input_devices()[0]); |
198 EXPECT_EQ(2, displays[1].input_devices()[1]); | 198 EXPECT_EQ(2, displays[1].input_devices()[1]); |
199 } | 199 } |
200 | 200 |
201 TEST_F(TouchscreenUtilTest, MapInternalTouchscreen) { | 201 TEST_F(TouchscreenUtilTest, MapInternalTouchscreen) { |
202 std::vector<ui::TouchscreenDevice> devices; | 202 std::vector<ui::TouchscreenDevice> devices; |
203 devices.push_back( | 203 devices.push_back( |
204 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", | 204 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "1", |
205 gfx::Size(1920, 1080), 0)); | 205 gfx::Size(1920, 1080), 0)); |
206 devices.push_back( | 206 devices.push_back( |
207 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", | 207 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", |
208 gfx::Size(9999, 888), 0)); | 208 gfx::Size(9999, 888), 0)); |
209 | 209 |
210 DisplayInfoList displays; | 210 DisplayInfoList displays; |
211 displays.push_back(displays_[0]); | 211 displays.push_back(displays_[0]); |
212 displays.push_back(displays_[1]); | 212 displays.push_back(displays_[1]); |
213 | 213 |
214 test::ScopedSetInternalDisplayId set_internal(display_manager(), | 214 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
215 displays[0].id()); | 215 displays[0].id()); |
216 AssociateTouchscreens(&displays, devices); | 216 AssociateTouchscreens(&displays, devices); |
217 | 217 |
218 // Internal touchscreen is always mapped to internal display. | 218 // Internal touchscreen is always mapped to internal display. |
219 EXPECT_EQ(1u, displays[0].input_devices().size()); | 219 EXPECT_EQ(1u, displays[0].input_devices().size()); |
220 EXPECT_EQ(2, displays[0].input_devices()[0]); | 220 EXPECT_EQ(2, displays[0].input_devices()[0]); |
221 EXPECT_EQ(1u, displays[1].input_devices().size()); | 221 EXPECT_EQ(1u, displays[1].input_devices().size()); |
222 EXPECT_EQ(1, displays[1].input_devices()[0]); | 222 EXPECT_EQ(1, displays[1].input_devices()[0]); |
223 } | 223 } |
224 | 224 |
225 TEST_F(TouchscreenUtilTest, MultipleInternal) { | 225 TEST_F(TouchscreenUtilTest, MultipleInternal) { |
226 std::vector<ui::TouchscreenDevice> devices; | 226 std::vector<ui::TouchscreenDevice> devices; |
227 devices.push_back( | 227 devices.push_back( |
228 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1", | 228 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1", |
229 gfx::Size(1920, 1080), 0)); | 229 gfx::Size(1920, 1080), 0)); |
230 devices.push_back( | 230 devices.push_back( |
231 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", | 231 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", |
232 gfx::Size(1920, 1080), 0)); | 232 gfx::Size(1920, 1080), 0)); |
233 | 233 |
234 test::ScopedSetInternalDisplayId set_internal(display_manager(), | 234 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
235 displays_[0].id()); | 235 displays_[0].id()); |
236 AssociateTouchscreens(&displays_, devices); | 236 AssociateTouchscreens(&displays_, devices); |
237 | 237 |
238 EXPECT_EQ(2u, displays_[0].input_devices().size()); | 238 EXPECT_EQ(2u, displays_[0].input_devices().size()); |
239 EXPECT_EQ(0u, displays_[1].input_devices().size()); | 239 EXPECT_EQ(0u, displays_[1].input_devices().size()); |
240 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 240 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
241 EXPECT_EQ(0u, displays_[3].input_devices().size()); | 241 EXPECT_EQ(0u, displays_[3].input_devices().size()); |
242 } | 242 } |
243 | 243 |
244 TEST_F(TouchscreenUtilTest, MultipleInternalAndExternal) { | 244 TEST_F(TouchscreenUtilTest, MultipleInternalAndExternal) { |
245 std::vector<ui::TouchscreenDevice> devices; | 245 std::vector<ui::TouchscreenDevice> devices; |
246 devices.push_back( | 246 devices.push_back( |
247 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1", | 247 ui::TouchscreenDevice(1, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "1", |
248 gfx::Size(1920, 1080), 0)); | 248 gfx::Size(1920, 1080), 0)); |
249 devices.push_back( | 249 devices.push_back( |
250 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", | 250 ui::TouchscreenDevice(2, ui::InputDeviceType::INPUT_DEVICE_INTERNAL, "2", |
251 gfx::Size(1920, 1080), 0)); | 251 gfx::Size(1920, 1080), 0)); |
252 devices.push_back( | 252 devices.push_back( |
253 ui::TouchscreenDevice(3, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "3", | 253 ui::TouchscreenDevice(3, ui::InputDeviceType::INPUT_DEVICE_EXTERNAL, "3", |
254 gfx::Size(1024, 768), 0)); | 254 gfx::Size(1024, 768), 0)); |
255 | 255 |
256 test::ScopedSetInternalDisplayId set_internal( | 256 display::test::ScopedSetInternalDisplayId set_internal( |
257 Shell::GetInstance()->display_manager(), displays_[0].id()); | 257 Shell::GetInstance()->display_manager(), displays_[0].id()); |
258 AssociateTouchscreens(&displays_, devices); | 258 AssociateTouchscreens(&displays_, devices); |
259 | 259 |
260 EXPECT_EQ(2u, displays_[0].input_devices().size()); | 260 EXPECT_EQ(2u, displays_[0].input_devices().size()); |
261 EXPECT_EQ(1, displays_[0].input_devices()[0]); | 261 EXPECT_EQ(1, displays_[0].input_devices()[0]); |
262 EXPECT_EQ(2, displays_[0].input_devices()[1]); | 262 EXPECT_EQ(2, displays_[0].input_devices()[1]); |
263 EXPECT_EQ(0u, displays_[1].input_devices().size()); | 263 EXPECT_EQ(0u, displays_[1].input_devices().size()); |
264 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 264 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
265 EXPECT_EQ(1u, displays_[3].input_devices().size()); | 265 EXPECT_EQ(1u, displays_[3].input_devices().size()); |
266 EXPECT_EQ(3, displays_[3].input_devices()[0]); | 266 EXPECT_EQ(3, displays_[3].input_devices()[0]); |
(...skipping 13 matching lines...) Expand all Loading... |
280 AssociateTouchscreens(&displays_, devices); | 280 AssociateTouchscreens(&displays_, devices); |
281 | 281 |
282 EXPECT_EQ(1u, displays_[0].input_devices().size()); | 282 EXPECT_EQ(1u, displays_[0].input_devices().size()); |
283 EXPECT_EQ(1, displays_[0].input_devices()[0]); | 283 EXPECT_EQ(1, displays_[0].input_devices()[0]); |
284 EXPECT_EQ(0u, displays_[1].input_devices().size()); | 284 EXPECT_EQ(0u, displays_[1].input_devices().size()); |
285 EXPECT_EQ(0u, displays_[2].input_devices().size()); | 285 EXPECT_EQ(0u, displays_[2].input_devices().size()); |
286 EXPECT_EQ(0u, displays_[3].input_devices().size()); | 286 EXPECT_EQ(0u, displays_[3].input_devices().size()); |
287 } | 287 } |
288 | 288 |
289 } // namespace ash | 289 } // namespace ash |
OLD | NEW |