| 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/events/event_dispatcher.h" | 5 #include "ui/events/event_dispatcher.h" |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "ui/events/event.h" | 9 #include "ui/events/event.h" |
| 10 #include "ui/events/event_dispatcher.h" | 10 #include "ui/events/event_dispatcher.h" |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 child.AddPostTargetHandler(&h6); | 233 child.AddPostTargetHandler(&h6); |
| 234 | 234 |
| 235 parent.AddPostTargetHandler(&h7); | 235 parent.AddPostTargetHandler(&h7); |
| 236 parent.AddPostTargetHandler(&h8); | 236 parent.AddPostTargetHandler(&h8); |
| 237 | 237 |
| 238 h5.set_expect_post_target(true); | 238 h5.set_expect_post_target(true); |
| 239 h6.set_expect_post_target(true); | 239 h6.set_expect_post_target(true); |
| 240 h7.set_expect_post_target(true); | 240 h7.set_expect_post_target(true); |
| 241 h8.set_expect_post_target(true); | 241 h8.set_expect_post_target(true); |
| 242 | 242 |
| 243 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), | 243 MouseEvent mouse( |
| 244 ui::EventTimeForNow(), 0, 0); | 244 ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), |
| 245 ui::EventTimeForNow(), 0, 0, |
| 246 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 245 Event::DispatcherApi event_mod(&mouse); | 247 Event::DispatcherApi event_mod(&mouse); |
| 246 dispatcher.ProcessEvent(&child, &mouse); | 248 dispatcher.ProcessEvent(&child, &mouse); |
| 247 EXPECT_FALSE(mouse.stopped_propagation()); | 249 EXPECT_FALSE(mouse.stopped_propagation()); |
| 248 EXPECT_FALSE(mouse.handled()); | 250 EXPECT_FALSE(mouse.handled()); |
| 249 | 251 |
| 250 { | 252 { |
| 251 int expected[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; | 253 int expected[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; |
| 252 EXPECT_EQ( | 254 EXPECT_EQ( |
| 253 std::vector<int>(expected, expected + sizeof(expected) / sizeof(int)), | 255 std::vector<int>(expected, expected + sizeof(expected) / sizeof(int)), |
| 254 child.handler_list()); | 256 child.handler_list()); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 TestEventDispatcher dispatcher; | 309 TestEventDispatcher dispatcher; |
| 308 TestTarget target; | 310 TestTarget target; |
| 309 | 311 |
| 310 TestEventHandler handler(11); | 312 TestEventHandler handler(11); |
| 311 | 313 |
| 312 target.AddPreTargetHandler(&handler); | 314 target.AddPreTargetHandler(&handler); |
| 313 target.AddPostTargetHandler(&handler); | 315 target.AddPostTargetHandler(&handler); |
| 314 handler.set_expect_pre_target(true); | 316 handler.set_expect_pre_target(true); |
| 315 handler.set_expect_post_target(true); | 317 handler.set_expect_post_target(true); |
| 316 | 318 |
| 317 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), | 319 MouseEvent mouse( |
| 318 ui::EventTimeForNow(), 0, 0); | 320 ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), |
| 321 ui::EventTimeForNow(), 0, 0, |
| 322 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 319 Event::DispatcherApi event_mod(&mouse); | 323 Event::DispatcherApi event_mod(&mouse); |
| 320 dispatcher.ProcessEvent(&target, &mouse); | 324 dispatcher.ProcessEvent(&target, &mouse); |
| 321 EXPECT_EQ(ER_UNHANDLED, mouse.result()); | 325 EXPECT_EQ(ER_UNHANDLED, mouse.result()); |
| 322 | 326 |
| 323 int handlers[] = { 11, 11 }; | 327 int handlers[] = { 11, 11 }; |
| 324 EXPECT_EQ( | 328 EXPECT_EQ( |
| 325 std::vector<int>(handlers, handlers + sizeof(handlers) / sizeof(int)), | 329 std::vector<int>(handlers, handlers + sizeof(handlers) / sizeof(int)), |
| 326 target.handler_list()); | 330 target.handler_list()); |
| 327 } | 331 } |
| 328 | 332 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 339 target.AddPreTargetHandler(&h1); | 343 target.AddPreTargetHandler(&h1); |
| 340 target.AddPreTargetHandler(&handler); | 344 target.AddPreTargetHandler(&handler); |
| 341 target.AddPreTargetHandler(&h2); | 345 target.AddPreTargetHandler(&h2); |
| 342 | 346 |
| 343 h1.set_expect_pre_target(true); | 347 h1.set_expect_pre_target(true); |
| 344 handler.set_expect_pre_target(true); | 348 handler.set_expect_pre_target(true); |
| 345 // |h2| should not receive any events at all since |handler| will have | 349 // |h2| should not receive any events at all since |handler| will have |
| 346 // destroyed the dispatcher. | 350 // destroyed the dispatcher. |
| 347 h2.set_expect_pre_target(false); | 351 h2.set_expect_pre_target(false); |
| 348 | 352 |
| 349 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), | 353 MouseEvent mouse( |
| 350 ui::EventTimeForNow(), 0, 0); | 354 ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), |
| 355 ui::EventTimeForNow(), 0, 0, |
| 356 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 351 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse); | 357 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse); |
| 352 EXPECT_TRUE(details.dispatcher_destroyed); | 358 EXPECT_TRUE(details.dispatcher_destroyed); |
| 353 EXPECT_EQ(ER_CONSUMED, mouse.result()); | 359 EXPECT_EQ(ER_CONSUMED, mouse.result()); |
| 354 EXPECT_EQ(2U, target.handler_list().size()); | 360 EXPECT_EQ(2U, target.handler_list().size()); |
| 355 EXPECT_EQ(1, target.handler_list()[0]); | 361 EXPECT_EQ(1, target.handler_list()[0]); |
| 356 EXPECT_EQ(5, target.handler_list()[1]); | 362 EXPECT_EQ(5, target.handler_list()[1]); |
| 357 } | 363 } |
| 358 | 364 |
| 359 // Test for non-cancelable event. | 365 // Test for non-cancelable event. |
| 360 { | 366 { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 391 target.AddPostTargetHandler(&h1); | 397 target.AddPostTargetHandler(&h1); |
| 392 target.AddPostTargetHandler(&handler); | 398 target.AddPostTargetHandler(&handler); |
| 393 target.AddPostTargetHandler(&h2); | 399 target.AddPostTargetHandler(&h2); |
| 394 | 400 |
| 395 h1.set_expect_post_target(true); | 401 h1.set_expect_post_target(true); |
| 396 handler.set_expect_post_target(true); | 402 handler.set_expect_post_target(true); |
| 397 // |h2| should not receive any events at all since |handler| will have | 403 // |h2| should not receive any events at all since |handler| will have |
| 398 // destroyed the dispatcher. | 404 // destroyed the dispatcher. |
| 399 h2.set_expect_post_target(false); | 405 h2.set_expect_post_target(false); |
| 400 | 406 |
| 401 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), | 407 MouseEvent mouse( |
| 402 ui::EventTimeForNow(), 0, 0); | 408 ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), |
| 409 ui::EventTimeForNow(), 0, 0, |
| 410 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 403 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse); | 411 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse); |
| 404 EXPECT_TRUE(details.dispatcher_destroyed); | 412 EXPECT_TRUE(details.dispatcher_destroyed); |
| 405 EXPECT_EQ(ER_CONSUMED, mouse.result()); | 413 EXPECT_EQ(ER_CONSUMED, mouse.result()); |
| 406 EXPECT_EQ(2U, target.handler_list().size()); | 414 EXPECT_EQ(2U, target.handler_list().size()); |
| 407 EXPECT_EQ(1, target.handler_list()[0]); | 415 EXPECT_EQ(1, target.handler_list()[0]); |
| 408 EXPECT_EQ(5, target.handler_list()[1]); | 416 EXPECT_EQ(5, target.handler_list()[1]); |
| 409 } | 417 } |
| 410 | 418 |
| 411 // Test for non-cancelable event. | 419 // Test for non-cancelable event. |
| 412 { | 420 { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 | 453 |
| 446 target.AddPreTargetHandler(&h1); | 454 target.AddPreTargetHandler(&h1); |
| 447 target.AddPreTargetHandler(&invalidate_handler); | 455 target.AddPreTargetHandler(&invalidate_handler); |
| 448 target.AddPreTargetHandler(&h3); | 456 target.AddPreTargetHandler(&h3); |
| 449 | 457 |
| 450 h1.set_expect_pre_target(true); | 458 h1.set_expect_pre_target(true); |
| 451 invalidate_handler.set_expect_pre_target(true); | 459 invalidate_handler.set_expect_pre_target(true); |
| 452 // |h3| should not receive events as the target will be invalidated. | 460 // |h3| should not receive events as the target will be invalidated. |
| 453 h3.set_expect_pre_target(false); | 461 h3.set_expect_pre_target(false); |
| 454 | 462 |
| 455 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), | 463 MouseEvent mouse( |
| 456 ui::EventTimeForNow(), 0, 0); | 464 ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), |
| 465 ui::EventTimeForNow(), 0, 0, |
| 466 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 457 EventDispatchDetails details = dispatcher.ProcessEvent(&target, &mouse); | 467 EventDispatchDetails details = dispatcher.ProcessEvent(&target, &mouse); |
| 458 EXPECT_FALSE(details.dispatcher_destroyed); | 468 EXPECT_FALSE(details.dispatcher_destroyed); |
| 459 EXPECT_TRUE(details.target_destroyed); | 469 EXPECT_TRUE(details.target_destroyed); |
| 460 EXPECT_FALSE(target.valid()); | 470 EXPECT_FALSE(target.valid()); |
| 461 EXPECT_TRUE(mouse.stopped_propagation()); | 471 EXPECT_TRUE(mouse.stopped_propagation()); |
| 462 EXPECT_EQ(2U, target.handler_list().size()); | 472 EXPECT_EQ(2U, target.handler_list().size()); |
| 463 EXPECT_EQ(1, target.handler_list()[0]); | 473 EXPECT_EQ(1, target.handler_list()[0]); |
| 464 EXPECT_EQ(2, target.handler_list()[1]); | 474 EXPECT_EQ(2, target.handler_list()[1]); |
| 465 | 475 |
| 466 // Test for non-cancelable event. | 476 // Test for non-cancelable event. |
| (...skipping 21 matching lines...) Expand all Loading... |
| 488 target.AddPreTargetHandler(&h1); | 498 target.AddPreTargetHandler(&h1); |
| 489 target.AddPreTargetHandler(&handle_destroyer); | 499 target.AddPreTargetHandler(&handle_destroyer); |
| 490 target.AddPreTargetHandler(h3); | 500 target.AddPreTargetHandler(h3); |
| 491 | 501 |
| 492 h1.set_expect_pre_target(true); | 502 h1.set_expect_pre_target(true); |
| 493 handle_destroyer.set_expect_pre_target(true); | 503 handle_destroyer.set_expect_pre_target(true); |
| 494 // |h3| should not receive events since |handle_destroyer| will have | 504 // |h3| should not receive events since |handle_destroyer| will have |
| 495 // destroyed it. | 505 // destroyed it. |
| 496 h3->set_expect_pre_target(false); | 506 h3->set_expect_pre_target(false); |
| 497 | 507 |
| 498 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), | 508 MouseEvent mouse( |
| 499 ui::EventTimeForNow(), 0, 0); | 509 ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), |
| 510 ui::EventTimeForNow(), 0, 0, |
| 511 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 500 EventDispatchDetails details = dispatcher.ProcessEvent(&target, &mouse); | 512 EventDispatchDetails details = dispatcher.ProcessEvent(&target, &mouse); |
| 501 EXPECT_FALSE(details.dispatcher_destroyed); | 513 EXPECT_FALSE(details.dispatcher_destroyed); |
| 502 EXPECT_FALSE(details.target_destroyed); | 514 EXPECT_FALSE(details.target_destroyed); |
| 503 EXPECT_FALSE(mouse.stopped_propagation()); | 515 EXPECT_FALSE(mouse.stopped_propagation()); |
| 504 EXPECT_EQ(2U, target.handler_list().size()); | 516 EXPECT_EQ(2U, target.handler_list().size()); |
| 505 EXPECT_EQ(1, target.handler_list()[0]); | 517 EXPECT_EQ(1, target.handler_list()[0]); |
| 506 EXPECT_EQ(2, target.handler_list()[1]); | 518 EXPECT_EQ(2, target.handler_list()[1]); |
| 507 } | 519 } |
| 508 | 520 |
| 509 // Test for non-cancelable events. | 521 // Test for non-cancelable events. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 target.AddPreTargetHandler(&destroyer); | 558 target.AddPreTargetHandler(&destroyer); |
| 547 target.AddPreTargetHandler(h3); | 559 target.AddPreTargetHandler(h3); |
| 548 | 560 |
| 549 h1.set_expect_pre_target(true); | 561 h1.set_expect_pre_target(true); |
| 550 destroyer.set_expect_pre_target(true); | 562 destroyer.set_expect_pre_target(true); |
| 551 destroyer.set_dispatcher_delegate(dispatcher); | 563 destroyer.set_dispatcher_delegate(dispatcher); |
| 552 // |h3| should not receive events since |destroyer| will have destroyed | 564 // |h3| should not receive events since |destroyer| will have destroyed |
| 553 // it. | 565 // it. |
| 554 h3->set_expect_pre_target(false); | 566 h3->set_expect_pre_target(false); |
| 555 | 567 |
| 556 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), | 568 MouseEvent mouse( |
| 557 ui::EventTimeForNow(), 0, 0); | 569 ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), |
| 570 ui::EventTimeForNow(), 0, 0, |
| 571 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE)); |
| 558 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse); | 572 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse); |
| 559 EXPECT_TRUE(details.dispatcher_destroyed); | 573 EXPECT_TRUE(details.dispatcher_destroyed); |
| 560 EXPECT_TRUE(mouse.stopped_propagation()); | 574 EXPECT_TRUE(mouse.stopped_propagation()); |
| 561 EXPECT_EQ(2U, target.handler_list().size()); | 575 EXPECT_EQ(2U, target.handler_list().size()); |
| 562 EXPECT_EQ(1, target.handler_list()[0]); | 576 EXPECT_EQ(1, target.handler_list()[0]); |
| 563 EXPECT_EQ(2, target.handler_list()[1]); | 577 EXPECT_EQ(2, target.handler_list()[1]); |
| 564 } | 578 } |
| 565 | 579 |
| 566 // Test for non-cancelable events. | 580 // Test for non-cancelable events. |
| 567 { | 581 { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 585 NonCancelableEvent event; | 599 NonCancelableEvent event; |
| 586 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &event); | 600 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &event); |
| 587 EXPECT_TRUE(details.dispatcher_destroyed); | 601 EXPECT_TRUE(details.dispatcher_destroyed); |
| 588 EXPECT_EQ(2U, target.handler_list().size()); | 602 EXPECT_EQ(2U, target.handler_list().size()); |
| 589 EXPECT_EQ(1, target.handler_list()[0]); | 603 EXPECT_EQ(1, target.handler_list()[0]); |
| 590 EXPECT_EQ(2, target.handler_list()[1]); | 604 EXPECT_EQ(2, target.handler_list()[1]); |
| 591 } | 605 } |
| 592 } | 606 } |
| 593 | 607 |
| 594 } // namespace ui | 608 } // namespace ui |
| OLD | NEW |