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