| Index: services/ui/ws/event_dispatcher_unittest.cc
|
| diff --git a/services/ui/ws/event_dispatcher_unittest.cc b/services/ui/ws/event_dispatcher_unittest.cc
|
| index ea220685098ca3bb4dc117fe70b669a9a0156202..066aaaec99a4ead2b093bffbe802a0045aa381b1 100644
|
| --- a/services/ui/ws/event_dispatcher_unittest.cc
|
| +++ b/services/ui/ws/event_dispatcher_unittest.cc
|
| @@ -67,9 +67,14 @@ class TestEventDispatcherDelegate : public EventDispatcherDelegate {
|
| uint32_t GetAndClearLastAccelerator() {
|
| uint32_t return_value = last_accelerator_;
|
| last_accelerator_ = 0;
|
| + last_accelerator_phase_ = AcceleratorPhase::POST;
|
| return return_value;
|
| }
|
|
|
| + AcceleratorPhase last_accelerator_phase() const {
|
| + return last_accelerator_phase_;
|
| + }
|
| +
|
| void set_root(ServerWindow* root) { root_ = root; }
|
|
|
| // Returns the last dispatched event, or null if there are no more.
|
| @@ -100,9 +105,12 @@ class TestEventDispatcherDelegate : public EventDispatcherDelegate {
|
|
|
| private:
|
| // EventDispatcherDelegate:
|
| - void OnAccelerator(uint32_t accelerator, const ui::Event& event) override {
|
| + void OnAccelerator(uint32_t accelerator,
|
| + const ui::Event& event,
|
| + AcceleratorPhase phase) override {
|
| EXPECT_EQ(0u, last_accelerator_);
|
| last_accelerator_ = accelerator;
|
| + last_accelerator_phase_ = phase;
|
| }
|
| ServerWindow* GetFocusedWindowForEventDispatcher() override {
|
| return focused_window_;
|
| @@ -142,6 +150,7 @@ class TestEventDispatcherDelegate : public EventDispatcherDelegate {
|
| ServerWindow* focused_window_;
|
| ServerWindow* lost_capture_window_;
|
| uint32_t last_accelerator_;
|
| + AcceleratorPhase last_accelerator_phase_ = AcceleratorPhase::POST;
|
| std::queue<std::unique_ptr<DispatchedEventDetails>> dispatched_event_queue_;
|
| ServerWindow* root_ = nullptr;
|
| std::unique_ptr<ui::Event> last_event_target_not_found_;
|
| @@ -190,9 +199,11 @@ void RunMouseEventTests(EventDispatcher* dispatcher,
|
| ASSERT_FALSE(dispatcher_delegate->has_queued_events())
|
| << " unexpected queued events before running " << i;
|
| if (test.input_event.IsMouseWheelEvent())
|
| - dispatcher->ProcessEvent(test.input_event);
|
| + dispatcher->ProcessEvent(test.input_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| else
|
| - dispatcher->ProcessEvent(ui::PointerEvent(test.input_event));
|
| + dispatcher->ProcessEvent(ui::PointerEvent(test.input_event),
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| @@ -331,7 +342,8 @@ TEST_F(EventDispatcherTest, ProcessEvent) {
|
| const ui::PointerEvent ui_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(20, 25), gfx::Point(20, 25),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(ui_event);
|
| + event_dispatcher()->ProcessEvent(ui_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -349,7 +361,8 @@ TEST_F(EventDispatcherTest, ProcessEvent) {
|
| TEST_F(EventDispatcherTest, ProcessEventNoTarget) {
|
| // Send event without a target.
|
| ui::KeyEvent key(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE);
|
| - event_dispatcher()->ProcessEvent(key);
|
| + event_dispatcher()->ProcessEvent(key,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Event wasn't dispatched to a target.
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| @@ -413,7 +426,7 @@ TEST_F(EventDispatcherTest, EventMatching) {
|
| dispatcher->AddAccelerator(accelerator_1, std::move(matcher));
|
|
|
| ui::KeyEvent key(ui::ET_KEY_PRESSED, ui::VKEY_W, ui::EF_CONTROL_DOWN);
|
| - dispatcher->ProcessEvent(key);
|
| + dispatcher->ProcessEvent(key, EventDispatcher::AcceleratorMatchPhase::ANY);
|
| EXPECT_EQ(accelerator_1,
|
| event_dispatcher_delegate->GetAndClearLastAccelerator());
|
|
|
| @@ -421,24 +434,24 @@ TEST_F(EventDispatcherTest, EventMatching) {
|
| // ignoring.
|
| key = ui::KeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_W,
|
| ui::EF_CONTROL_DOWN | ui::EF_NUM_LOCK_ON);
|
| - dispatcher->ProcessEvent(key);
|
| + dispatcher->ProcessEvent(key, EventDispatcher::AcceleratorMatchPhase::ANY);
|
| EXPECT_EQ(accelerator_1,
|
| event_dispatcher_delegate->GetAndClearLastAccelerator());
|
|
|
| key = ui::KeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_W, ui::EF_NONE);
|
| - dispatcher->ProcessEvent(key);
|
| + dispatcher->ProcessEvent(key, EventDispatcher::AcceleratorMatchPhase::ANY);
|
| EXPECT_EQ(0u, event_dispatcher_delegate->GetAndClearLastAccelerator());
|
|
|
| uint32_t accelerator_2 = 2;
|
| matcher = ui::CreateKeyMatcher(ui::mojom::KeyboardCode::W,
|
| ui::mojom::kEventFlagNone);
|
| dispatcher->AddAccelerator(accelerator_2, std::move(matcher));
|
| - dispatcher->ProcessEvent(key);
|
| + dispatcher->ProcessEvent(key, EventDispatcher::AcceleratorMatchPhase::ANY);
|
| EXPECT_EQ(accelerator_2,
|
| event_dispatcher_delegate->GetAndClearLastAccelerator());
|
|
|
| dispatcher->RemoveAccelerator(accelerator_2);
|
| - dispatcher->ProcessEvent(key);
|
| + dispatcher->ProcessEvent(key, EventDispatcher::AcceleratorMatchPhase::ANY);
|
| EXPECT_EQ(0u, event_dispatcher_delegate->GetAndClearLastAccelerator());
|
| }
|
|
|
| @@ -456,7 +469,7 @@ TEST_F(EventDispatcherTest, PostTargetAccelerator) {
|
|
|
| ui::KeyEvent key(ui::ET_KEY_PRESSED, ui::VKEY_W, ui::EF_CONTROL_DOWN);
|
| // The post-target accelerator should be fired if there is no focused window.
|
| - dispatcher->ProcessEvent(key);
|
| + dispatcher->ProcessEvent(key, EventDispatcher::AcceleratorMatchPhase::ANY);
|
| EXPECT_EQ(accelerator_1,
|
| event_dispatcher_delegate->GetAndClearLastAccelerator());
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| @@ -468,7 +481,7 @@ TEST_F(EventDispatcherTest, PostTargetAccelerator) {
|
| event_dispatcher_delegate->SetFocusedWindowFromEventDispatcher(child.get());
|
|
|
| // With a focused window the event should be dispatched.
|
| - dispatcher->ProcessEvent(key);
|
| + dispatcher->ProcessEvent(key, EventDispatcher::AcceleratorMatchPhase::ANY);
|
| EXPECT_EQ(0u, event_dispatcher_delegate->GetAndClearLastAccelerator());
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_TRUE(details);
|
| @@ -480,13 +493,57 @@ TEST_F(EventDispatcherTest, PostTargetAccelerator) {
|
| EXPECT_FALSE(accelerator_weak_ptr);
|
|
|
| // Post deletion there should be no accelerator
|
| - dispatcher->ProcessEvent(key);
|
| + dispatcher->ProcessEvent(key, EventDispatcher::AcceleratorMatchPhase::ANY);
|
| EXPECT_EQ(0u, event_dispatcher_delegate->GetAndClearLastAccelerator());
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_TRUE(details);
|
| EXPECT_FALSE(details->accelerator);
|
| }
|
|
|
| +TEST_F(EventDispatcherTest, ProcessPost) {
|
| + TestEventDispatcherDelegate* event_dispatcher_delegate =
|
| + test_event_dispatcher_delegate();
|
| + EventDispatcher* dispatcher = event_dispatcher();
|
| +
|
| + uint32_t pre_id = 1;
|
| + {
|
| + mojom::EventMatcherPtr matcher = ui::CreateKeyMatcher(
|
| + ui::mojom::KeyboardCode::W, ui::mojom::kEventFlagControlDown);
|
| + matcher->accelerator_phase = ui::mojom::AcceleratorPhase::PRE_TARGET;
|
| + dispatcher->AddAccelerator(pre_id, std::move(matcher));
|
| + }
|
| +
|
| + uint32_t post_id = 2;
|
| + {
|
| + mojom::EventMatcherPtr matcher = ui::CreateKeyMatcher(
|
| + ui::mojom::KeyboardCode::W, ui::mojom::kEventFlagControlDown);
|
| + matcher->accelerator_phase = ui::mojom::AcceleratorPhase::POST_TARGET;
|
| + dispatcher->AddAccelerator(post_id, std::move(matcher));
|
| + }
|
| +
|
| + // Set focused window for EventDispatcher dispatches key events.
|
| + std::unique_ptr<ServerWindow> child = CreateChildWindow(WindowId(1, 3));
|
| + event_dispatcher_delegate->SetFocusedWindowFromEventDispatcher(child.get());
|
| +
|
| + // Dispatch for ANY, which should trigger PRE and not call
|
| + // DispatchInputEventToWindow().
|
| + ui::KeyEvent key(ui::ET_KEY_PRESSED, ui::VKEY_W, ui::EF_CONTROL_DOWN);
|
| + dispatcher->ProcessEvent(key, EventDispatcher::AcceleratorMatchPhase::ANY);
|
| + EXPECT_EQ(EventDispatcherDelegate::AcceleratorPhase::PRE,
|
| + event_dispatcher_delegate->last_accelerator_phase());
|
| + EXPECT_EQ(pre_id, event_dispatcher_delegate->GetAndClearLastAccelerator());
|
| + EXPECT_FALSE(event_dispatcher_delegate->has_queued_events());
|
| +
|
| + // Dispatch for POST, which should trigger POST.
|
| + dispatcher->ProcessEvent(key,
|
| + EventDispatcher::AcceleratorMatchPhase::POST_ONLY);
|
| + std::unique_ptr<DispatchedEventDetails> details =
|
| + event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| + ASSERT_TRUE(details);
|
| + ASSERT_TRUE(details->accelerator);
|
| + EXPECT_EQ(post_id, details->accelerator->id());
|
| +}
|
| +
|
| TEST_F(EventDispatcherTest, Capture) {
|
| ServerWindow* root = root_window();
|
| std::unique_ptr<ServerWindow> child = CreateChildWindow(WindowId(1, 3));
|
| @@ -589,7 +646,8 @@ TEST_F(EventDispatcherTest, ClientAreaGoesToOwner) {
|
| const ui::PointerEvent press_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(12, 12), gfx::Point(12, 12),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(press_event);
|
| + dispatcher->ProcessEvent(press_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Events should target child and be in the non-client area.
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| @@ -603,7 +661,8 @@ TEST_F(EventDispatcherTest, ClientAreaGoesToOwner) {
|
| const ui::PointerEvent move_event(
|
| ui::MouseEvent(ui::ET_MOUSE_MOVED, gfx::Point(17, 18), gfx::Point(17, 18),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, 0));
|
| - dispatcher->ProcessEvent(move_event);
|
| + dispatcher->ProcessEvent(move_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Still same target.
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| @@ -615,7 +674,8 @@ TEST_F(EventDispatcherTest, ClientAreaGoesToOwner) {
|
| const ui::PointerEvent release_event(ui::MouseEvent(
|
| ui::ET_MOUSE_RELEASED, gfx::Point(17, 18), gfx::Point(17, 18),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(release_event);
|
| + dispatcher->ProcessEvent(release_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // The event should not have been dispatched to the delegate.
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| @@ -628,7 +688,8 @@ TEST_F(EventDispatcherTest, ClientAreaGoesToOwner) {
|
| const ui::PointerEvent press_event2(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(21, 22), gfx::Point(21, 22),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(press_event2);
|
| + dispatcher->ProcessEvent(press_event2,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_TRUE(event_dispatcher_delegate->has_queued_events());
|
| ASSERT_EQ(child.get(), details->window);
|
| @@ -658,7 +719,8 @@ TEST_F(EventDispatcherTest, AdditionalClientArea) {
|
| const ui::PointerEvent press_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(28, 11), gfx::Point(28, 11),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(press_event);
|
| + event_dispatcher()->ProcessEvent(press_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Events should target child and be in the client area.
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| @@ -679,7 +741,8 @@ TEST_F(EventDispatcherTest, HitTestMask) {
|
| const ui::PointerEvent move1(ui::MouseEvent(
|
| ui::ET_MOUSE_MOVED, gfx::Point(11, 11), gfx::Point(11, 11),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, 0));
|
| - event_dispatcher()->ProcessEvent(move1);
|
| + event_dispatcher()->ProcessEvent(move1,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Event went through the child window and hit the root.
|
| std::unique_ptr<DispatchedEventDetails> details1 =
|
| @@ -693,7 +756,8 @@ TEST_F(EventDispatcherTest, HitTestMask) {
|
| const ui::PointerEvent move2(ui::MouseEvent(
|
| ui::ET_MOUSE_MOVED, gfx::Point(11, 12), gfx::Point(11, 12),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, 0));
|
| - event_dispatcher()->ProcessEvent(move2);
|
| + event_dispatcher()->ProcessEvent(move2,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Mouse exits the root.
|
| std::unique_ptr<DispatchedEventDetails> details2 =
|
| @@ -723,7 +787,8 @@ TEST_F(EventDispatcherTest, DontFocusOnSecondDown) {
|
| const ui::PointerEvent press_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(12, 12), gfx::Point(12, 12),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(press_event);
|
| + dispatcher->ProcessEvent(press_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_FALSE(event_dispatcher_delegate->has_queued_events());
|
| @@ -735,7 +800,8 @@ TEST_F(EventDispatcherTest, DontFocusOnSecondDown) {
|
| // but focus should not change.
|
| const ui::PointerEvent touch_event(ui::TouchEvent(
|
| ui::ET_TOUCH_PRESSED, gfx::Point(53, 54), 2, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(touch_event);
|
| + dispatcher->ProcessEvent(touch_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_FALSE(event_dispatcher_delegate->has_queued_events());
|
| EXPECT_EQ(child2.get(), details->window);
|
| @@ -757,7 +823,8 @@ TEST_F(EventDispatcherTest, TwoPointersActive) {
|
| // Press on child1.
|
| const ui::PointerEvent touch_event1(ui::TouchEvent(
|
| ui::ET_TOUCH_PRESSED, gfx::Point(12, 13), 1, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(touch_event1);
|
| + dispatcher->ProcessEvent(touch_event1,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_EQ(child1.get(), details->window);
|
| @@ -765,38 +832,44 @@ TEST_F(EventDispatcherTest, TwoPointersActive) {
|
| // Drag over child2, child1 should get the drag.
|
| const ui::PointerEvent drag_event1(ui::TouchEvent(
|
| ui::ET_TOUCH_MOVED, gfx::Point(53, 54), 1, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(drag_event1);
|
| + dispatcher->ProcessEvent(drag_event1,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_EQ(child1.get(), details->window);
|
|
|
| // Press on child2 with a different touch id.
|
| const ui::PointerEvent touch_event2(ui::TouchEvent(
|
| ui::ET_TOUCH_PRESSED, gfx::Point(54, 55), 2, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(touch_event2);
|
| + dispatcher->ProcessEvent(touch_event2,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_EQ(child2.get(), details->window);
|
|
|
| // Drag over child1 with id 2, child2 should continue to get the drag.
|
| const ui::PointerEvent drag_event2(ui::TouchEvent(
|
| ui::ET_TOUCH_MOVED, gfx::Point(13, 14), 2, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(drag_event2);
|
| + dispatcher->ProcessEvent(drag_event2,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_EQ(child2.get(), details->window);
|
|
|
| // Drag again with id 1, child1 should continue to get it.
|
| - dispatcher->ProcessEvent(drag_event1);
|
| + dispatcher->ProcessEvent(drag_event1,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_EQ(child1.get(), details->window);
|
|
|
| // Release touch id 1, and click on 2. 2 should get it.
|
| const ui::PointerEvent touch_release(ui::TouchEvent(
|
| ui::ET_TOUCH_RELEASED, gfx::Point(54, 55), 1, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(touch_release);
|
| + dispatcher->ProcessEvent(touch_release,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_EQ(child1.get(), details->window);
|
| const ui::PointerEvent touch_event3(ui::TouchEvent(
|
| ui::ET_TOUCH_PRESSED, gfx::Point(54, 55), 2, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(touch_event3);
|
| + dispatcher->ProcessEvent(touch_event3,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_EQ(child2.get(), details->window);
|
| }
|
| @@ -814,7 +887,8 @@ TEST_F(EventDispatcherTest, DestroyWindowWhileGettingEvents) {
|
| // Press on child.
|
| const ui::PointerEvent touch_event1(ui::TouchEvent(
|
| ui::ET_TOUCH_PRESSED, gfx::Point(12, 13), 1, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(touch_event1);
|
| + dispatcher->ProcessEvent(touch_event1,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_FALSE(event_dispatcher_delegate->has_queued_events());
|
| @@ -825,7 +899,8 @@ TEST_F(EventDispatcherTest, DestroyWindowWhileGettingEvents) {
|
|
|
| const ui::PointerEvent drag_event1(ui::TouchEvent(
|
| ui::ET_TOUCH_MOVED, gfx::Point(53, 54), 1, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(drag_event1);
|
| + dispatcher->ProcessEvent(drag_event1,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_EQ(nullptr, details.get());
|
| }
|
| @@ -845,7 +920,8 @@ TEST_F(EventDispatcherTest, MouseInExtendedHitTestRegion) {
|
| const ui::PointerEvent ui_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(8, 9), gfx::Point(8, 9),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(ui_event);
|
| + dispatcher->ProcessEvent(ui_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| ASSERT_EQ(root, details->window);
|
| @@ -854,7 +930,8 @@ TEST_F(EventDispatcherTest, MouseInExtendedHitTestRegion) {
|
| const ui::PointerEvent release_event(ui::MouseEvent(
|
| ui::ET_MOUSE_RELEASED, gfx::Point(8, 9), gfx::Point(8, 9),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(release_event);
|
| + dispatcher->ProcessEvent(release_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_FALSE(event_dispatcher_delegate->has_queued_events());
|
| ASSERT_EQ(root, details->window);
|
| @@ -863,7 +940,8 @@ TEST_F(EventDispatcherTest, MouseInExtendedHitTestRegion) {
|
| // Change the extended hit test region and send event in extended hit test
|
| // region. Should result in exit for root, followed by press for child.
|
| child->set_extended_hit_test_region(gfx::Insets(5, 5, 5, 5));
|
| - dispatcher->ProcessEvent(ui_event);
|
| + dispatcher->ProcessEvent(ui_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_EQ(root, details->window);
|
| EXPECT_EQ(ui::ET_POINTER_EXITED, details->event->type());
|
| @@ -928,7 +1006,8 @@ TEST_F(EventDispatcherTest, SetExplicitCapture) {
|
| const ui::PointerEvent left_press_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(5, 5), gfx::Point(5, 5),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(left_press_event);
|
| + dispatcher->ProcessEvent(left_press_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Events should target child.
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| @@ -944,7 +1023,8 @@ TEST_F(EventDispatcherTest, SetExplicitCapture) {
|
| ui::ET_MOUSE_PRESSED, gfx::Point(5, 5), gfx::Point(5, 5),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON,
|
| ui::EF_RIGHT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(right_press_event);
|
| + dispatcher->ProcessEvent(right_press_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_TRUE(IsMouseButtonDown());
|
|
|
| @@ -953,14 +1033,16 @@ TEST_F(EventDispatcherTest, SetExplicitCapture) {
|
| ui::ET_MOUSE_RELEASED, gfx::Point(5, 5), gfx::Point(5, 5),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON,
|
| ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(left_release_event);
|
| + dispatcher->ProcessEvent(left_release_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_TRUE(IsMouseButtonDown());
|
|
|
| // Touch Event while mouse is down should not affect state.
|
| const ui::PointerEvent touch_event(ui::TouchEvent(
|
| ui::ET_TOUCH_PRESSED, gfx::Point(15, 15), 2, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(touch_event);
|
| + dispatcher->ProcessEvent(touch_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_TRUE(IsMouseButtonDown());
|
|
|
| @@ -969,7 +1051,8 @@ TEST_F(EventDispatcherTest, SetExplicitCapture) {
|
| ui::MouseEvent(ui::ET_MOUSE_MOVED, gfx::Point(15, 5), gfx::Point(15, 5),
|
| base::TimeTicks(), ui::EF_RIGHT_MOUSE_BUTTON,
|
| ui::EF_RIGHT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(move_event);
|
| + dispatcher->ProcessEvent(move_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_TRUE(IsMouseButtonDown());
|
|
|
| @@ -978,7 +1061,8 @@ TEST_F(EventDispatcherTest, SetExplicitCapture) {
|
| ui::MouseEvent(ui::ET_MOUSE_RELEASED, gfx::Point(5, 5),
|
| gfx::Point(5, 5), base::TimeTicks(),
|
| ui::EF_RIGHT_MOUSE_BUTTON, ui::EF_RIGHT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(right_release_event);
|
| + dispatcher->ProcessEvent(right_release_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| EXPECT_FALSE(IsMouseButtonDown());
|
| }
|
| @@ -989,7 +1073,8 @@ TEST_F(EventDispatcherTest, SetExplicitCapture) {
|
| const ui::PointerEvent press_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(5, 5), gfx::Point(5, 5),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(press_event);
|
| + dispatcher->ProcessEvent(press_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Events should target the root.
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| @@ -1047,7 +1132,8 @@ TEST_F(EventDispatcherTest, ExplicitCaptureOverridesImplicitCapture) {
|
| {
|
| const ui::PointerEvent touch_event(ui::TouchEvent(
|
| ui::ET_TOUCH_PRESSED, gfx::Point(12, 13), 1, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(touch_event);
|
| + dispatcher->ProcessEvent(touch_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| }
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| @@ -1079,7 +1165,8 @@ TEST_F(EventDispatcherTest, ExplicitCaptureOverridesImplicitCapture) {
|
| const ui::PointerEvent press_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(15, 15), gfx::Point(15, 15),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(press_event);
|
| + dispatcher->ProcessEvent(press_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Events should target the root.
|
| details = event_dispatcher_delegate->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1099,7 +1186,8 @@ TEST_F(EventDispatcherTest, CaptureUpdatesActivePointerTargets) {
|
| const ui::PointerEvent press_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(5, 5), gfx::Point(5, 5),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - dispatcher->ProcessEvent(press_event);
|
| + dispatcher->ProcessEvent(press_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1109,7 +1197,8 @@ TEST_F(EventDispatcherTest, CaptureUpdatesActivePointerTargets) {
|
| {
|
| const ui::PointerEvent touch_event(ui::TouchEvent(
|
| ui::ET_TOUCH_PRESSED, gfx::Point(12, 13), 1, base::TimeTicks()));
|
| - dispatcher->ProcessEvent(touch_event);
|
| + dispatcher->ProcessEvent(touch_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| }
|
|
|
| ASSERT_TRUE(AreAnyPointersDown());
|
| @@ -1179,7 +1268,8 @@ TEST_F(EventDispatcherTest, CaptureInNonClientAreaOverridesActualPoint) {
|
| const ui::PointerEvent press_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(6, 6), gfx::Point(6, 6),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(press_event);
|
| + event_dispatcher()->ProcessEvent(press_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| // Events should target child and be in the client area.
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| @@ -1199,7 +1289,8 @@ TEST_F(EventDispatcherTest, ProcessPointerEvents) {
|
| const ui::PointerEvent pointer_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(20, 25), gfx::Point(20, 25),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(pointer_event);
|
| + event_dispatcher()->ProcessEvent(
|
| + pointer_event, EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1219,7 +1310,8 @@ TEST_F(EventDispatcherTest, ProcessPointerEvents) {
|
| const ui::PointerEvent pointer_event(
|
| ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(25, 20), touch_id,
|
| base::TimeTicks()));
|
| - event_dispatcher()->ProcessEvent(pointer_event);
|
| + event_dispatcher()->ProcessEvent(
|
| + pointer_event, EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1246,7 +1338,8 @@ TEST_F(EventDispatcherTest, ResetClearsPointerDown) {
|
| const ui::PointerEvent ui_event(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(20, 25), gfx::Point(20, 25),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(ui_event);
|
| + event_dispatcher()->ProcessEvent(ui_event,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1289,7 +1382,8 @@ TEST_F(EventDispatcherTest, ModalWindowEventOnModalParent) {
|
| const ui::PointerEvent mouse_pressed(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(15, 15), gfx::Point(15, 15),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(mouse_pressed);
|
| + event_dispatcher()->ProcessEvent(mouse_pressed,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1321,7 +1415,8 @@ TEST_F(EventDispatcherTest, ModalWindowEventOnModalChild) {
|
| const ui::PointerEvent mouse_pressed(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(55, 15), gfx::Point(55, 15),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(mouse_pressed);
|
| + event_dispatcher()->ProcessEvent(mouse_pressed,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1356,7 +1451,8 @@ TEST_F(EventDispatcherTest, ModalWindowEventOnUnrelatedWindow) {
|
| const ui::PointerEvent mouse_pressed(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(75, 15), gfx::Point(75, 15),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(mouse_pressed);
|
| + event_dispatcher()->ProcessEvent(mouse_pressed,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1392,7 +1488,8 @@ TEST_F(EventDispatcherTest, ModalWindowEventOnDescendantOfModalParent) {
|
| const ui::PointerEvent mouse_pressed(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(25, 25), gfx::Point(25, 25),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(mouse_pressed);
|
| + event_dispatcher()->ProcessEvent(mouse_pressed,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1420,7 +1517,8 @@ TEST_F(EventDispatcherTest, ModalWindowEventOnSystemModal) {
|
| const ui::PointerEvent mouse_pressed(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(15, 15), gfx::Point(15, 15),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(mouse_pressed);
|
| + event_dispatcher()->ProcessEvent(mouse_pressed,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1449,7 +1547,8 @@ TEST_F(EventDispatcherTest, ModalWindowEventOutsideSystemModal) {
|
| const ui::PointerEvent mouse_pressed(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(45, 15), gfx::Point(45, 15),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(mouse_pressed);
|
| + event_dispatcher()->ProcessEvent(mouse_pressed,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
| test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
|
| @@ -1577,7 +1676,8 @@ TEST_F(EventDispatcherTest, CaptureNotResetOnParentChange) {
|
| const ui::PointerEvent mouse_pressed(ui::MouseEvent(
|
| ui::ET_MOUSE_PRESSED, gfx::Point(15, 15), gfx::Point(15, 15),
|
| base::TimeTicks(), ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON));
|
| - event_dispatcher()->ProcessEvent(mouse_pressed);
|
| + event_dispatcher()->ProcessEvent(mouse_pressed,
|
| + EventDispatcher::AcceleratorMatchPhase::ANY);
|
| event_dispatcher()->SetCaptureWindow(w11.get(), kClientAreaId);
|
|
|
| std::unique_ptr<DispatchedEventDetails> details =
|
|
|