OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/aura/event_filter.h" | 5 #include "ui/aura/event_filter.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "ui/aura/focus_manager.h" | 9 #include "ui/aura/focus_manager.h" |
10 #include "ui/aura/root_window.h" | 10 #include "ui/aura/root_window.h" |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 // event filters and w11's delegate will be notified. | 193 // event filters and w11's delegate will be notified. |
194 test::EventGenerator generator(root_window(), w11.get()); | 194 test::EventGenerator generator(root_window(), w11.get()); |
195 | 195 |
196 d11.set_key_event_handling_result(ui::ER_UNHANDLED); | 196 d11.set_key_event_handling_result(ui::ER_UNHANDLED); |
197 d11.set_mouse_event_handling_result(ui::ER_UNHANDLED); | 197 d11.set_mouse_event_handling_result(ui::ER_UNHANDLED); |
198 d11.set_consumes_touch_events(false); | 198 d11.set_consumes_touch_events(false); |
199 | 199 |
200 generator.PressKey(ui::VKEY_A, 0); | 200 generator.PressKey(ui::VKEY_A, 0); |
201 generator.PressLeftButton(); | 201 generator.PressLeftButton(); |
202 | 202 |
203 EXPECT_EQ(1, w1_filter->key_event_count()); | 203 #if defined(OS_WIN) |
| 204 // Windows sends two WM_KEYDOWN/WM_CHAR events for one key press. |
| 205 const int kExpectedKeyCount = 2; |
| 206 #else |
| 207 const int kExpectedKeyCount = 1; |
| 208 #endif |
| 209 |
| 210 EXPECT_EQ(kExpectedKeyCount, w1_filter->key_event_count()); |
204 EXPECT_EQ(1, w1_filter->mouse_event_count()); | 211 EXPECT_EQ(1, w1_filter->mouse_event_count()); |
205 EXPECT_EQ(1, root_window_filter.mouse_event_count()); | 212 EXPECT_EQ(1, root_window_filter.mouse_event_count()); |
206 EXPECT_EQ(1, d11.key_event_count()); | 213 EXPECT_EQ(kExpectedKeyCount, d11.key_event_count()); |
207 EXPECT_EQ(1, d11.mouse_event_count()); | 214 EXPECT_EQ(1, d11.mouse_event_count()); |
208 | 215 |
209 root_window_filter.ResetCounts(); | 216 root_window_filter.ResetCounts(); |
210 w1_filter->ResetCounts(); | 217 w1_filter->ResetCounts(); |
211 d11.ResetCounts(); | 218 d11.ResetCounts(); |
212 generator.set_flags(0); | 219 generator.set_flags(0); |
213 | 220 |
214 // Let |w1_filter| handle (but not consume) an event. The root-window's | 221 // Let |w1_filter| handle (but not consume) an event. The root-window's |
215 // post-target filter should still receive the event. | 222 // post-target filter should still receive the event. |
216 w1_filter->set_mouse_event_handling_result(ui::ER_HANDLED); | 223 w1_filter->set_mouse_event_handling_result(ui::ER_HANDLED); |
(...skipping 22 matching lines...) Expand all Loading... |
239 generator.set_flags(0); | 246 generator.set_flags(0); |
240 | 247 |
241 w1_filter->set_mouse_event_handling_result(ui::ER_UNHANDLED); | 248 w1_filter->set_mouse_event_handling_result(ui::ER_UNHANDLED); |
242 d11.set_key_event_handling_result(ui::ER_HANDLED); | 249 d11.set_key_event_handling_result(ui::ER_HANDLED); |
243 d11.set_mouse_event_handling_result(ui::ER_HANDLED); | 250 d11.set_mouse_event_handling_result(ui::ER_HANDLED); |
244 d11.set_consumes_touch_events(true); | 251 d11.set_consumes_touch_events(true); |
245 | 252 |
246 generator.PressKey(ui::VKEY_A, 0); | 253 generator.PressKey(ui::VKEY_A, 0); |
247 generator.PressLeftButton(); | 254 generator.PressLeftButton(); |
248 | 255 |
249 EXPECT_EQ(1, d11.key_event_count()); | 256 EXPECT_EQ(kExpectedKeyCount, d11.key_event_count()); |
250 EXPECT_EQ(1, d11.mouse_event_count()); | 257 EXPECT_EQ(1, d11.mouse_event_count()); |
251 // The delegate processed the event. But it should still bubble up to the | 258 // The delegate processed the event. But it should still bubble up to the |
252 // post-target filters. | 259 // post-target filters. |
253 EXPECT_EQ(1, w1_filter->key_event_count()); | 260 EXPECT_EQ(kExpectedKeyCount, w1_filter->key_event_count()); |
254 EXPECT_EQ(1, root_window_filter.key_event_count()); | 261 EXPECT_EQ(kExpectedKeyCount, root_window_filter.key_event_count()); |
255 EXPECT_EQ(1, w1_filter->mouse_event_count()); | 262 EXPECT_EQ(1, w1_filter->mouse_event_count()); |
256 EXPECT_EQ(1, root_window_filter.mouse_event_count()); | 263 EXPECT_EQ(1, root_window_filter.mouse_event_count()); |
257 | 264 |
258 // Now we'll have the delegate consume the events. | 265 // Now we'll have the delegate consume the events. |
259 root_window_filter.ResetCounts(); | 266 root_window_filter.ResetCounts(); |
260 w1_filter->ResetCounts(); | 267 w1_filter->ResetCounts(); |
261 d11.ResetCounts(); | 268 d11.ResetCounts(); |
262 generator.set_flags(0); | 269 generator.set_flags(0); |
263 | 270 |
264 d11.set_key_event_handling_result(ui::ER_CONSUMED); | 271 d11.set_key_event_handling_result(ui::ER_CONSUMED); |
265 d11.set_mouse_event_handling_result(ui::ER_CONSUMED); | 272 d11.set_mouse_event_handling_result(ui::ER_CONSUMED); |
266 d11.set_consumes_touch_events(true); | 273 d11.set_consumes_touch_events(true); |
267 | 274 |
268 generator.PressKey(ui::VKEY_A, 0); | 275 generator.PressKey(ui::VKEY_A, 0); |
269 generator.PressLeftButton(); | 276 generator.PressLeftButton(); |
270 | 277 |
271 EXPECT_EQ(1, d11.key_event_count()); | 278 EXPECT_EQ(kExpectedKeyCount, d11.key_event_count()); |
272 EXPECT_EQ(1, d11.mouse_event_count()); | 279 EXPECT_EQ(1, d11.mouse_event_count()); |
273 // The delegate consumed the event. So it should no longer reach the | 280 // The delegate consumed the event. So it should no longer reach the |
274 // post-target filters. | 281 // post-target filters. |
275 EXPECT_EQ(0, w1_filter->key_event_count()); | 282 EXPECT_EQ(0, w1_filter->key_event_count()); |
276 EXPECT_EQ(0, root_window_filter.key_event_count()); | 283 EXPECT_EQ(0, root_window_filter.key_event_count()); |
277 EXPECT_EQ(0, w1_filter->mouse_event_count()); | 284 EXPECT_EQ(0, w1_filter->mouse_event_count()); |
278 EXPECT_EQ(0, root_window_filter.mouse_event_count()); | 285 EXPECT_EQ(0, root_window_filter.mouse_event_count()); |
279 | 286 |
280 // Now we'll have the pre-filter methods consume the events. | 287 // Now we'll have the pre-filter methods consume the events. |
281 w1->RemovePostTargetHandler(w1_filter); | 288 w1->RemovePostTargetHandler(w1_filter); |
282 w1->SetEventFilter(w1_filter); | 289 w1->SetEventFilter(w1_filter); |
283 w1_filter->ResetCounts(); | 290 w1_filter->ResetCounts(); |
284 d11.ResetCounts(); | 291 d11.ResetCounts(); |
285 generator.set_flags(0); | 292 generator.set_flags(0); |
286 | 293 |
287 d11.set_key_event_handling_result(ui::ER_UNHANDLED); | 294 d11.set_key_event_handling_result(ui::ER_UNHANDLED); |
288 d11.set_mouse_event_handling_result(ui::ER_UNHANDLED); | 295 d11.set_mouse_event_handling_result(ui::ER_UNHANDLED); |
289 d11.set_consumes_touch_events(false); | 296 d11.set_consumes_touch_events(false); |
290 | 297 |
291 w1_filter->set_key_event_handling_result(ui::ER_CONSUMED); | 298 w1_filter->set_key_event_handling_result(ui::ER_CONSUMED); |
292 w1_filter->set_mouse_event_handling_result(ui::ER_CONSUMED); | 299 w1_filter->set_mouse_event_handling_result(ui::ER_CONSUMED); |
293 w1_filter->set_consumes_touch_events(true); | 300 w1_filter->set_consumes_touch_events(true); |
294 | 301 |
295 generator.PressKey(ui::VKEY_A, 0); | 302 generator.PressKey(ui::VKEY_A, 0); |
296 generator.PressLeftButton(); | 303 generator.PressLeftButton(); |
297 | 304 |
298 EXPECT_EQ(1, w1_filter->key_event_count()); | 305 EXPECT_EQ(kExpectedKeyCount, w1_filter->key_event_count()); |
299 EXPECT_EQ(0, d11.key_event_count()); | 306 EXPECT_EQ(0, d11.key_event_count()); |
300 EXPECT_EQ(1, w1_filter->mouse_event_count()); | 307 EXPECT_EQ(1, w1_filter->mouse_event_count()); |
301 EXPECT_EQ(0, d11.mouse_event_count()); | 308 EXPECT_EQ(0, d11.mouse_event_count()); |
302 } | 309 } |
303 | 310 |
304 } // namespace aura | 311 } // namespace aura |
OLD | NEW |