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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/shared_memory.h" | 7 #include "base/shared_memory.h" |
8 #include "base/timer.h" | 8 #include "base/timer.h" |
9 #include "content/browser/browser_thread_impl.h" | 9 #include "content/browser/browser_thread_impl.h" |
10 #include "content/browser/renderer_host/backing_store.h" | 10 #include "content/browser/renderer_host/backing_store.h" |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 | 349 |
350 void SimulateWheelEvent(float dX, float dY, int modifiers) { | 350 void SimulateWheelEvent(float dX, float dY, int modifiers) { |
351 WebMouseWheelEvent wheel_event; | 351 WebMouseWheelEvent wheel_event; |
352 wheel_event.type = WebInputEvent::MouseWheel; | 352 wheel_event.type = WebInputEvent::MouseWheel; |
353 wheel_event.deltaX = dX; | 353 wheel_event.deltaX = dX; |
354 wheel_event.deltaY = dY; | 354 wheel_event.deltaY = dY; |
355 wheel_event.modifiers = modifiers; | 355 wheel_event.modifiers = modifiers; |
356 host_->ForwardWheelEvent(wheel_event); | 356 host_->ForwardWheelEvent(wheel_event); |
357 } | 357 } |
358 | 358 |
359 // Inject synthetic WebGestureEvent instances. | 359 // Inject simple synthetic WebGestureEvent instances. |
360 void SimulateGestureEvent(float dX, float dY, int modifiers, | 360 void SimulateGestureEvent(WebInputEvent::Type type) { |
361 WebInputEvent::Type type) { | |
362 WebGestureEvent gesture_event; | 361 WebGestureEvent gesture_event; |
363 gesture_event.type = type; | 362 gesture_event.type = type; |
| 363 host_->ForwardGestureEvent(gesture_event); |
| 364 } |
| 365 |
| 366 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) { |
| 367 WebGestureEvent gesture_event; |
| 368 gesture_event.type = WebInputEvent::GestureScrollUpdate; |
364 gesture_event.deltaX = dX; | 369 gesture_event.deltaX = dX; |
365 gesture_event.deltaY = dY; | 370 gesture_event.deltaY = dY; |
| 371 gesture_event.data.scrollUpdate.deltaX = dX; |
| 372 gesture_event.data.scrollUpdate.deltaY = dY; |
366 gesture_event.modifiers = modifiers; | 373 gesture_event.modifiers = modifiers; |
367 host_->ForwardGestureEvent(gesture_event); | 374 host_->ForwardGestureEvent(gesture_event); |
368 } | 375 } |
369 | 376 |
| 377 // Inject simple synthetic WebGestureEvent instances. |
| 378 void SimulateGestureFlingStartEvent(float velocityX, float velocityY) { |
| 379 WebGestureEvent gesture_event; |
| 380 gesture_event.type = WebInputEvent::GestureFlingStart; |
| 381 gesture_event.deltaX = velocityX; |
| 382 gesture_event.deltaY = velocityY; |
| 383 gesture_event.data.flingStart.velocityX = velocityX; |
| 384 gesture_event.data.flingStart.velocityY = velocityY; |
| 385 host_->ForwardGestureEvent(gesture_event); |
| 386 } |
| 387 |
370 MessageLoopForUI message_loop_; | 388 MessageLoopForUI message_loop_; |
371 | 389 |
372 scoped_ptr<content::TestBrowserContext> browser_context_; | 390 scoped_ptr<content::TestBrowserContext> browser_context_; |
373 RenderWidgetHostProcess* process_; // Deleted automatically by the widget. | 391 RenderWidgetHostProcess* process_; // Deleted automatically by the widget. |
374 scoped_ptr<MockRenderWidgetHostDelegate> delegate_; | 392 scoped_ptr<MockRenderWidgetHostDelegate> delegate_; |
375 scoped_ptr<MockRenderWidgetHost> host_; | 393 scoped_ptr<MockRenderWidgetHost> host_; |
376 scoped_ptr<TestView> view_; | 394 scoped_ptr<TestView> view_; |
377 | 395 |
378 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostTest); | 396 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostTest); |
379 }; | 397 }; |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
799 MessageLoop::current()->RunAllPending(); | 817 MessageLoop::current()->RunAllPending(); |
800 EXPECT_EQ(0U, process_->sink().message_count()); | 818 EXPECT_EQ(0U, process_->sink().message_count()); |
801 } | 819 } |
802 | 820 |
803 TEST_F(RenderWidgetHostTest, CoalescesGesturesEvents) { | 821 TEST_F(RenderWidgetHostTest, CoalescesGesturesEvents) { |
804 process_->sink().ClearMessages(); | 822 process_->sink().ClearMessages(); |
805 // Only GestureScrollUpdate events can be coalesced. | 823 // Only GestureScrollUpdate events can be coalesced. |
806 // Simulate gesture events. | 824 // Simulate gesture events. |
807 | 825 |
808 // Sent. | 826 // Sent. |
809 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureScrollBegin); | 827 SimulateGestureEvent(WebInputEvent::GestureScrollBegin); |
810 | 828 |
811 // Enqueued. | 829 // Enqueued. |
812 SimulateGestureEvent(8, -5, 0, WebInputEvent::GestureScrollUpdate); | 830 SimulateGestureScrollUpdateEvent(8, -5, 0); |
813 | 831 |
814 // Make sure that the queue contains what we think it should. | 832 // Make sure that the queue contains what we think it should. |
815 WebGestureEvent merged_event = host_->GestureEventLastQueueEvent(); | 833 WebGestureEvent merged_event = host_->GestureEventLastQueueEvent(); |
816 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); | 834 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); |
817 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 835 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
818 | 836 |
819 // Coalesced. | 837 // Coalesced. |
820 SimulateGestureEvent(8, -6, 0, WebInputEvent::GestureScrollUpdate); | 838 SimulateGestureScrollUpdateEvent(8, -6, 0); |
821 | 839 |
822 // Check that coalescing updated the correct values. | 840 // Check that coalescing updated the correct values. |
823 merged_event = host_->GestureEventLastQueueEvent(); | 841 merged_event = host_->GestureEventLastQueueEvent(); |
824 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 842 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
825 EXPECT_EQ(0, merged_event.modifiers); | 843 EXPECT_EQ(0, merged_event.modifiers); |
826 EXPECT_EQ(16, merged_event.deltaX); | 844 EXPECT_EQ(16, merged_event.data.scrollUpdate.deltaX); |
827 EXPECT_EQ(-11, merged_event.deltaY); | 845 EXPECT_EQ(-11, merged_event.data.scrollUpdate.deltaY); |
828 | 846 |
829 // Enqueued. | 847 // Enqueued. |
830 SimulateGestureEvent(8, -7, 1, WebInputEvent::GestureScrollUpdate); | 848 SimulateGestureScrollUpdateEvent(8, -7, 1); |
831 | 849 |
832 // Check that we didn't wrongly coalesce. | 850 // Check that we didn't wrongly coalesce. |
833 merged_event = host_->GestureEventLastQueueEvent(); | 851 merged_event = host_->GestureEventLastQueueEvent(); |
834 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 852 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
835 EXPECT_EQ(1, merged_event.modifiers); | 853 EXPECT_EQ(1, merged_event.modifiers); |
836 | 854 |
837 // Different. | 855 // Different. |
838 SimulateGestureEvent(9, -8, 0, WebInputEvent::GestureScrollEnd); | 856 SimulateGestureEvent(WebInputEvent::GestureScrollEnd); |
839 | 857 |
840 // Check that only the first event was sent. | 858 // Check that only the first event was sent. |
841 EXPECT_EQ(1U, process_->sink().message_count()); | 859 EXPECT_EQ(1U, process_->sink().message_count()); |
842 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( | 860 EXPECT_TRUE(process_->sink().GetUniqueMessageMatching( |
843 ViewMsg_HandleInputEvent::ID)); | 861 ViewMsg_HandleInputEvent::ID)); |
844 process_->sink().ClearMessages(); | 862 process_->sink().ClearMessages(); |
845 | 863 |
846 // Check that the ACK sends the second message. | 864 // Check that the ACK sends the second message. |
847 SendInputEventACK(WebInputEvent::GestureScrollBegin, true); | 865 SendInputEventACK(WebInputEvent::GestureScrollBegin, true); |
848 MessageLoop::current()->RunAllPending(); | 866 MessageLoop::current()->RunAllPending(); |
(...skipping 20 matching lines...) Expand all Loading... |
869 | 887 |
870 // After the final ack, the queue should be empty. | 888 // After the final ack, the queue should be empty. |
871 SendInputEventACK(WebInputEvent::GestureScrollEnd, true); | 889 SendInputEventACK(WebInputEvent::GestureScrollEnd, true); |
872 MessageLoop::current()->RunAllPending(); | 890 MessageLoop::current()->RunAllPending(); |
873 EXPECT_EQ(0U, process_->sink().message_count()); | 891 EXPECT_EQ(0U, process_->sink().message_count()); |
874 } | 892 } |
875 | 893 |
876 TEST_F(RenderWidgetHostTest, GestureFlingCancelsFiltered) { | 894 TEST_F(RenderWidgetHostTest, GestureFlingCancelsFiltered) { |
877 process_->sink().ClearMessages(); | 895 process_->sink().ClearMessages(); |
878 // GFC without previous GFS is dropped. | 896 // GFC without previous GFS is dropped. |
879 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingCancel); | 897 SimulateGestureEvent(WebInputEvent::GestureFlingCancel); |
880 EXPECT_EQ(0U, process_->sink().message_count()); | 898 EXPECT_EQ(0U, process_->sink().message_count()); |
881 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); | 899 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); |
882 | 900 |
883 // GFC after previous GFS is dispatched and acked. | 901 // GFC after previous GFS is dispatched and acked. |
884 process_->sink().ClearMessages(); | 902 process_->sink().ClearMessages(); |
885 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingStart); | 903 SimulateGestureFlingStartEvent(0, -10); |
886 EXPECT_TRUE(host_->FlingInProgress()); | 904 EXPECT_TRUE(host_->FlingInProgress()); |
887 SendInputEventACK(WebInputEvent::GestureFlingStart, true); | 905 SendInputEventACK(WebInputEvent::GestureFlingStart, true); |
888 MessageLoop::current()->RunAllPending(); | 906 MessageLoop::current()->RunAllPending(); |
889 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingCancel); | 907 SimulateGestureEvent(WebInputEvent::GestureFlingCancel); |
890 EXPECT_FALSE(host_->FlingInProgress()); | 908 EXPECT_FALSE(host_->FlingInProgress()); |
891 EXPECT_EQ(2U, process_->sink().message_count()); | 909 EXPECT_EQ(2U, process_->sink().message_count()); |
892 SendInputEventACK(WebInputEvent::GestureFlingCancel, true); | 910 SendInputEventACK(WebInputEvent::GestureFlingCancel, true); |
893 MessageLoop::current()->RunAllPending(); | 911 MessageLoop::current()->RunAllPending(); |
894 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); | 912 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); |
895 | 913 |
896 // GFC before previous GFS is acked. | 914 // GFC before previous GFS is acked. |
897 process_->sink().ClearMessages(); | 915 process_->sink().ClearMessages(); |
898 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingStart); | 916 SimulateGestureFlingStartEvent(0, -10); |
899 EXPECT_TRUE(host_->FlingInProgress()); | 917 EXPECT_TRUE(host_->FlingInProgress()); |
900 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingCancel); | 918 SimulateGestureEvent(WebInputEvent::GestureFlingCancel); |
901 EXPECT_FALSE(host_->FlingInProgress()); | 919 EXPECT_FALSE(host_->FlingInProgress()); |
902 EXPECT_EQ(1U, process_->sink().message_count()); | 920 EXPECT_EQ(1U, process_->sink().message_count()); |
903 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); | 921 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); |
904 | 922 |
905 // Advance state realistically. | 923 // Advance state realistically. |
906 SendInputEventACK(WebInputEvent::GestureFlingStart, true); | 924 SendInputEventACK(WebInputEvent::GestureFlingStart, true); |
907 MessageLoop::current()->RunAllPending(); | 925 MessageLoop::current()->RunAllPending(); |
908 SendInputEventACK(WebInputEvent::GestureFlingCancel, true); | 926 SendInputEventACK(WebInputEvent::GestureFlingCancel, true); |
909 MessageLoop::current()->RunAllPending(); | 927 MessageLoop::current()->RunAllPending(); |
910 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); | 928 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); |
911 | 929 |
912 // GFS is added to the queue if another event is pending | 930 // GFS is added to the queue if another event is pending |
913 process_->sink().ClearMessages(); | 931 process_->sink().ClearMessages(); |
914 SimulateGestureEvent(8, -7, 0, WebInputEvent::GestureScrollUpdate); | 932 SimulateGestureScrollUpdateEvent(8, -7, 0); |
915 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingStart); | 933 SimulateGestureFlingStartEvent(0, -10); |
916 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); | 934 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); |
917 EXPECT_EQ(1U, process_->sink().message_count()); | 935 EXPECT_EQ(1U, process_->sink().message_count()); |
918 WebGestureEvent merged_event = host_->GestureEventLastQueueEvent(); | 936 WebGestureEvent merged_event = host_->GestureEventLastQueueEvent(); |
919 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); | 937 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); |
920 EXPECT_TRUE(host_->FlingInProgress()); | 938 EXPECT_TRUE(host_->FlingInProgress()); |
921 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); | 939 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); |
922 | 940 |
923 // GFS in queue means that a GFC is added to the queue | 941 // GFS in queue means that a GFC is added to the queue |
924 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingCancel); | 942 SimulateGestureEvent(WebInputEvent::GestureFlingCancel); |
925 merged_event =host_->GestureEventLastQueueEvent(); | 943 merged_event =host_->GestureEventLastQueueEvent(); |
926 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); | 944 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); |
927 EXPECT_FALSE(host_->FlingInProgress()); | 945 EXPECT_FALSE(host_->FlingInProgress()); |
928 EXPECT_EQ(3U, host_->GestureEventLastQueueEventSize()); | 946 EXPECT_EQ(3U, host_->GestureEventLastQueueEventSize()); |
929 | 947 |
930 // Adding a second GFC is dropped. | 948 // Adding a second GFC is dropped. |
931 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingCancel); | 949 SimulateGestureEvent(WebInputEvent::GestureFlingCancel); |
932 EXPECT_FALSE(host_->FlingInProgress()); | 950 EXPECT_FALSE(host_->FlingInProgress()); |
933 EXPECT_EQ(3U, host_->GestureEventLastQueueEventSize()); | 951 EXPECT_EQ(3U, host_->GestureEventLastQueueEventSize()); |
934 | 952 |
935 // Adding another GFS will add it to the queue. | 953 // Adding another GFS will add it to the queue. |
936 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingStart); | 954 SimulateGestureFlingStartEvent(0, -10); |
937 merged_event = host_->GestureEventLastQueueEvent(); | 955 merged_event = host_->GestureEventLastQueueEvent(); |
938 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); | 956 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); |
939 EXPECT_TRUE(host_->FlingInProgress()); | 957 EXPECT_TRUE(host_->FlingInProgress()); |
940 EXPECT_EQ(4U, host_->GestureEventLastQueueEventSize()); | 958 EXPECT_EQ(4U, host_->GestureEventLastQueueEventSize()); |
941 | 959 |
942 // GFS in queue means that a GFC is added to the queue | 960 // GFS in queue means that a GFC is added to the queue |
943 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingCancel); | 961 SimulateGestureEvent(WebInputEvent::GestureFlingCancel); |
944 merged_event = host_->GestureEventLastQueueEvent(); | 962 merged_event = host_->GestureEventLastQueueEvent(); |
945 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); | 963 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); |
946 EXPECT_FALSE(host_->FlingInProgress()); | 964 EXPECT_FALSE(host_->FlingInProgress()); |
947 EXPECT_EQ(5U, host_->GestureEventLastQueueEventSize()); | 965 EXPECT_EQ(5U, host_->GestureEventLastQueueEventSize()); |
948 | 966 |
949 // Adding another GFC with a GFC already there is dropped. | 967 // Adding another GFC with a GFC already there is dropped. |
950 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureFlingCancel); | 968 SimulateGestureEvent(WebInputEvent::GestureFlingCancel); |
951 merged_event = host_->GestureEventLastQueueEvent(); | 969 merged_event = host_->GestureEventLastQueueEvent(); |
952 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); | 970 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); |
953 EXPECT_FALSE(host_->FlingInProgress()); | 971 EXPECT_FALSE(host_->FlingInProgress()); |
954 EXPECT_EQ(5U, host_->GestureEventLastQueueEventSize()); | 972 EXPECT_EQ(5U, host_->GestureEventLastQueueEventSize()); |
955 } | 973 } |
956 | 974 |
957 // Test that GestureTapDown events are deferred. | 975 // Test that GestureTapDown events are deferred. |
958 TEST_F(RenderWidgetHostTest, DeferredGestureTapDown) { | 976 TEST_F(RenderWidgetHostTest, DeferredGestureTapDown) { |
959 process_->sink().ClearMessages(); | 977 process_->sink().ClearMessages(); |
960 | 978 |
961 // Set some sort of short deferral timeout | 979 // Set some sort of short deferral timeout |
962 host_->set_maximum_tap_gap_time_ms(5); | 980 host_->set_maximum_tap_gap_time_ms(5); |
963 | 981 |
964 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureTapDown); | 982 SimulateGestureEvent(WebInputEvent::GestureTapDown); |
965 EXPECT_EQ(0U, process_->sink().message_count()); | 983 EXPECT_EQ(0U, process_->sink().message_count()); |
966 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); | 984 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); |
967 | 985 |
968 // Wait long enough for first timeout and see if it fired. | 986 // Wait long enough for first timeout and see if it fired. |
969 MessageLoop::current()->PostDelayedTask( | 987 MessageLoop::current()->PostDelayedTask( |
970 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(10)); | 988 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(10)); |
971 MessageLoop::current()->Run(); | 989 MessageLoop::current()->Run(); |
972 | 990 |
973 EXPECT_EQ(1U, process_->sink().message_count()); | 991 EXPECT_EQ(1U, process_->sink().message_count()); |
974 EXPECT_EQ(1U, host_->GestureEventLastQueueEventSize()); | 992 EXPECT_EQ(1U, host_->GestureEventLastQueueEventSize()); |
975 } | 993 } |
976 | 994 |
977 // Test that GestureTapDown events are sent immediately on GestureTap. | 995 // Test that GestureTapDown events are sent immediately on GestureTap. |
978 TEST_F(RenderWidgetHostTest, DeferredGestureTapDownSentOnTap) { | 996 TEST_F(RenderWidgetHostTest, DeferredGestureTapDownSentOnTap) { |
979 process_->sink().ClearMessages(); | 997 process_->sink().ClearMessages(); |
980 | 998 |
981 // Set some sort of short deferral timeout | 999 // Set some sort of short deferral timeout |
982 host_->set_maximum_tap_gap_time_ms(5); | 1000 host_->set_maximum_tap_gap_time_ms(5); |
983 | 1001 |
984 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureTapDown); | 1002 SimulateGestureEvent(WebInputEvent::GestureTapDown); |
985 EXPECT_EQ(0U, process_->sink().message_count()); | 1003 EXPECT_EQ(0U, process_->sink().message_count()); |
986 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); | 1004 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); |
987 | 1005 |
988 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureTap); | 1006 SimulateGestureEvent(WebInputEvent::GestureTap); |
989 EXPECT_EQ(1U, process_->sink().message_count()); | 1007 EXPECT_EQ(1U, process_->sink().message_count()); |
990 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); | 1008 EXPECT_EQ(2U, host_->GestureEventLastQueueEventSize()); |
991 | 1009 |
992 MessageLoop::current()->PostDelayedTask( | 1010 MessageLoop::current()->PostDelayedTask( |
993 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(10)); | 1011 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(10)); |
994 MessageLoop::current()->Run(); | 1012 MessageLoop::current()->Run(); |
995 | 1013 |
996 // If the deferral timer incorrectly fired, it sent an extra message. | 1014 // If the deferral timer incorrectly fired, it sent an extra message. |
997 EXPECT_EQ(1U, process_->sink().message_count()); | 1015 EXPECT_EQ(1U, process_->sink().message_count()); |
998 } | 1016 } |
999 | 1017 |
1000 // Test that scroll events during the deferral internal drop the GestureTapDown. | 1018 // Test that scroll events during the deferral internal drop the GestureTapDown. |
1001 TEST_F(RenderWidgetHostTest, DeferredGestureTapDownAnulledOnScroll) { | 1019 TEST_F(RenderWidgetHostTest, DeferredGestureTapDownAnulledOnScroll) { |
1002 process_->sink().ClearMessages(); | 1020 process_->sink().ClearMessages(); |
1003 | 1021 |
1004 // Set some sort of short deferral timeout | 1022 // Set some sort of short deferral timeout |
1005 host_->set_maximum_tap_gap_time_ms(5); | 1023 host_->set_maximum_tap_gap_time_ms(5); |
1006 | 1024 |
1007 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureTapDown); | 1025 SimulateGestureEvent(WebInputEvent::GestureTapDown); |
1008 EXPECT_EQ(0U, process_->sink().message_count()); | 1026 EXPECT_EQ(0U, process_->sink().message_count()); |
1009 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); | 1027 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); |
1010 | 1028 |
1011 SimulateGestureEvent(0, -10, 0, WebInputEvent::GestureScrollBegin); | 1029 SimulateGestureEvent(WebInputEvent::GestureScrollBegin); |
1012 EXPECT_EQ(1U, process_->sink().message_count()); | 1030 EXPECT_EQ(1U, process_->sink().message_count()); |
1013 EXPECT_EQ(1U, host_->GestureEventLastQueueEventSize()); | 1031 EXPECT_EQ(1U, host_->GestureEventLastQueueEventSize()); |
1014 | 1032 |
1015 MessageLoop::current()->PostDelayedTask( | 1033 MessageLoop::current()->PostDelayedTask( |
1016 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(10)); | 1034 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(10)); |
1017 MessageLoop::current()->Run(); | 1035 MessageLoop::current()->Run(); |
1018 | 1036 |
1019 // If the deferral timer incorrectly fired, it will send an extra message. | 1037 // If the deferral timer incorrectly fired, it will send an extra message. |
1020 EXPECT_EQ(1U, process_->sink().message_count()); | 1038 EXPECT_EQ(1U, process_->sink().message_count()); |
1021 } | 1039 } |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1084 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); | 1102 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); |
1085 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); | 1103 SimulateKeyboardEvent(WebInputEvent::RawKeyDown); |
1086 SendInputEventACK(WebInputEvent::RawKeyDown, true); | 1104 SendInputEventACK(WebInputEvent::RawKeyDown, true); |
1087 | 1105 |
1088 // Wait long enough for first timeout and see if it fired. | 1106 // Wait long enough for first timeout and see if it fired. |
1089 MessageLoop::current()->PostDelayedTask( | 1107 MessageLoop::current()->PostDelayedTask( |
1090 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(40)); | 1108 FROM_HERE, MessageLoop::QuitClosure(), TimeDelta::FromMilliseconds(40)); |
1091 MessageLoop::current()->Run(); | 1109 MessageLoop::current()->Run(); |
1092 EXPECT_TRUE(host_->unresponsive_timer_fired()); | 1110 EXPECT_TRUE(host_->unresponsive_timer_fired()); |
1093 } | 1111 } |
OLD | NEW |