Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: ui/events/event_dispatcher_unittest.cc

Issue 1287103004: Sync ui/events to chromium @ https://codereview.chromium.org/1210203002 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: rebased Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/events/event_constants.h ('k') | ui/events/event_processor_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 20 matching lines...) Expand all
31 31
32 const std::vector<int>& handler_list() const { return handler_list_; } 32 const std::vector<int>& handler_list() const { return handler_list_; }
33 33
34 void Reset() { 34 void Reset() {
35 handler_list_.clear(); 35 handler_list_.clear();
36 valid_ = true; 36 valid_ = true;
37 } 37 }
38 38
39 private: 39 private:
40 // Overridden from EventTarget: 40 // Overridden from EventTarget:
41 bool CanAcceptEvent(const ui::Event& event) override { 41 bool CanAcceptEvent(const ui::Event& event) override { return true; }
42 return true; 42
43 EventTarget* GetParentTarget() override { return parent_; }
44
45 scoped_ptr<EventTargetIterator> GetChildIterator() const override {
46 return nullptr;
43 } 47 }
44 48
45 EventTarget* GetParentTarget() override { 49 EventTargeter* GetEventTargeter() override { return NULL; }
46 return parent_;
47 }
48
49 scoped_ptr<EventTargetIterator> GetChildIterator() override {
50 return scoped_ptr<EventTargetIterator>();
51 }
52
53 EventTargeter* GetEventTargeter() override {
54 return NULL;
55 }
56 50
57 TestTarget* parent_; 51 TestTarget* parent_;
58 std::vector<int> handler_list_; 52 std::vector<int> handler_list_;
59 bool valid_; 53 bool valid_;
60 54
61 DISALLOW_COPY_AND_ASSIGN(TestTarget); 55 DISALLOW_COPY_AND_ASSIGN(TestTarget);
62 }; 56 };
63 57
64 class TestEventHandler : public EventHandler { 58 class TestEventHandler : public EventHandler {
65 public: 59 public:
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 // Destroys a second event handler when this handler gets an event. 164 // Destroys a second event handler when this handler gets an event.
171 // Optionally also destroys the dispatcher. 165 // Optionally also destroys the dispatcher.
172 class EventHandlerDestroyer : public TestEventHandler { 166 class EventHandlerDestroyer : public TestEventHandler {
173 public: 167 public:
174 EventHandlerDestroyer(int id, EventHandler* destroy) 168 EventHandlerDestroyer(int id, EventHandler* destroy)
175 : TestEventHandler(id), 169 : TestEventHandler(id),
176 to_destroy_(destroy), 170 to_destroy_(destroy),
177 dispatcher_delegate_(NULL) { 171 dispatcher_delegate_(NULL) {
178 } 172 }
179 173
180 ~EventHandlerDestroyer() override { 174 ~EventHandlerDestroyer() override { CHECK(!to_destroy_); }
181 CHECK(!to_destroy_);
182 }
183 175
184 void set_dispatcher_delegate(EventDispatcherDelegate* dispatcher_delegate) { 176 void set_dispatcher_delegate(EventDispatcherDelegate* dispatcher_delegate) {
185 dispatcher_delegate_ = dispatcher_delegate; 177 dispatcher_delegate_ = dispatcher_delegate;
186 } 178 }
187 179
188 private: 180 private:
189 void ReceivedEvent(Event* event) override { 181 void ReceivedEvent(Event* event) override {
190 TestEventHandler::ReceivedEvent(event); 182 TestEventHandler::ReceivedEvent(event);
191 delete to_destroy_; 183 delete to_destroy_;
192 to_destroy_ = NULL; 184 to_destroy_ = NULL;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 child.AddPostTargetHandler(&h6); 240 child.AddPostTargetHandler(&h6);
249 241
250 parent.AddPostTargetHandler(&h7); 242 parent.AddPostTargetHandler(&h7);
251 parent.AddPostTargetHandler(&h8); 243 parent.AddPostTargetHandler(&h8);
252 244
253 h5.set_expect_post_target(true); 245 h5.set_expect_post_target(true);
254 h6.set_expect_post_target(true); 246 h6.set_expect_post_target(true);
255 h7.set_expect_post_target(true); 247 h7.set_expect_post_target(true);
256 h8.set_expect_post_target(true); 248 h8.set_expect_post_target(true);
257 249
258 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), 250 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4),
259 gfx::Point(3, 4), 0, 0); 251 ui::EventTimeForNow(), 0, 0);
260 Event::DispatcherApi event_mod(&mouse); 252 Event::DispatcherApi event_mod(&mouse);
261 dispatcher.ProcessEvent(&child, &mouse); 253 dispatcher.ProcessEvent(&child, &mouse);
262 EXPECT_FALSE(mouse.stopped_propagation()); 254 EXPECT_FALSE(mouse.stopped_propagation());
263 EXPECT_FALSE(mouse.handled()); 255 EXPECT_FALSE(mouse.handled());
264 256
265 { 257 {
266 int expected[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; 258 int expected[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
267 EXPECT_EQ( 259 EXPECT_EQ(
268 std::vector<int>(expected, expected + sizeof(expected) / sizeof(int)), 260 std::vector<int>(expected, expected + sizeof(expected) / sizeof(int)),
269 child.handler_list()); 261 child.handler_list());
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 TestEventDispatcher dispatcher; 314 TestEventDispatcher dispatcher;
323 TestTarget target; 315 TestTarget target;
324 316
325 TestEventHandler handler(11); 317 TestEventHandler handler(11);
326 318
327 target.AddPreTargetHandler(&handler); 319 target.AddPreTargetHandler(&handler);
328 target.AddPostTargetHandler(&handler); 320 target.AddPostTargetHandler(&handler);
329 handler.set_expect_pre_target(true); 321 handler.set_expect_pre_target(true);
330 handler.set_expect_post_target(true); 322 handler.set_expect_post_target(true);
331 323
332 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), 324 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4),
333 gfx::Point(3, 4), 0, 0); 325 ui::EventTimeForNow(), 0, 0);
334 Event::DispatcherApi event_mod(&mouse); 326 Event::DispatcherApi event_mod(&mouse);
335 dispatcher.ProcessEvent(&target, &mouse); 327 dispatcher.ProcessEvent(&target, &mouse);
336 EXPECT_EQ(ER_UNHANDLED, mouse.result()); 328 EXPECT_EQ(ER_UNHANDLED, mouse.result());
337 329
338 int handlers[] = { 11, 11 }; 330 int handlers[] = { 11, 11 };
339 EXPECT_EQ( 331 EXPECT_EQ(
340 std::vector<int>(handlers, handlers + sizeof(handlers) / sizeof(int)), 332 std::vector<int>(handlers, handlers + sizeof(handlers) / sizeof(int)),
341 target.handler_list()); 333 target.handler_list());
342 } 334 }
343 335
(...skipping 10 matching lines...) Expand all
354 target.AddPreTargetHandler(&h1); 346 target.AddPreTargetHandler(&h1);
355 target.AddPreTargetHandler(&handler); 347 target.AddPreTargetHandler(&handler);
356 target.AddPreTargetHandler(&h2); 348 target.AddPreTargetHandler(&h2);
357 349
358 h1.set_expect_pre_target(true); 350 h1.set_expect_pre_target(true);
359 handler.set_expect_pre_target(true); 351 handler.set_expect_pre_target(true);
360 // |h2| should not receive any events at all since |handler| will have 352 // |h2| should not receive any events at all since |handler| will have
361 // destroyed the dispatcher. 353 // destroyed the dispatcher.
362 h2.set_expect_pre_target(false); 354 h2.set_expect_pre_target(false);
363 355
364 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), 356 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4),
365 gfx::Point(3, 4), 0, 0); 357 ui::EventTimeForNow(), 0, 0);
366 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse); 358 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse);
367 EXPECT_TRUE(details.dispatcher_destroyed); 359 EXPECT_TRUE(details.dispatcher_destroyed);
368 EXPECT_EQ(ER_CONSUMED, mouse.result()); 360 EXPECT_EQ(ER_CONSUMED, mouse.result());
369 EXPECT_EQ(2U, target.handler_list().size()); 361 EXPECT_EQ(2U, target.handler_list().size());
370 EXPECT_EQ(1, target.handler_list()[0]); 362 EXPECT_EQ(1, target.handler_list()[0]);
371 EXPECT_EQ(5, target.handler_list()[1]); 363 EXPECT_EQ(5, target.handler_list()[1]);
372 } 364 }
373 365
374 // Test for non-cancelable event. 366 // Test for non-cancelable event.
375 { 367 {
(...skipping 30 matching lines...) Expand all
406 target.AddPostTargetHandler(&h1); 398 target.AddPostTargetHandler(&h1);
407 target.AddPostTargetHandler(&handler); 399 target.AddPostTargetHandler(&handler);
408 target.AddPostTargetHandler(&h2); 400 target.AddPostTargetHandler(&h2);
409 401
410 h1.set_expect_post_target(true); 402 h1.set_expect_post_target(true);
411 handler.set_expect_post_target(true); 403 handler.set_expect_post_target(true);
412 // |h2| should not receive any events at all since |handler| will have 404 // |h2| should not receive any events at all since |handler| will have
413 // destroyed the dispatcher. 405 // destroyed the dispatcher.
414 h2.set_expect_post_target(false); 406 h2.set_expect_post_target(false);
415 407
416 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), 408 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4),
417 gfx::Point(3, 4), 0, 0); 409 ui::EventTimeForNow(), 0, 0);
418 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse); 410 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse);
419 EXPECT_TRUE(details.dispatcher_destroyed); 411 EXPECT_TRUE(details.dispatcher_destroyed);
420 EXPECT_EQ(ER_CONSUMED, mouse.result()); 412 EXPECT_EQ(ER_CONSUMED, mouse.result());
421 EXPECT_EQ(2U, target.handler_list().size()); 413 EXPECT_EQ(2U, target.handler_list().size());
422 EXPECT_EQ(1, target.handler_list()[0]); 414 EXPECT_EQ(1, target.handler_list()[0]);
423 EXPECT_EQ(5, target.handler_list()[1]); 415 EXPECT_EQ(5, target.handler_list()[1]);
424 } 416 }
425 417
426 // Test for non-cancelable event. 418 // Test for non-cancelable event.
427 { 419 {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 452
461 target.AddPreTargetHandler(&h1); 453 target.AddPreTargetHandler(&h1);
462 target.AddPreTargetHandler(&invalidate_handler); 454 target.AddPreTargetHandler(&invalidate_handler);
463 target.AddPreTargetHandler(&h3); 455 target.AddPreTargetHandler(&h3);
464 456
465 h1.set_expect_pre_target(true); 457 h1.set_expect_pre_target(true);
466 invalidate_handler.set_expect_pre_target(true); 458 invalidate_handler.set_expect_pre_target(true);
467 // |h3| should not receive events as the target will be invalidated. 459 // |h3| should not receive events as the target will be invalidated.
468 h3.set_expect_pre_target(false); 460 h3.set_expect_pre_target(false);
469 461
470 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), 0, 462 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4),
471 0); 463 ui::EventTimeForNow(), 0, 0);
472 EventDispatchDetails details = dispatcher.ProcessEvent(&target, &mouse); 464 EventDispatchDetails details = dispatcher.ProcessEvent(&target, &mouse);
473 EXPECT_FALSE(details.dispatcher_destroyed); 465 EXPECT_FALSE(details.dispatcher_destroyed);
474 EXPECT_TRUE(details.target_destroyed); 466 EXPECT_TRUE(details.target_destroyed);
475 EXPECT_FALSE(target.valid()); 467 EXPECT_FALSE(target.valid());
476 EXPECT_TRUE(mouse.stopped_propagation()); 468 EXPECT_TRUE(mouse.stopped_propagation());
477 EXPECT_EQ(2U, target.handler_list().size()); 469 EXPECT_EQ(2U, target.handler_list().size());
478 EXPECT_EQ(1, target.handler_list()[0]); 470 EXPECT_EQ(1, target.handler_list()[0]);
479 EXPECT_EQ(2, target.handler_list()[1]); 471 EXPECT_EQ(2, target.handler_list()[1]);
480 472
481 // Test for non-cancelable event. 473 // Test for non-cancelable event.
(...skipping 21 matching lines...) Expand all
503 target.AddPreTargetHandler(&h1); 495 target.AddPreTargetHandler(&h1);
504 target.AddPreTargetHandler(&handle_destroyer); 496 target.AddPreTargetHandler(&handle_destroyer);
505 target.AddPreTargetHandler(h3); 497 target.AddPreTargetHandler(h3);
506 498
507 h1.set_expect_pre_target(true); 499 h1.set_expect_pre_target(true);
508 handle_destroyer.set_expect_pre_target(true); 500 handle_destroyer.set_expect_pre_target(true);
509 // |h3| should not receive events since |handle_destroyer| will have 501 // |h3| should not receive events since |handle_destroyer| will have
510 // destroyed it. 502 // destroyed it.
511 h3->set_expect_pre_target(false); 503 h3->set_expect_pre_target(false);
512 504
513 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), 0, 505 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4),
514 0); 506 ui::EventTimeForNow(), 0, 0);
515 EventDispatchDetails details = dispatcher.ProcessEvent(&target, &mouse); 507 EventDispatchDetails details = dispatcher.ProcessEvent(&target, &mouse);
516 EXPECT_FALSE(details.dispatcher_destroyed); 508 EXPECT_FALSE(details.dispatcher_destroyed);
517 EXPECT_FALSE(details.target_destroyed); 509 EXPECT_FALSE(details.target_destroyed);
518 EXPECT_FALSE(mouse.stopped_propagation()); 510 EXPECT_FALSE(mouse.stopped_propagation());
519 EXPECT_EQ(2U, target.handler_list().size()); 511 EXPECT_EQ(2U, target.handler_list().size());
520 EXPECT_EQ(1, target.handler_list()[0]); 512 EXPECT_EQ(1, target.handler_list()[0]);
521 EXPECT_EQ(2, target.handler_list()[1]); 513 EXPECT_EQ(2, target.handler_list()[1]);
522 } 514 }
523 515
524 // Test for non-cancelable events. 516 // Test for non-cancelable events.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 target.AddPreTargetHandler(&destroyer); 553 target.AddPreTargetHandler(&destroyer);
562 target.AddPreTargetHandler(h3); 554 target.AddPreTargetHandler(h3);
563 555
564 h1.set_expect_pre_target(true); 556 h1.set_expect_pre_target(true);
565 destroyer.set_expect_pre_target(true); 557 destroyer.set_expect_pre_target(true);
566 destroyer.set_dispatcher_delegate(dispatcher); 558 destroyer.set_dispatcher_delegate(dispatcher);
567 // |h3| should not receive events since |destroyer| will have destroyed 559 // |h3| should not receive events since |destroyer| will have destroyed
568 // it. 560 // it.
569 h3->set_expect_pre_target(false); 561 h3->set_expect_pre_target(false);
570 562
571 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4), 0, 563 MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4), gfx::Point(3, 4),
572 0); 564 ui::EventTimeForNow(), 0, 0);
573 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse); 565 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &mouse);
574 EXPECT_TRUE(details.dispatcher_destroyed); 566 EXPECT_TRUE(details.dispatcher_destroyed);
575 EXPECT_TRUE(mouse.stopped_propagation()); 567 EXPECT_TRUE(mouse.stopped_propagation());
576 EXPECT_EQ(2U, target.handler_list().size()); 568 EXPECT_EQ(2U, target.handler_list().size());
577 EXPECT_EQ(1, target.handler_list()[0]); 569 EXPECT_EQ(1, target.handler_list()[0]);
578 EXPECT_EQ(2, target.handler_list()[1]); 570 EXPECT_EQ(2, target.handler_list()[1]);
579 } 571 }
580 572
581 // Test for non-cancelable events. 573 // Test for non-cancelable events.
582 { 574 {
(...skipping 17 matching lines...) Expand all
600 NonCancelableEvent event; 592 NonCancelableEvent event;
601 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &event); 593 EventDispatchDetails details = dispatcher->ProcessEvent(&target, &event);
602 EXPECT_TRUE(details.dispatcher_destroyed); 594 EXPECT_TRUE(details.dispatcher_destroyed);
603 EXPECT_EQ(2U, target.handler_list().size()); 595 EXPECT_EQ(2U, target.handler_list().size());
604 EXPECT_EQ(1, target.handler_list()[0]); 596 EXPECT_EQ(1, target.handler_list()[0]);
605 EXPECT_EQ(2, target.handler_list()[1]); 597 EXPECT_EQ(2, target.handler_list()[1]);
606 } 598 }
607 } 599 }
608 600
609 } // namespace ui 601 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/event_constants.h ('k') | ui/events/event_processor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698