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