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

Side by Side Diff: components/mus/public/cpp/tests/window_tree_client_unittest.cc

Issue 1939133002: StructTraits to map mus::mojom::Event to unique_ptr<ui::Event> (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed feedback. Created 4 years, 6 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/mus/public/cpp/window_tree_client.h" 5 #include "components/mus/public/cpp/window_tree_client.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 Window* root = setup.GetFirstRoot(); 445 Window* root = setup.GetFirstRoot();
446 ASSERT_TRUE(root); 446 ASSERT_TRUE(root);
447 447
448 TestInputEventHandler event_handler; 448 TestInputEventHandler event_handler;
449 root->set_input_event_handler(&event_handler); 449 root->set_input_event_handler(&event_handler);
450 450
451 std::unique_ptr<ui::Event> ui_event( 451 std::unique_ptr<ui::Event> ui_event(
452 new ui::MouseEvent(ui::ET_MOUSE_MOVED, gfx::Point(), gfx::Point(), 452 new ui::MouseEvent(ui::ET_MOUSE_MOVED, gfx::Point(), gfx::Point(),
453 ui::EventTimeForNow(), ui::EF_NONE, 0)); 453 ui::EventTimeForNow(), ui::EF_NONE, 0));
454 setup.window_tree_client()->OnWindowInputEvent( 454 setup.window_tree_client()->OnWindowInputEvent(
455 1, server_id(root), mojom::Event::From(*ui_event.get()), 0); 455 1, server_id(root), ui::Event::Clone(*ui_event.get()), 0);
456 EXPECT_TRUE(event_handler.received_event()); 456 EXPECT_TRUE(event_handler.received_event());
457 EXPECT_TRUE(setup.window_tree()->WasEventAcked(1)); 457 EXPECT_TRUE(setup.window_tree()->WasEventAcked(1));
458 event_handler.Reset(); 458 event_handler.Reset();
459 459
460 event_handler.set_should_manually_ack(); 460 event_handler.set_should_manually_ack();
461 setup.window_tree_client()->OnWindowInputEvent( 461 setup.window_tree_client()->OnWindowInputEvent(
462 33, server_id(root), mojom::Event::From(*ui_event.get()), 0); 462 33, server_id(root), ui::Event::Clone(*ui_event.get()), 0);
463 EXPECT_TRUE(event_handler.received_event()); 463 EXPECT_TRUE(event_handler.received_event());
464 EXPECT_FALSE(setup.window_tree()->WasEventAcked(33)); 464 EXPECT_FALSE(setup.window_tree()->WasEventAcked(33));
465 465
466 event_handler.AckEvent(); 466 event_handler.AckEvent();
467 EXPECT_TRUE(setup.window_tree()->WasEventAcked(33)); 467 EXPECT_TRUE(setup.window_tree()->WasEventAcked(33));
468 } 468 }
469 469
470 // Tests event observers triggered by events that did not hit a target in this 470 // Tests event observers triggered by events that did not hit a target in this
471 // window tree. 471 // window tree.
472 TEST_F(WindowTreeClientTest, OnEventObserved) { 472 TEST_F(WindowTreeClientTest, OnEventObserved) {
473 WindowTreeSetup setup; 473 WindowTreeSetup setup;
474 Window* root = setup.GetFirstRoot(); 474 Window* root = setup.GetFirstRoot();
475 ASSERT_TRUE(root); 475 ASSERT_TRUE(root);
476 476
477 // Set up an event observer. 477 // Set up an event observer.
478 mojom::EventMatcherPtr matcher = mojom::EventMatcher::New(); 478 mojom::EventMatcherPtr matcher = mojom::EventMatcher::New();
479 matcher->type_matcher = mojom::EventTypeMatcher::New(); 479 matcher->type_matcher = mojom::EventTypeMatcher::New();
480 matcher->type_matcher->type = mojom::EventType::POINTER_DOWN; 480 matcher->type_matcher->type = mojom::EventType::POINTER_DOWN;
481 setup.client()->SetEventObserver(std::move(matcher)); 481 setup.client()->SetEventObserver(std::move(matcher));
482 482
483 // Simulate the server sending an observed event. 483 // Simulate the server sending an observed event.
484 uint32_t event_observer_id = setup.GetEventObserverId(); 484 uint32_t event_observer_id = setup.GetEventObserverId();
485 std::unique_ptr<ui::Event> ui_event( 485 std::unique_ptr<ui::Event> ui_event(
486 new ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), 486 new ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
487 ui::EventTimeForNow(), ui::EF_CONTROL_DOWN, 0)); 487 ui::EventTimeForNow(), ui::EF_CONTROL_DOWN, 0));
488 setup.window_tree_client()->OnEventObserved( 488 setup.window_tree_client()->OnEventObserved(ui::Event::Clone(*ui_event.get()),
489 mojom::Event::From(*ui_event.get()), event_observer_id); 489 event_observer_id);
490 490
491 // Delegate sensed the event. 491 // Delegate sensed the event.
492 ui::Event* last_event = setup.window_tree_delegate()->last_event_observed(); 492 ui::Event* last_event = setup.window_tree_delegate()->last_event_observed();
493 EXPECT_EQ(ui::ET_MOUSE_PRESSED, last_event->type()); 493 EXPECT_EQ(ui::ET_MOUSE_PRESSED, last_event->type());
494 EXPECT_EQ(ui::EF_CONTROL_DOWN, last_event->flags()); 494 EXPECT_EQ(ui::EF_CONTROL_DOWN, last_event->flags());
495 setup.window_tree_delegate()->Reset(); 495 setup.window_tree_delegate()->Reset();
496 496
497 // Clear the event observer. 497 // Clear the event observer.
498 setup.client()->SetEventObserver(nullptr); 498 setup.client()->SetEventObserver(nullptr);
499 499
500 // Simulate another event from the server. 500 // Simulate another event from the server.
501 setup.window_tree_client()->OnEventObserved( 501 setup.window_tree_client()->OnEventObserved(ui::Event::Clone(*ui_event.get()),
502 mojom::Event::From(*ui_event.get()), event_observer_id); 502 event_observer_id);
503 503
504 // No event was sensed. 504 // No event was sensed.
505 EXPECT_FALSE(setup.window_tree_delegate()->last_event_observed()); 505 EXPECT_FALSE(setup.window_tree_delegate()->last_event_observed());
506 } 506 }
507 507
508 // Tests event observers triggered by events that hit this window tree. 508 // Tests event observers triggered by events that hit this window tree.
509 TEST_F(WindowTreeClientTest, OnWindowInputEventWithEventObserver) { 509 TEST_F(WindowTreeClientTest, OnWindowInputEventWithEventObserver) {
510 WindowTreeSetup setup; 510 WindowTreeSetup setup;
511 Window* root = setup.GetFirstRoot(); 511 Window* root = setup.GetFirstRoot();
512 ASSERT_TRUE(root); 512 ASSERT_TRUE(root);
513 513
514 // Set up an event observer. 514 // Set up an event observer.
515 mojom::EventMatcherPtr matcher = mojom::EventMatcher::New(); 515 mojom::EventMatcherPtr matcher = mojom::EventMatcher::New();
516 matcher->type_matcher = mojom::EventTypeMatcher::New(); 516 matcher->type_matcher = mojom::EventTypeMatcher::New();
517 matcher->type_matcher->type = mojom::EventType::POINTER_DOWN; 517 matcher->type_matcher->type = mojom::EventType::POINTER_DOWN;
518 setup.client()->SetEventObserver(std::move(matcher)); 518 setup.client()->SetEventObserver(std::move(matcher));
519 519
520 // Simulate the server dispatching an event that also matched the observer. 520 // Simulate the server dispatching an event that also matched the observer.
521 uint32_t event_observer_id = setup.GetEventObserverId(); 521 uint32_t event_observer_id = setup.GetEventObserverId();
522 std::unique_ptr<ui::Event> ui_event( 522 std::unique_ptr<ui::Event> ui_event(
523 new ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), 523 new ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
524 ui::EventTimeForNow(), ui::EF_CONTROL_DOWN, 0)); 524 ui::EventTimeForNow(), ui::EF_CONTROL_DOWN, 0));
525 setup.window_tree_client()->OnWindowInputEvent( 525 setup.window_tree_client()->OnWindowInputEvent(
526 1, server_id(root), mojom::Event::From(*ui_event.get()), 526 1, server_id(root), std::move(ui_event), event_observer_id);
527 event_observer_id);
528 527
529 // Delegate sensed the event. 528 // Delegate sensed the event.
530 ui::Event* last_event = setup.window_tree_delegate()->last_event_observed(); 529 ui::Event* last_event = setup.window_tree_delegate()->last_event_observed();
531 EXPECT_EQ(ui::ET_MOUSE_PRESSED, last_event->type()); 530 EXPECT_EQ(ui::ET_MOUSE_PRESSED, last_event->type());
532 EXPECT_EQ(ui::EF_CONTROL_DOWN, last_event->flags()); 531 EXPECT_EQ(ui::EF_CONTROL_DOWN, last_event->flags());
533 } 532 }
534 533
535 // Tests that replacing an event observer with a new one results in only new 534 // Tests that replacing an event observer with a new one results in only new
536 // events being observed. 535 // events being observed.
537 TEST_F(WindowTreeClientTest, EventObserverReplaced) { 536 TEST_F(WindowTreeClientTest, EventObserverReplaced) {
(...skipping 13 matching lines...) Expand all
551 matcher2->type_matcher = mojom::EventTypeMatcher::New(); 550 matcher2->type_matcher = mojom::EventTypeMatcher::New();
552 matcher2->type_matcher->type = mojom::EventType::POINTER_UP; 551 matcher2->type_matcher->type = mojom::EventType::POINTER_UP;
553 setup.client()->SetEventObserver(std::move(matcher2)); 552 setup.client()->SetEventObserver(std::move(matcher2));
554 uint32_t event_observer_id2 = setup.GetEventObserverId(); 553 uint32_t event_observer_id2 = setup.GetEventObserverId();
555 554
556 // Simulate the server sending an observed event that matched the old observer 555 // Simulate the server sending an observed event that matched the old observer
557 // (e.g. that was in-flight when the observer was replaced). 556 // (e.g. that was in-flight when the observer was replaced).
558 std::unique_ptr<ui::Event> pressed_event( 557 std::unique_ptr<ui::Event> pressed_event(
559 new ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(), 558 new ui::MouseEvent(ui::ET_MOUSE_PRESSED, gfx::Point(), gfx::Point(),
560 ui::EventTimeForNow(), ui::EF_NONE, 0)); 559 ui::EventTimeForNow(), ui::EF_NONE, 0));
561 setup.window_tree_client()->OnEventObserved( 560 setup.window_tree_client()->OnEventObserved(std::move(pressed_event),
562 mojom::Event::From(*pressed_event.get()), event_observer_id1); 561 event_observer_id1);
563 562
564 // The event was not sensed, because it does not match the current observer. 563 // The event was not sensed, because it does not match the current observer.
565 EXPECT_FALSE(setup.window_tree_delegate()->last_event_observed()); 564 EXPECT_FALSE(setup.window_tree_delegate()->last_event_observed());
566 565
567 // Simulate another event that matches the new observer. 566 // Simulate another event that matches the new observer.
568 std::unique_ptr<ui::Event> released_event( 567 std::unique_ptr<ui::Event> released_event(
569 new ui::MouseEvent(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(), 568 new ui::MouseEvent(ui::ET_MOUSE_RELEASED, gfx::Point(), gfx::Point(),
570 ui::EventTimeForNow(), ui::EF_CONTROL_DOWN, 0)); 569 ui::EventTimeForNow(), ui::EF_CONTROL_DOWN, 0));
571 setup.window_tree_client()->OnEventObserved( 570 setup.window_tree_client()->OnEventObserved(std::move(released_event),
572 mojom::Event::From(*released_event.get()), event_observer_id2); 571 event_observer_id2);
573 572
574 // The delegate sensed the event. 573 // The delegate sensed the event.
575 ui::Event* last_event = setup.window_tree_delegate()->last_event_observed(); 574 ui::Event* last_event = setup.window_tree_delegate()->last_event_observed();
576 EXPECT_EQ(ui::ET_MOUSE_RELEASED, last_event->type()); 575 EXPECT_EQ(ui::ET_MOUSE_RELEASED, last_event->type());
577 EXPECT_EQ(ui::EF_CONTROL_DOWN, last_event->flags()); 576 EXPECT_EQ(ui::EF_CONTROL_DOWN, last_event->flags());
578 } 577 }
579 578
580 // Verifies focus is reverted if the server replied that the change failed. 579 // Verifies focus is reverted if the server replied that the change failed.
581 TEST_F(WindowTreeClientTest, SetFocusFailed) { 580 TEST_F(WindowTreeClientTest, SetFocusFailed) {
582 WindowTreeSetup setup; 581 WindowTreeSetup setup;
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 1043
1045 // Create a new Window, and attempt to place capture on that. 1044 // Create a new Window, and attempt to place capture on that.
1046 Window* child = setup.client()->NewWindow(); 1045 Window* child = setup.client()->NewWindow();
1047 child->SetVisible(true); 1046 child->SetVisible(true);
1048 root->AddChild(child); 1047 root->AddChild(child);
1049 child->SetCapture(); 1048 child->SetCapture();
1050 EXPECT_TRUE(child->HasCapture()); 1049 EXPECT_TRUE(child->HasCapture());
1051 } 1050 }
1052 1051
1053 } // namespace mus 1052 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/public/cpp/tests/window_tree_client_private.cc ('k') | components/mus/public/cpp/window_tree_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698