Chromium Code Reviews| 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 <stdint.h> | 5 #include <stdint.h> |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 4672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4683 EXPECT_FALSE(queued_delegate2->scroll_update()); | 4683 EXPECT_FALSE(queued_delegate2->scroll_update()); |
| 4684 EXPECT_FALSE(queued_delegate2->scroll_end()); | 4684 EXPECT_FALSE(queued_delegate2->scroll_end()); |
| 4685 EXPECT_FALSE(queued_delegate2->long_press()); | 4685 EXPECT_FALSE(queued_delegate2->long_press()); |
| 4686 | 4686 |
| 4687 queued_delegate->Reset(); | 4687 queued_delegate->Reset(); |
| 4688 queued_delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_SHOW_PRESS); | 4688 queued_delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_SHOW_PRESS); |
| 4689 EXPECT_TRUE(queued_delegate->show_press()); | 4689 EXPECT_TRUE(queued_delegate->show_press()); |
| 4690 EXPECT_FALSE(queued_delegate->tap_down()); | 4690 EXPECT_FALSE(queued_delegate->tap_down()); |
| 4691 } | 4691 } |
| 4692 | 4692 |
| 4693 // Test for crbug/698843. Checks whether the events are routed to the correct | |
| 4694 // consumer in the event of TransferEventsTo() function call. | |
| 4695 TEST_F(GestureRecognizerTest, TransferEventsToRoutesAckCorrectly) { | |
| 4696 std::unique_ptr<QueueTouchEventDelegate> delegate_1( | |
| 4697 new QueueTouchEventDelegate(host()->dispatcher())); | |
| 4698 TimedEvents tes; | |
| 4699 const int kTouchId = 7; | |
| 4700 gfx::Rect bounds(0, 0, 1000, 1000); | |
| 4701 | |
| 4702 std::unique_ptr<aura::Window> window_1(CreateTestWindowWithDelegate( | |
| 4703 delegate_1.get(), -1234, bounds, root_window())); | |
| 4704 | |
| 4705 delegate_1->set_window(window_1.get()); | |
| 4706 | |
| 4707 delegate_1->Reset(); | |
| 4708 ui::TouchEvent press( | |
| 4709 ui::ET_TOUCH_PRESSED, gfx::Point(512, 512), tes.Now(), | |
| 4710 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, kTouchId)); | |
| 4711 DispatchEventUsingWindowDispatcher(&press); | |
| 4712 delegate_1->ReceivedAck(); | |
| 4713 | |
| 4714 EXPECT_2_EVENTS(delegate_1->events(), ui::ET_GESTURE_BEGIN, | |
| 4715 ui::ET_GESTURE_TAP_DOWN); | |
| 4716 | |
| 4717 ui::TouchEvent move( | |
| 4718 ui::ET_TOUCH_MOVED, gfx::Point(530, 512), tes.Now(), | |
| 4719 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, kTouchId)); | |
| 4720 | |
| 4721 DispatchEventUsingWindowDispatcher(&move); | |
| 4722 | |
| 4723 // Send a second move event to scroll. | |
| 4724 ui::TouchEvent move2( | |
| 4725 ui::ET_TOUCH_MOVED, gfx::Point(550, 512), tes.Now(), | |
| 4726 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, kTouchId)); | |
| 4727 DispatchEventUsingWindowDispatcher(&move2); | |
|
tdresser
2017/04/06 20:59:52
Does the test need this second move?
For that mat
malaykeshav
2017/04/07 01:07:59
Removed.
| |
| 4728 | |
| 4729 // Create a new consumer and Touch event delegate. | |
| 4730 std::unique_ptr<QueueTouchEventDelegate> delegate_2( | |
| 4731 new QueueTouchEventDelegate(host()->dispatcher())); | |
| 4732 std::unique_ptr<aura::Window> window_2(CreateTestWindowWithDelegate( | |
| 4733 delegate_2.get(), -2345, bounds, root_window())); | |
| 4734 delegate_2->set_window(window_2.get()); | |
| 4735 | |
| 4736 // Transfer event sequence from previous window to the new window. | |
| 4737 ui::GestureRecognizer::Get()->TransferEventsTo( | |
| 4738 window_1.get(), window_2.get(), | |
| 4739 ui::GestureRecognizer::ShouldCancelTouches::DontCancel); | |
| 4740 | |
| 4741 delegate_1->Reset(); | |
| 4742 delegate_1->ReceivedAck(); | |
| 4743 // ACK for events that were dispatched before the trasnfer should go to the | |
|
tdresser
2017/04/06 20:59:52
trasnfer -> transfer
malaykeshav
2017/04/07 01:07:59
Done
| |
| 4744 // original consumer. See crbug/698843 for more details. | |
| 4745 EXPECT_3_EVENTS(delegate_1->events(), ui::ET_GESTURE_TAP_CANCEL, | |
| 4746 ui::ET_GESTURE_SCROLL_BEGIN, ui::ET_GESTURE_SCROLL_UPDATE); | |
| 4747 | |
| 4748 delegate_1->Reset(); | |
| 4749 delegate_1->ReceivedAck(); | |
| 4750 EXPECT_1_EVENT(delegate_1->events(), ui::ET_GESTURE_SCROLL_UPDATE); | |
| 4751 | |
| 4752 delegate_1->Reset(); | |
| 4753 ui::TouchEvent release( | |
| 4754 ui::ET_TOUCH_RELEASED, gfx::Point(550, 512), tes.LeapForward(50), | |
| 4755 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, kTouchId)); | |
| 4756 DispatchEventUsingWindowDispatcher(&release); | |
| 4757 | |
| 4758 // Events dispatched after the transfer should go to the new window. | |
| 4759 EXPECT_0_EVENTS(delegate_1->events()); | |
| 4760 | |
| 4761 delegate_2->ReceivedAck(); | |
| 4762 // The event sequence transfer should mean that the new window receives the | |
| 4763 // gesture sequence state. | |
| 4764 EXPECT_2_EVENTS(delegate_2->events(), ui::ET_GESTURE_SCROLL_END, | |
| 4765 ui::ET_GESTURE_END); | |
| 4766 | |
| 4767 EXPECT_TRUE(delegate_2->scroll_end()); | |
| 4768 } | |
| 4769 | |
| 4693 } // namespace test | 4770 } // namespace test |
| 4694 } // namespace aura | 4771 } // namespace aura |
| OLD | NEW |