| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/renderer_host/input/input_router_impl.h" | 5 #include "content/browser/renderer_host/input/input_router_impl.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 } | 209 } |
| 210 | 210 |
| 211 void SimulateWheelEventWithPhase(WebMouseWheelEvent::Phase phase) { | 211 void SimulateWheelEventWithPhase(WebMouseWheelEvent::Phase phase) { |
| 212 input_router_->SendWheelEvent(MouseWheelEventWithLatencyInfo( | 212 input_router_->SendWheelEvent(MouseWheelEventWithLatencyInfo( |
| 213 SyntheticWebMouseWheelEventBuilder::Build(phase))); | 213 SyntheticWebMouseWheelEventBuilder::Build(phase))); |
| 214 } | 214 } |
| 215 | 215 |
| 216 void SimulateGestureEvent(WebGestureEvent gesture) { | 216 void SimulateGestureEvent(WebGestureEvent gesture) { |
| 217 // Ensure non-zero touchscreen fling velocities, as the router will | 217 // Ensure non-zero touchscreen fling velocities, as the router will |
| 218 // validate aganst such. | 218 // validate aganst such. |
| 219 if (gesture.type == WebInputEvent::GestureFlingStart && | 219 if (gesture.type() == WebInputEvent::GestureFlingStart && |
| 220 gesture.sourceDevice == blink::WebGestureDeviceTouchscreen && | 220 gesture.sourceDevice == blink::WebGestureDeviceTouchscreen && |
| 221 !gesture.data.flingStart.velocityX && | 221 !gesture.data.flingStart.velocityX && |
| 222 !gesture.data.flingStart.velocityY) { | 222 !gesture.data.flingStart.velocityY) { |
| 223 gesture.data.flingStart.velocityX = 5.f; | 223 gesture.data.flingStart.velocityX = 5.f; |
| 224 } | 224 } |
| 225 | 225 |
| 226 input_router_->SendGestureEvent(GestureEventWithLatencyInfo(gesture)); | 226 input_router_->SendGestureEvent(GestureEventWithLatencyInfo(gesture)); |
| 227 } | 227 } |
| 228 | 228 |
| 229 void SimulateGestureEvent(WebInputEvent::Type type, | 229 void SimulateGestureEvent(WebInputEvent::Type type, |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 EXPECT_TRUE(ack_handler_->unexpected_event_ack_called()); | 663 EXPECT_TRUE(ack_handler_->unexpected_event_ack_called()); |
| 664 } | 664 } |
| 665 | 665 |
| 666 // Tests ported from RenderWidgetHostTest -------------------------------------- | 666 // Tests ported from RenderWidgetHostTest -------------------------------------- |
| 667 | 667 |
| 668 TEST_F(InputRouterImplTest, HandleKeyEventsWeSent) { | 668 TEST_F(InputRouterImplTest, HandleKeyEventsWeSent) { |
| 669 // Simulate a keyboard event. | 669 // Simulate a keyboard event. |
| 670 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); | 670 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); |
| 671 ASSERT_TRUE(input_router_->GetLastKeyboardEvent()); | 671 ASSERT_TRUE(input_router_->GetLastKeyboardEvent()); |
| 672 EXPECT_EQ(WebInputEvent::RawKeyDown, | 672 EXPECT_EQ(WebInputEvent::RawKeyDown, |
| 673 input_router_->GetLastKeyboardEvent()->type); | 673 input_router_->GetLastKeyboardEvent()->type()); |
| 674 | 674 |
| 675 // Make sure we sent the input event to the renderer. | 675 // Make sure we sent the input event to the renderer. |
| 676 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( | 676 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( |
| 677 InputMsg_HandleInputEvent::ID)); | 677 InputMsg_HandleInputEvent::ID)); |
| 678 process_->sink().ClearMessages(); | 678 process_->sink().ClearMessages(); |
| 679 | 679 |
| 680 // Send the simulated response from the renderer back. | 680 // Send the simulated response from the renderer back. |
| 681 SendInputEventACK(WebInputEvent::RawKeyDown, | 681 SendInputEventACK(WebInputEvent::RawKeyDown, |
| 682 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 682 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 683 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 683 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 684 EXPECT_EQ(WebInputEvent::RawKeyDown, | 684 EXPECT_EQ(WebInputEvent::RawKeyDown, |
| 685 ack_handler_->acked_keyboard_event().type); | 685 ack_handler_->acked_keyboard_event().type()); |
| 686 } | 686 } |
| 687 | 687 |
| 688 TEST_F(InputRouterImplTest, IgnoreKeyEventsWeDidntSend) { | 688 TEST_F(InputRouterImplTest, IgnoreKeyEventsWeDidntSend) { |
| 689 // Send a simulated, unrequested key response. We should ignore this. | 689 // Send a simulated, unrequested key response. We should ignore this. |
| 690 SendInputEventACK(WebInputEvent::RawKeyDown, | 690 SendInputEventACK(WebInputEvent::RawKeyDown, |
| 691 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 691 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 692 | 692 |
| 693 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); | 693 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); |
| 694 } | 694 } |
| 695 | 695 |
| 696 TEST_F(InputRouterImplTest, CoalescesWheelEvents) { | 696 TEST_F(InputRouterImplTest, CoalescesWheelEvents) { |
| 697 // Simulate wheel events. | 697 // Simulate wheel events. |
| 698 SimulateWheelEvent(0, 0, 0, -5, 0, false); // sent directly | 698 SimulateWheelEvent(0, 0, 0, -5, 0, false); // sent directly |
| 699 SimulateWheelEvent(0, 0, 0, -10, 0, false); // enqueued | 699 SimulateWheelEvent(0, 0, 0, -10, 0, false); // enqueued |
| 700 SimulateWheelEvent(0, 0, 8, -6, 0, false); // coalesced into previous event | 700 SimulateWheelEvent(0, 0, 8, -6, 0, false); // coalesced into previous event |
| 701 SimulateWheelEvent(0, 0, 9, -7, 1, false); // enqueued, different modifiers | 701 SimulateWheelEvent(0, 0, 9, -7, 1, false); // enqueued, different modifiers |
| 702 SimulateWheelEvent(0, 0, 0, -10, 0, false); // enqueued, different modifiers | 702 SimulateWheelEvent(0, 0, 0, -10, 0, false); // enqueued, different modifiers |
| 703 // Explicitly verify that PhaseEnd isn't coalesced to avoid bugs like | 703 // Explicitly verify that PhaseEnd isn't coalesced to avoid bugs like |
| 704 // https://crbug.com/154740. | 704 // https://crbug.com/154740. |
| 705 SimulateWheelEventWithPhase(WebMouseWheelEvent::PhaseEnded); // enqueued | 705 SimulateWheelEventWithPhase(WebMouseWheelEvent::PhaseEnded); // enqueued |
| 706 | 706 |
| 707 // Check that only the first event was sent. | 707 // Check that only the first event was sent. |
| 708 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( | 708 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( |
| 709 InputMsg_HandleInputEvent::ID)); | 709 InputMsg_HandleInputEvent::ID)); |
| 710 const WebInputEvent* input_event = | 710 const WebInputEvent* input_event = |
| 711 GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); | 711 GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); |
| 712 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); | 712 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type()); |
| 713 const WebMouseWheelEvent* wheel_event = | 713 const WebMouseWheelEvent* wheel_event = |
| 714 static_cast<const WebMouseWheelEvent*>(input_event); | 714 static_cast<const WebMouseWheelEvent*>(input_event); |
| 715 EXPECT_EQ(0, wheel_event->deltaX); | 715 EXPECT_EQ(0, wheel_event->deltaX); |
| 716 EXPECT_EQ(-5, wheel_event->deltaY); | 716 EXPECT_EQ(-5, wheel_event->deltaY); |
| 717 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 717 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 718 | 718 |
| 719 // Check that the ACK sends the second message immediately. | 719 // Check that the ACK sends the second message immediately. |
| 720 SendInputEventACK(WebInputEvent::MouseWheel, | 720 SendInputEventACK(WebInputEvent::MouseWheel, |
| 721 INPUT_EVENT_ACK_STATE_CONSUMED); | 721 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 722 // The coalesced events can queue up a delayed ack | 722 // The coalesced events can queue up a delayed ack |
| 723 // so that additional input events can be processed before | 723 // so that additional input events can be processed before |
| 724 // we turn off coalescing. | 724 // we turn off coalescing. |
| 725 base::RunLoop().RunUntilIdle(); | 725 base::RunLoop().RunUntilIdle(); |
| 726 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 726 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 727 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( | 727 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( |
| 728 InputMsg_HandleInputEvent::ID)); | 728 InputMsg_HandleInputEvent::ID)); |
| 729 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); | 729 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); |
| 730 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); | 730 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type()); |
| 731 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); | 731 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); |
| 732 EXPECT_EQ(8, wheel_event->deltaX); | 732 EXPECT_EQ(8, wheel_event->deltaX); |
| 733 EXPECT_EQ(-10 + -6, wheel_event->deltaY); // coalesced | 733 EXPECT_EQ(-10 + -6, wheel_event->deltaY); // coalesced |
| 734 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 734 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 735 | 735 |
| 736 // Ack the second event (which had the third coalesced into it). | 736 // Ack the second event (which had the third coalesced into it). |
| 737 SendInputEventACK(WebInputEvent::MouseWheel, | 737 SendInputEventACK(WebInputEvent::MouseWheel, |
| 738 INPUT_EVENT_ACK_STATE_CONSUMED); | 738 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 739 base::RunLoop().RunUntilIdle(); | 739 base::RunLoop().RunUntilIdle(); |
| 740 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 740 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 741 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( | 741 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( |
| 742 InputMsg_HandleInputEvent::ID)); | 742 InputMsg_HandleInputEvent::ID)); |
| 743 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); | 743 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); |
| 744 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); | 744 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type()); |
| 745 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); | 745 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); |
| 746 EXPECT_EQ(9, wheel_event->deltaX); | 746 EXPECT_EQ(9, wheel_event->deltaX); |
| 747 EXPECT_EQ(-7, wheel_event->deltaY); | 747 EXPECT_EQ(-7, wheel_event->deltaY); |
| 748 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 748 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 749 | 749 |
| 750 // Ack the fourth event. | 750 // Ack the fourth event. |
| 751 SendInputEventACK(WebInputEvent::MouseWheel, | 751 SendInputEventACK(WebInputEvent::MouseWheel, |
| 752 INPUT_EVENT_ACK_STATE_CONSUMED); | 752 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 753 base::RunLoop().RunUntilIdle(); | 753 base::RunLoop().RunUntilIdle(); |
| 754 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 754 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 755 EXPECT_TRUE( | 755 EXPECT_TRUE( |
| 756 process_->sink().GetUniqueMessageMatching(InputMsg_HandleInputEvent::ID)); | 756 process_->sink().GetUniqueMessageMatching(InputMsg_HandleInputEvent::ID)); |
| 757 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); | 757 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); |
| 758 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); | 758 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type()); |
| 759 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); | 759 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); |
| 760 EXPECT_EQ(0, wheel_event->deltaX); | 760 EXPECT_EQ(0, wheel_event->deltaX); |
| 761 EXPECT_EQ(-10, wheel_event->deltaY); | 761 EXPECT_EQ(-10, wheel_event->deltaY); |
| 762 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 762 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 763 | 763 |
| 764 // Ack the fifth event. | 764 // Ack the fifth event. |
| 765 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); | 765 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); |
| 766 base::RunLoop().RunUntilIdle(); | 766 base::RunLoop().RunUntilIdle(); |
| 767 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 767 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 768 EXPECT_TRUE( | 768 EXPECT_TRUE( |
| 769 process_->sink().GetUniqueMessageMatching(InputMsg_HandleInputEvent::ID)); | 769 process_->sink().GetUniqueMessageMatching(InputMsg_HandleInputEvent::ID)); |
| 770 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); | 770 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); |
| 771 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); | 771 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type()); |
| 772 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); | 772 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); |
| 773 EXPECT_EQ(0, wheel_event->deltaX); | 773 EXPECT_EQ(0, wheel_event->deltaX); |
| 774 EXPECT_EQ(0, wheel_event->deltaY); | 774 EXPECT_EQ(0, wheel_event->deltaY); |
| 775 EXPECT_EQ(WebMouseWheelEvent::PhaseEnded, wheel_event->phase); | 775 EXPECT_EQ(WebMouseWheelEvent::PhaseEnded, wheel_event->phase); |
| 776 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 776 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 777 | 777 |
| 778 // After the final ack, the queue should be empty. | 778 // After the final ack, the queue should be empty. |
| 779 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); | 779 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); |
| 780 base::RunLoop().RunUntilIdle(); | 780 base::RunLoop().RunUntilIdle(); |
| 781 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 781 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 798 EXPECT_FALSE(client_->GetAndResetFilterEventCalled()); | 798 EXPECT_FALSE(client_->GetAndResetFilterEventCalled()); |
| 799 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 799 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 800 EXPECT_FALSE(TouchEventQueueEmpty()); | 800 EXPECT_FALSE(TouchEventQueueEmpty()); |
| 801 | 801 |
| 802 // Receive an ACK for the first touch-event. | 802 // Receive an ACK for the first touch-event. |
| 803 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 803 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 804 touch_press_event_id); | 804 touch_press_event_id); |
| 805 EXPECT_FALSE(TouchEventQueueEmpty()); | 805 EXPECT_FALSE(TouchEventQueueEmpty()); |
| 806 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 806 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 807 EXPECT_EQ(WebInputEvent::TouchStart, | 807 EXPECT_EQ(WebInputEvent::TouchStart, |
| 808 ack_handler_->acked_touch_event().event.type); | 808 ack_handler_->acked_touch_event().event.type()); |
| 809 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 809 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 810 | 810 |
| 811 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, | 811 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 812 touch_move_event_id); | 812 touch_move_event_id); |
| 813 EXPECT_TRUE(TouchEventQueueEmpty()); | 813 EXPECT_TRUE(TouchEventQueueEmpty()); |
| 814 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 814 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 815 EXPECT_EQ(WebInputEvent::TouchMove, | 815 EXPECT_EQ(WebInputEvent::TouchMove, |
| 816 ack_handler_->acked_touch_event().event.type); | 816 ack_handler_->acked_touch_event().event.type()); |
| 817 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 817 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 818 } | 818 } |
| 819 | 819 |
| 820 // Tests that the touch-queue is emptied after a page stops listening for touch | 820 // Tests that the touch-queue is emptied after a page stops listening for touch |
| 821 // events and the outstanding ack is received. | 821 // events and the outstanding ack is received. |
| 822 TEST_F(InputRouterImplTest, TouchEventQueueFlush) { | 822 TEST_F(InputRouterImplTest, TouchEventQueueFlush) { |
| 823 OnHasTouchEventHandlers(true); | 823 OnHasTouchEventHandlers(true); |
| 824 EXPECT_TRUE(client_->has_touch_handler()); | 824 EXPECT_TRUE(client_->has_touch_handler()); |
| 825 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 825 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 826 EXPECT_TRUE(TouchEventQueueEmpty()); | 826 EXPECT_TRUE(TouchEventQueueEmpty()); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 912 uint32_t touch_event_ids[] = {touch_press_event_id1, touch_move_event_id1, | 912 uint32_t touch_event_ids[] = {touch_press_event_id1, touch_move_event_id1, |
| 913 touch_press_event_id2, touch_move_event_id2}; | 913 touch_press_event_id2, touch_move_event_id2}; |
| 914 | 914 |
| 915 TouchEventCoordinateSystem coordinate_system = LOCAL_COORDINATES; | 915 TouchEventCoordinateSystem coordinate_system = LOCAL_COORDINATES; |
| 916 #if !defined(OS_WIN) | 916 #if !defined(OS_WIN) |
| 917 coordinate_system = SCREEN_COORDINATES; | 917 coordinate_system = SCREEN_COORDINATES; |
| 918 #endif | 918 #endif |
| 919 for (size_t i = 0; i < arraysize(acks); ++i) { | 919 for (size_t i = 0; i < arraysize(acks); ++i) { |
| 920 SendTouchEventACK(acks[i], INPUT_EVENT_ACK_STATE_NOT_CONSUMED, | 920 SendTouchEventACK(acks[i], INPUT_EVENT_ACK_STATE_NOT_CONSUMED, |
| 921 touch_event_ids[i]); | 921 touch_event_ids[i]); |
| 922 EXPECT_EQ(acks[i], ack_handler_->acked_touch_event().event.type); | 922 EXPECT_EQ(acks[i], ack_handler_->acked_touch_event().event.type()); |
| 923 ScopedVector<ui::TouchEvent> acked; | 923 ScopedVector<ui::TouchEvent> acked; |
| 924 | 924 |
| 925 MakeUITouchEventsFromWebTouchEvents( | 925 MakeUITouchEventsFromWebTouchEvents( |
| 926 ack_handler_->acked_touch_event(), &acked, coordinate_system); | 926 ack_handler_->acked_touch_event(), &acked, coordinate_system); |
| 927 bool success = EventListIsSubset(acked, expected_events); | 927 bool success = EventListIsSubset(acked, expected_events); |
| 928 EXPECT_TRUE(success) << "Failed on step: " << i; | 928 EXPECT_TRUE(success) << "Failed on step: " << i; |
| 929 if (!success) | 929 if (!success) |
| 930 break; | 930 break; |
| 931 expected_events.erase(expected_events.begin(), | 931 expected_events.erase(expected_events.begin(), |
| 932 expected_events.begin() + acked.size()); | 932 expected_events.begin() + acked.size()); |
| (...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1691 // GesturePinchUpdate for trackpad sends synthetic wheel events. | 1691 // GesturePinchUpdate for trackpad sends synthetic wheel events. |
| 1692 // Note that the Touchscreen case is verified as NOT doing this as | 1692 // Note that the Touchscreen case is verified as NOT doing this as |
| 1693 // part of the ShowPressIsInOrder test. | 1693 // part of the ShowPressIsInOrder test. |
| 1694 | 1694 |
| 1695 SimulateGesturePinchUpdateEvent( | 1695 SimulateGesturePinchUpdateEvent( |
| 1696 1.5f, 20, 25, 0, blink::WebGestureDeviceTouchpad); | 1696 1.5f, 20, 25, 0, blink::WebGestureDeviceTouchpad); |
| 1697 | 1697 |
| 1698 // Verify we actually sent a special wheel event to the renderer. | 1698 // Verify we actually sent a special wheel event to the renderer. |
| 1699 const WebInputEvent* input_event = | 1699 const WebInputEvent* input_event = |
| 1700 GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); | 1700 GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); |
| 1701 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, input_event->type); | 1701 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, input_event->type()); |
| 1702 const WebGestureEvent* gesture_event = | 1702 const WebGestureEvent* gesture_event = |
| 1703 static_cast<const WebGestureEvent*>(input_event); | 1703 static_cast<const WebGestureEvent*>(input_event); |
| 1704 EXPECT_EQ(20, gesture_event->x); | 1704 EXPECT_EQ(20, gesture_event->x); |
| 1705 EXPECT_EQ(25, gesture_event->y); | 1705 EXPECT_EQ(25, gesture_event->y); |
| 1706 EXPECT_EQ(20, gesture_event->globalX); | 1706 EXPECT_EQ(20, gesture_event->globalX); |
| 1707 EXPECT_EQ(25, gesture_event->globalY); | 1707 EXPECT_EQ(25, gesture_event->globalY); |
| 1708 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1708 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1709 | 1709 |
| 1710 // Indicate that the wheel event was unhandled. | 1710 // Indicate that the wheel event was unhandled. |
| 1711 SendInputEventACK(WebInputEvent::GesturePinchUpdate, | 1711 SendInputEventACK(WebInputEvent::GesturePinchUpdate, |
| 1712 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1712 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1713 | 1713 |
| 1714 // Check that the correct unhandled pinch event was received. | 1714 // Check that the correct unhandled pinch event was received. |
| 1715 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 1715 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 1716 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); | 1716 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); |
| 1717 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_handler_->ack_state()); | 1717 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_handler_->ack_state()); |
| 1718 EXPECT_EQ(1.5f, ack_handler_->acked_gesture_event().data.pinchUpdate.scale); | 1718 EXPECT_EQ(1.5f, ack_handler_->acked_gesture_event().data.pinchUpdate.scale); |
| 1719 EXPECT_EQ(0, client_->in_flight_event_count()); | 1719 EXPECT_EQ(0, client_->in_flight_event_count()); |
| 1720 | 1720 |
| 1721 // Second a second pinch event. | 1721 // Second a second pinch event. |
| 1722 SimulateGesturePinchUpdateEvent( | 1722 SimulateGesturePinchUpdateEvent( |
| 1723 0.3f, 20, 25, 0, blink::WebGestureDeviceTouchpad); | 1723 0.3f, 20, 25, 0, blink::WebGestureDeviceTouchpad); |
| 1724 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); | 1724 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); |
| 1725 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, input_event->type); | 1725 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, input_event->type()); |
| 1726 gesture_event = static_cast<const WebGestureEvent*>(input_event); | 1726 gesture_event = static_cast<const WebGestureEvent*>(input_event); |
| 1727 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1727 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1728 | 1728 |
| 1729 // Indicate that the wheel event was handled this time. | 1729 // Indicate that the wheel event was handled this time. |
| 1730 SendInputEventACK(WebInputEvent::GesturePinchUpdate, | 1730 SendInputEventACK(WebInputEvent::GesturePinchUpdate, |
| 1731 INPUT_EVENT_ACK_STATE_CONSUMED); | 1731 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1732 | 1732 |
| 1733 // Check that the correct HANDLED pinch event was received. | 1733 // Check that the correct HANDLED pinch event was received. |
| 1734 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 1734 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 1735 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); | 1735 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); |
| (...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2281 EXPECT_EQ(80, sent_event->data.flingStart.velocityY); | 2281 EXPECT_EQ(80, sent_event->data.flingStart.velocityY); |
| 2282 | 2282 |
| 2283 const WebGestureEvent* filter_event = | 2283 const WebGestureEvent* filter_event = |
| 2284 GetFilterWebInputEvent<WebGestureEvent>(); | 2284 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2285 TestLocationInFilterEvent(filter_event, orig); | 2285 TestLocationInFilterEvent(filter_event, orig); |
| 2286 EXPECT_EQ(30, filter_event->data.flingStart.velocityX); | 2286 EXPECT_EQ(30, filter_event->data.flingStart.velocityX); |
| 2287 EXPECT_EQ(40, filter_event->data.flingStart.velocityY); | 2287 EXPECT_EQ(40, filter_event->data.flingStart.velocityY); |
| 2288 } | 2288 } |
| 2289 | 2289 |
| 2290 } // namespace content | 2290 } // namespace content |
| OLD | NEW |