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