Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 2882443002: Tiimer based phase info generated for mouse wheel events. (Closed)
Patch Set: comments addressed Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "content/browser/renderer_host/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <tuple> 10 #include <tuple>
(...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 void EnableRafAlignedTouchInput() { 736 void EnableRafAlignedTouchInput() {
737 feature_list_.InitFromCommandLine( 737 feature_list_.InitFromCommandLine(
738 features::kRafAlignedTouchInputEvents.name, ""); 738 features::kRafAlignedTouchInputEvents.name, "");
739 } 739 }
740 740
741 void DisableRafAlignedTouchInput() { 741 void DisableRafAlignedTouchInput() {
742 feature_list_.InitFromCommandLine( 742 feature_list_.InitFromCommandLine(
743 "", features::kRafAlignedTouchInputEvents.name); 743 "", features::kRafAlignedTouchInputEvents.name);
744 } 744 }
745 745
746 void EnableWheelScrollLatching() {
747 feature_list_.InitFromCommandLine(
748 features::kTouchpadAndWheelScrollLatching.name, "");
749 }
750
751 void DisableWheelScrollLatching() {
752 feature_list_.InitFromCommandLine(
753 "", features::kTouchpadAndWheelScrollLatching.name);
754 }
755
746 void SetFeatureList(bool raf_aligned_touch, bool wheel_scroll_latching) { 756 void SetFeatureList(bool raf_aligned_touch, bool wheel_scroll_latching) {
747 if (raf_aligned_touch && wheel_scroll_latching) { 757 if (raf_aligned_touch && wheel_scroll_latching) {
748 feature_list_.InitWithFeatures( 758 feature_list_.InitWithFeatures(
749 {features::kRafAlignedTouchInputEvents, 759 {features::kRafAlignedTouchInputEvents,
750 features::kTouchpadAndWheelScrollLatching}, 760 features::kTouchpadAndWheelScrollLatching},
751 {}); 761 {});
752 } else if (raf_aligned_touch && !wheel_scroll_latching) { 762 } else if (raf_aligned_touch && !wheel_scroll_latching) {
753 feature_list_.InitWithFeatures( 763 feature_list_.InitWithFeatures(
754 {features::kRafAlignedTouchInputEvents}, 764 {features::kRafAlignedTouchInputEvents},
755 {features::kTouchpadAndWheelScrollLatching}); 765 {features::kTouchpadAndWheelScrollLatching});
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 850
841 class RenderWidgetHostViewAuraRafAlignedTouchDisabledTest 851 class RenderWidgetHostViewAuraRafAlignedTouchDisabledTest
842 : public RenderWidgetHostViewAuraTest { 852 : public RenderWidgetHostViewAuraTest {
843 public: 853 public:
844 void SetUp() override { 854 void SetUp() override {
845 DisableRafAlignedTouchInput(); 855 DisableRafAlignedTouchInput();
846 RenderWidgetHostViewAuraTest::SetUp(); 856 RenderWidgetHostViewAuraTest::SetUp();
847 } 857 }
848 }; 858 };
849 859
860 class RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest
861 : public RenderWidgetHostViewAuraTest {
862 public:
863 void SetUp() override {
864 EnableWheelScrollLatching();
865 ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms(
866 0);
867 RenderWidgetHostViewAuraTest::SetUp();
868 }
869 };
870
850 void InstallDelegatedFrameHostClient( 871 void InstallDelegatedFrameHostClient(
851 RenderWidgetHostViewAura* render_widget_host_view, 872 RenderWidgetHostViewAura* render_widget_host_view,
852 std::unique_ptr<DelegatedFrameHostClient> delegated_frame_host_client) { 873 std::unique_ptr<DelegatedFrameHostClient> delegated_frame_host_client) {
853 RenderWidgetHostViewAuraTest::InstallDelegatedFrameHostClient( 874 RenderWidgetHostViewAuraTest::InstallDelegatedFrameHostClient(
854 render_widget_host_view, std::move(delegated_frame_host_client)); 875 render_widget_host_view, std::move(delegated_frame_host_client));
855 } 876 }
856 877
857 // Helper class to instantiate RenderWidgetHostViewGuest which is backed 878 // Helper class to instantiate RenderWidgetHostViewGuest which is backed
858 // by an aura platform view. 879 // by an aura platform view.
859 class RenderWidgetHostViewGuestAuraTest : public RenderWidgetHostViewAuraTest { 880 class RenderWidgetHostViewGuestAuraTest : public RenderWidgetHostViewAuraTest {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
933 const ui::LatencyInfo& ui_latency) { 954 const ui::LatencyInfo& ui_latency) {
934 widget_host_->ForwardMouseEventWithLatencyInfo( 955 widget_host_->ForwardMouseEventWithLatencyInfo(
935 SyntheticWebMouseEventBuilder::Build(type), ui_latency); 956 SyntheticWebMouseEventBuilder::Build(type), ui_latency);
936 } 957 }
937 958
938 void SimulateWheelEvent(float dX, float dY, int modifiers, bool precise) { 959 void SimulateWheelEvent(float dX, float dY, int modifiers, bool precise) {
939 widget_host_->ForwardWheelEvent(SyntheticWebMouseWheelEventBuilder::Build( 960 widget_host_->ForwardWheelEvent(SyntheticWebMouseWheelEventBuilder::Build(
940 0, 0, dX, dY, modifiers, precise)); 961 0, 0, dX, dY, modifiers, precise));
941 } 962 }
942 963
964 void SimulateWheelEventWithPhase(float dX,
965 float dY,
966 int modifiers,
967 bool precise,
968 WebMouseWheelEvent::Phase phase) {
969 WebMouseWheelEvent wheel_event = SyntheticWebMouseWheelEventBuilder::Build(
970 0, 0, dX, dY, modifiers, precise);
971 wheel_event.phase = phase;
972 widget_host_->ForwardWheelEvent(wheel_event);
973 }
974
943 void SimulateWheelEventWithLatencyInfo(float dX, 975 void SimulateWheelEventWithLatencyInfo(float dX,
944 float dY, 976 float dY,
945 int modifiers, 977 int modifiers,
946 bool precise, 978 bool precise,
947 const ui::LatencyInfo& ui_latency) { 979 const ui::LatencyInfo& ui_latency) {
948 widget_host_->ForwardWheelEventWithLatencyInfo( 980 widget_host_->ForwardWheelEventWithLatencyInfo(
949 SyntheticWebMouseWheelEventBuilder::Build(0, 0, dX, dY, modifiers, 981 SyntheticWebMouseWheelEventBuilder::Build(0, 0, dX, dY, modifiers,
950 precise), 982 precise),
951 ui_latency); 983 ui_latency);
952 } 984 }
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
1070 void ReleaseTouchPoint(int index) { 1102 void ReleaseTouchPoint(int index) {
1071 touch_event_.ReleasePoint(index); 1103 touch_event_.ReleasePoint(index);
1072 } 1104 }
1073 1105
1074 void ExpectGestureScrollEndForWheelScrolling(bool is_last) { 1106 void ExpectGestureScrollEndForWheelScrolling(bool is_last) {
1075 if (wheel_scroll_latching_enabled_) { 1107 if (wheel_scroll_latching_enabled_) {
1076 if (!is_last) { 1108 if (!is_last) {
1077 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1109 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1078 return; 1110 return;
1079 } 1111 }
1080 // Let the ScrollEnd timer in mouseWheelEventQueue fire. This will cause
1081 // the mouseWheelEventQueue to send a GestureScrollEnd event.
1082 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
1083 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
1084 base::TimeDelta::FromMilliseconds(
1085 kDefaultWheelScrollLatchingTransactionMs));
1086 base::RunLoop().Run();
1087 } 1112 }
1088 1113
1089 EXPECT_EQ(1U, sink_->message_count()); 1114 EXPECT_EQ(1U, sink_->message_count());
1090 InputMsg_HandleInputEvent::Param params; 1115 InputMsg_HandleInputEvent::Param params;
1091 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) { 1116 if (InputMsg_HandleInputEvent::Read(sink_->GetMessageAt(0), &params)) {
1092 const blink::WebInputEvent* event = std::get<0>(params); 1117 const blink::WebInputEvent* event = std::get<0>(params);
1093 EXPECT_EQ(WebInputEvent::kGestureScrollEnd, event->GetType()); 1118 EXPECT_EQ(WebInputEvent::kGestureScrollEnd, event->GetType());
1094 } 1119 }
1095 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1120 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1096 } 1121 }
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
1719 1744
1720 ui::TouchEvent release2( 1745 ui::TouchEvent release2(
1721 ui::ET_TOUCH_RELEASED, gfx::Point(20, 20), base::TimeTicks::Now(), 1746 ui::ET_TOUCH_RELEASED, gfx::Point(20, 20), base::TimeTicks::Now(),
1722 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, 0)); 1747 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, 0));
1723 view_->OnTouchEvent(&release2); 1748 view_->OnTouchEvent(&release2);
1724 EXPECT_TRUE(press.synchronous_handling_disabled()); 1749 EXPECT_TRUE(press.synchronous_handling_disabled());
1725 EXPECT_EQ(0U, pointer_state().GetPointerCount()); 1750 EXPECT_EQ(0U, pointer_state().GetPointerCount());
1726 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1751 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1727 } 1752 }
1728 1753
1754 TEST_F(RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest,
1755 TimerBasedWheelEventPhaseInfo) {
1756 view_->InitAsChild(nullptr);
1757 view_->Show();
1758 sink_->ClearMessages();
1759
1760 ui::MouseWheelEvent event(gfx::Vector2d(0, 5), gfx::Point(2, 2),
1761 gfx::Point(2, 2), ui::EventTimeForNow(), 0, 0);
1762 view_->OnMouseEvent(&event);
1763 const WebInputEvent* input_event =
1764 GetInputEventFromMessage(*sink_->GetMessageAt(0));
1765 const WebMouseWheelEvent* wheel_event =
1766 static_cast<const WebMouseWheelEvent*>(input_event);
1767 EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
1768 SendInputEventACK(blink::WebInputEvent::kMouseWheel,
1769 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1770
1771 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(1));
1772 const WebGestureEvent* gesture_event =
1773 static_cast<const WebGestureEvent*>(input_event);
1774 EXPECT_EQ(WebInputEvent::kGestureScrollBegin, gesture_event->GetType());
1775
1776 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(2));
1777 gesture_event = static_cast<const WebGestureEvent*>(input_event);
1778 EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, gesture_event->GetType());
1779 EXPECT_EQ(0U, gesture_event->data.scroll_update.delta_x);
1780 EXPECT_EQ(5U, gesture_event->data.scroll_update.delta_y);
1781 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
1782 INPUT_EVENT_ACK_STATE_CONSUMED);
1783 sink_->ClearMessages();
1784
1785 // Send a ui::ScrollEvent instead of ui::MouseWheel event, the timer based
1786 // phase info doesn't diffrentiate between the two types of events.
1787 ui::ScrollEvent scroll1(ui::ET_SCROLL, gfx::Point(2, 2),
1788 ui::EventTimeForNow(), 0, 0, 2, 0, 2, 2);
1789 view_->OnScrollEvent(&scroll1);
1790 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(0));
1791 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
1792 EXPECT_EQ(WebMouseWheelEvent::kPhaseChanged, wheel_event->phase);
1793 SendInputEventACK(blink::WebInputEvent::kMouseWheel,
1794 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1795
1796 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(1));
1797 gesture_event = static_cast<const WebGestureEvent*>(input_event);
1798 EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, gesture_event->GetType());
1799 EXPECT_EQ(0U, gesture_event->data.scroll_update.delta_x);
1800 EXPECT_EQ(2U, gesture_event->data.scroll_update.delta_y);
1801 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
1802 INPUT_EVENT_ACK_STATE_CONSUMED);
1803 sink_->ClearMessages();
1804
1805 // Let the RenderWidgetHostViewEventHandler::mouse_wheel_phase_timer_ fire. A
1806 // synthetic wheel event with zero deltas and kPhaseEnded will be sent.
1807 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
1808 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
1809 base::TimeDelta::FromMilliseconds(
1810 kDefaultMouseWheelLatchingTransactionMs));
1811 base::RunLoop().Run();
1812
1813 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(0));
1814 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
1815 EXPECT_EQ(WebMouseWheelEvent::kPhaseEnded, wheel_event->phase);
1816 EXPECT_EQ(0U, wheel_event->delta_x);
1817 EXPECT_EQ(0U, wheel_event->delta_y);
1818 SendInputEventACK(blink::WebInputEvent::kMouseWheel,
1819 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1820
1821 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(1));
1822 gesture_event = static_cast<const WebGestureEvent*>(input_event);
1823 EXPECT_EQ(WebInputEvent::kGestureScrollEnd, gesture_event->GetType());
1824 sink_->ClearMessages();
1825 }
1826
1827 // Tests that a gesture fling start with touchpad source stops the
1828 // RenderWidgetHostViewEventHandler::mouse_wheel_phase_timer_ and no synthetic
1829 // wheel event will be sent.
1830 TEST_F(RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest,
1831 TouchpadFlingStartStopsWheelPhaseTimer) {
1832 ui::ScrollEvent scroll0(ui::ET_SCROLL, gfx::Point(2, 2),
1833 ui::EventTimeForNow(), 0, 0, 5, 0, 5, 2);
1834 view_->OnScrollEvent(&scroll0);
1835 const WebInputEvent* input_event =
1836 GetInputEventFromMessage(*sink_->GetMessageAt(0));
1837 const WebMouseWheelEvent* wheel_event =
1838 static_cast<const WebMouseWheelEvent*>(input_event);
1839 EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
1840 SendInputEventACK(blink::WebInputEvent::kMouseWheel,
1841 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1842
1843 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(1));
1844 const WebGestureEvent* gesture_event =
1845 static_cast<const WebGestureEvent*>(input_event);
1846 EXPECT_EQ(WebInputEvent::kGestureScrollBegin, gesture_event->GetType());
1847
1848 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(2));
1849 gesture_event = static_cast<const WebGestureEvent*>(input_event);
1850 EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, gesture_event->GetType());
1851 EXPECT_EQ(0U, gesture_event->data.scroll_update.delta_x);
1852 EXPECT_EQ(5U, gesture_event->data.scroll_update.delta_y);
1853 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
1854 INPUT_EVENT_ACK_STATE_CONSUMED);
1855 sink_->ClearMessages();
1856
1857 ui::ScrollEvent fling_start(ui::ET_SCROLL_FLING_START, gfx::Point(2, 2),
1858 ui::EventTimeForNow(), 0, 0, 10, 0, 10, 2);
1859 view_->OnScrollEvent(&fling_start);
1860 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(0));
1861 gesture_event = static_cast<const WebGestureEvent*>(input_event);
1862 EXPECT_EQ(WebInputEvent::kGestureFlingStart, gesture_event->GetType());
1863 SendInputEventACK(WebInputEvent::kGestureFlingStart,
1864 INPUT_EVENT_ACK_STATE_CONSUMED);
1865 sink_->ClearMessages();
1866
1867 // Let the RenderWidgetHostViewEventHandler::mouse_wheel_phase_timer_ fire. No
1868 // synthetic wheel event will be sent since the timer has stopped.
1869 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
1870 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
1871 base::TimeDelta::FromMilliseconds(
1872 kDefaultMouseWheelLatchingTransactionMs));
1873 base::RunLoop().Run();
1874
1875 EXPECT_EQ(0U, sink_->message_count());
1876
1877 // Handling the next ui::ET_SCROLL event will send a fling cancellation and a
1878 // mouse wheel with kPhaseBegan.
1879 ui::ScrollEvent scroll1(ui::ET_SCROLL, gfx::Point(2, 2),
1880 ui::EventTimeForNow(), 0, 0, 15, 0, 15, 2);
1881 view_->OnScrollEvent(&scroll1);
1882 EXPECT_EQ(2U, sink_->message_count());
1883 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(0));
1884 gesture_event = static_cast<const WebGestureEvent*>(input_event);
1885
1886 EXPECT_EQ(WebInputEvent::kGestureFlingCancel, gesture_event->GetType());
1887 SendInputEventACK(WebInputEvent::kGestureFlingCancel,
1888 INPUT_EVENT_ACK_STATE_CONSUMED);
1889
1890 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(1));
1891 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
1892 EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
1893 sink_->ClearMessages();
1894 }
1895
1896 TEST_F(RenderWidgetHostViewAuraWheelScrollLatchingEnabledTest,
1897 GSBWithTouchSourceStopsWheelScrollSequence) {
1898 ui::ScrollEvent scroll0(ui::ET_SCROLL, gfx::Point(2, 2),
1899 ui::EventTimeForNow(), 0, 0, 5, 0, 5, 2);
1900 view_->OnScrollEvent(&scroll0);
1901 const WebInputEvent* input_event =
1902 GetInputEventFromMessage(*sink_->GetMessageAt(0));
1903 const WebMouseWheelEvent* wheel_event =
1904 static_cast<const WebMouseWheelEvent*>(input_event);
1905 EXPECT_EQ(WebMouseWheelEvent::kPhaseBegan, wheel_event->phase);
1906 SendInputEventACK(blink::WebInputEvent::kMouseWheel,
1907 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1908
1909 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(1));
1910 const WebGestureEvent* gesture_event =
1911 static_cast<const WebGestureEvent*>(input_event);
1912 EXPECT_EQ(WebInputEvent::kGestureScrollBegin, gesture_event->GetType());
1913
1914 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(2));
1915 gesture_event = static_cast<const WebGestureEvent*>(input_event);
1916 EXPECT_EQ(WebInputEvent::kGestureScrollUpdate, gesture_event->GetType());
1917 EXPECT_EQ(0U, gesture_event->data.scroll_update.delta_x);
1918 EXPECT_EQ(5U, gesture_event->data.scroll_update.delta_y);
1919 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
1920 INPUT_EVENT_ACK_STATE_CONSUMED);
1921 sink_->ClearMessages();
1922
1923 ui::GestureEventDetails event_details(ui::ET_GESTURE_SCROLL_BEGIN);
1924 event_details.set_device_type(ui::GestureDeviceType::DEVICE_TOUCHSCREEN);
1925 ui::GestureEvent scroll_begin(2, 2, 0, ui::EventTimeForNow(), event_details);
1926 view_->OnGestureEvent(&scroll_begin);
1927 EXPECT_EQ(3U, sink_->message_count());
1928
1929 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(0));
1930 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
1931 EXPECT_EQ(WebMouseWheelEvent::kPhaseEnded, wheel_event->phase);
1932 EXPECT_EQ(0U, wheel_event->delta_x);
1933 EXPECT_EQ(0U, wheel_event->delta_y);
1934
1935 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(1));
1936 gesture_event = static_cast<const WebGestureEvent*>(input_event);
1937 EXPECT_EQ(WebInputEvent::kGestureScrollEnd, gesture_event->GetType());
1938 EXPECT_EQ(blink::kWebGestureDeviceTouchpad, gesture_event->source_device);
1939
1940 input_event = GetInputEventFromMessage(*sink_->GetMessageAt(2));
1941 gesture_event = static_cast<const WebGestureEvent*>(input_event);
1942 EXPECT_EQ(WebInputEvent::kGestureScrollBegin, gesture_event->GetType());
1943 EXPECT_EQ(blink::kWebGestureDeviceTouchscreen, gesture_event->source_device);
1944 sink_->ClearMessages();
1945 }
1946
1729 // Checks that touch-event state is maintained correctly for multiple touch 1947 // Checks that touch-event state is maintained correctly for multiple touch
1730 // points. 1948 // points.
1731 TEST_F(RenderWidgetHostViewAuraTest, MultiTouchPointsStates) { 1949 TEST_F(RenderWidgetHostViewAuraTest, MultiTouchPointsStates) {
1732 view_->InitAsFullscreen(parent_view_); 1950 view_->InitAsFullscreen(parent_view_);
1733 view_->Show(); 1951 view_->Show();
1734 view_->UseFakeDispatcher(); 1952 view_->UseFakeDispatcher();
1735 GetSentMessageCountAndResetSink(); 1953 GetSentMessageCountAndResetSink();
1736 1954
1737 ui::TouchEvent press0( 1955 ui::TouchEvent press0(
1738 ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), ui::EventTimeForNow(), 1956 ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), ui::EventTimeForNow(),
(...skipping 1782 matching lines...) Expand 10 before | Expand all | Expand 10 after
3521 EXPECT_EQ(ui::MotionEvent::ACTION_DOWN, pointer_state().GetAction()); 3739 EXPECT_EQ(ui::MotionEvent::ACTION_DOWN, pointer_state().GetAction());
3522 EXPECT_EQ(1U, pointer_state().GetPointerCount()); 3740 EXPECT_EQ(1U, pointer_state().GetPointerCount());
3523 EXPECT_EQ(kX, pointer_state().GetX(0)); 3741 EXPECT_EQ(kX, pointer_state().GetX(0));
3524 EXPECT_EQ(kY, pointer_state().GetY(0)); 3742 EXPECT_EQ(kY, pointer_state().GetY(0));
3525 } 3743 }
3526 3744
3527 void RenderWidgetHostViewAuraOverscrollTest::WheelNotPreciseScrollEvent() { 3745 void RenderWidgetHostViewAuraOverscrollTest::WheelNotPreciseScrollEvent() {
3528 SetUpOverscrollEnvironment(); 3746 SetUpOverscrollEnvironment();
3529 3747
3530 // Simulate wheel events. 3748 // Simulate wheel events.
3531 SimulateWheelEvent(-5, 0, 0, false); // sent directly 3749 if (!wheel_scroll_latching_enabled_) {
3532 SimulateWheelEvent(-60, 1, 0, false); // enqueued 3750 SimulateWheelEvent(-5, 0, 0, false); // sent directly
3751 SimulateWheelEvent(-60, 1, 0, false); // enqueued
3752 } else {
3753 SimulateWheelEventWithPhase(
3754 -5, 0, 0, false, WebMouseWheelEvent::kPhaseBegan); // sent directly
3755 SimulateWheelEventWithPhase(-60, 1, 0, false,
3756 WebMouseWheelEvent::kPhaseChanged); // enqueued
3757 }
3533 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3758 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3534 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3759 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3535 3760
3536 // Receive ACK the first wheel event as not processed. 3761 // Receive ACK the first wheel event as not processed.
3537 SendInputEventACK(WebInputEvent::kMouseWheel, 3762 SendInputEventACK(WebInputEvent::kMouseWheel,
3538 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3763 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3539 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 3764 ExpectGestureScrollEventsAfterMouseWheelACK(true, true);
3540 3765
3541 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3766 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3542 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3767 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3543 ExpectGestureScrollEndForWheelScrolling(false); 3768 ExpectGestureScrollEndForWheelScrolling(false);
3544 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3769 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3545 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3770 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3546 3771
3547 SendInputEventACK(WebInputEvent::kMouseWheel, 3772 SendInputEventACK(WebInputEvent::kMouseWheel,
3548 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3773 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3549 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 3774 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3550 3775
3551 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3776 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3552 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3777 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3778 if (wheel_scroll_latching_enabled_) {
3779 SimulateWheelEventWithPhase(0, 0, 0, false,
3780 WebMouseWheelEvent::kPhaseEnded);
3781 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3782 SendInputEventACK(WebInputEvent::kMouseWheel,
3783 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3784 }
3553 ExpectGestureScrollEndForWheelScrolling(true); 3785 ExpectGestureScrollEndForWheelScrolling(true);
3554 3786
3555 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3787 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3556 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3788 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3557 } 3789 }
3558 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelNotPreciseScrollEvent) { 3790 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelNotPreciseScrollEvent) {
3559 WheelNotPreciseScrollEvent(); 3791 WheelNotPreciseScrollEvent();
3560 } 3792 }
3561 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 3793 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
3562 WheelNotPreciseScrollEvent) { 3794 WheelNotPreciseScrollEvent) {
3563 WheelNotPreciseScrollEvent(); 3795 WheelNotPreciseScrollEvent();
3564 } 3796 }
3565 3797
3566 void RenderWidgetHostViewAuraOverscrollTest::WheelScrollEventOverscrolls() { 3798 void RenderWidgetHostViewAuraOverscrollTest::WheelScrollEventOverscrolls() {
3567 SetUpOverscrollEnvironment(); 3799 SetUpOverscrollEnvironment();
3568 3800
3569 // Simulate wheel events. 3801 // Simulate wheel events.
3570 SimulateWheelEvent(-5, 0, 0, true); // sent directly 3802 if (!wheel_scroll_latching_enabled_) {
3571 SimulateWheelEvent(-1, 1, 0, true); // enqueued 3803 SimulateWheelEvent(-5, 0, 0, true); // sent directly
3572 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event 3804 SimulateWheelEvent(-1, 1, 0, true); // enqueued
3573 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event 3805 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event
3574 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event 3806 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event
3575 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers 3807 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event
3808 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers
3809 } else {
3810 SimulateWheelEventWithPhase(
3811 -5, 0, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
3812 SimulateWheelEventWithPhase(-1, 1, 0, true,
3813 WebMouseWheelEvent::kPhaseChanged); // enqueued
3814 SimulateWheelEventWithPhase(
3815 -10, -3, 0, true,
3816 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
3817 SimulateWheelEventWithPhase(
3818 -15, -1, 0, true,
3819 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
3820 SimulateWheelEventWithPhase(
3821 -30, -3, 0, true,
3822 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
3823 SimulateWheelEventWithPhase(
3824 -20, 6, 1, true,
3825 WebMouseWheelEvent::kPhaseChanged); // enqueued, different modifiers
3826 }
3576 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3827 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3577 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3828 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3578 3829
3579 // Receive ACK the first wheel event as not processed. 3830 // Receive ACK the first wheel event as not processed.
3580 SendInputEventACK(WebInputEvent::kMouseWheel, 3831 SendInputEventACK(WebInputEvent::kMouseWheel,
3581 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3832 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3582 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 3833 ExpectGestureScrollEventsAfterMouseWheelACK(true, true);
3583 3834
3584 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3835 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3585 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3836 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3632 WheelScrollEventOverscrolls(); 3883 WheelScrollEventOverscrolls();
3633 } 3884 }
3634 3885
3635 // Tests that if some scroll events are consumed towards the start, then 3886 // Tests that if some scroll events are consumed towards the start, then
3636 // subsequent scrolls do not horizontal overscroll. 3887 // subsequent scrolls do not horizontal overscroll.
3637 void RenderWidgetHostViewAuraOverscrollTest:: 3888 void RenderWidgetHostViewAuraOverscrollTest::
3638 WheelScrollConsumedDoNotHorizOverscroll() { 3889 WheelScrollConsumedDoNotHorizOverscroll() {
3639 SetUpOverscrollEnvironment(); 3890 SetUpOverscrollEnvironment();
3640 3891
3641 // Simulate wheel events. 3892 // Simulate wheel events.
3642 SimulateWheelEvent(-5, 0, 0, true); // sent directly 3893 if (!wheel_scroll_latching_enabled_) {
3643 SimulateWheelEvent(-1, -1, 0, true); // enqueued 3894 SimulateWheelEvent(-5, 0, 0, true); // sent directly
3644 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event 3895 SimulateWheelEvent(-1, -1, 0, true); // enqueued
3645 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event 3896 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event
3646 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event 3897 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event
3647 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers 3898 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event
3899 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers
3900 } else {
3901 SimulateWheelEventWithPhase(
3902 -5, 0, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
3903 SimulateWheelEventWithPhase(-1, -1, 0, true,
3904 WebMouseWheelEvent::kPhaseChanged); // enqueued
3905 SimulateWheelEventWithPhase(
3906 -10, -3, 0, true,
3907 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
3908 SimulateWheelEventWithPhase(
3909 -15, -1, 0, true,
3910 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
3911 SimulateWheelEventWithPhase(
3912 -30, -3, 0, true,
3913 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
3914 SimulateWheelEventWithPhase(
3915 -20, 6, 1, true,
3916 WebMouseWheelEvent::kPhaseChanged); // enqueued, different modifiers
3917 }
3648 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3918 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3649 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3919 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3650 3920
3651 // Receive ACK the first wheel event as processed. 3921 // Receive ACK the first wheel event as processed.
3652 SendInputEventACK(WebInputEvent::kMouseWheel, 3922 SendInputEventACK(WebInputEvent::kMouseWheel,
3653 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3923 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3654 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 3924 ExpectGestureScrollEventsAfterMouseWheelACK(true, true);
3655 3925
3656 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3926 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3657 INPUT_EVENT_ACK_STATE_CONSUMED); 3927 INPUT_EVENT_ACK_STATE_CONSUMED);
(...skipping 14 matching lines...) Expand all
3672 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3942 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3673 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3943 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3674 ExpectGestureScrollEndForWheelScrolling(false); 3944 ExpectGestureScrollEndForWheelScrolling(false);
3675 3945
3676 SendInputEventACK(WebInputEvent::kMouseWheel, 3946 SendInputEventACK(WebInputEvent::kMouseWheel,
3677 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3947 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3678 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 3948 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3679 3949
3680 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3950 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3681 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3951 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3952 if (wheel_scroll_latching_enabled_) {
3953 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
3954 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3955 SendInputEventACK(WebInputEvent::kMouseWheel,
3956 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3957 }
3958
3682 ExpectGestureScrollEndForWheelScrolling(true); 3959 ExpectGestureScrollEndForWheelScrolling(true);
3683 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3960 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3684 } 3961 }
3685 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 3962 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
3686 WheelScrollConsumedDoNotHorizOverscroll) { 3963 WheelScrollConsumedDoNotHorizOverscroll) {
3687 WheelScrollConsumedDoNotHorizOverscroll(); 3964 WheelScrollConsumedDoNotHorizOverscroll();
3688 } 3965 }
3689 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 3966 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
3690 WheelScrollConsumedDoNotHorizOverscroll) { 3967 WheelScrollConsumedDoNotHorizOverscroll) {
3691 WheelScrollConsumedDoNotHorizOverscroll(); 3968 WheelScrollConsumedDoNotHorizOverscroll();
3692 } 3969 }
3693 3970
3694 // Tests that wheel-scrolling correctly turns overscroll on and off. 3971 // Tests that wheel-scrolling correctly turns overscroll on and off.
3695 void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() { 3972 void RenderWidgetHostViewAuraOverscrollTest::WheelScrollOverscrollToggle() {
3696 SetUpOverscrollEnvironment(); 3973 SetUpOverscrollEnvironment();
3697 3974
3698 // Send a wheel event. ACK the event as not processed. This should not 3975 // Send a wheel event. ACK the event as not processed. This should not
3699 // initiate an overscroll gesture since it doesn't cross the threshold yet. 3976 // initiate an overscroll gesture since it doesn't cross the threshold yet.
3700 SimulateWheelEvent(10, 0, 0, true); 3977 if (!wheel_scroll_latching_enabled_) {
3978 SimulateWheelEvent(10, 0, 0, true);
3979 } else {
3980 SimulateWheelEventWithPhase(10, 0, 0, true,
3981 WebMouseWheelEvent::kPhaseBegan);
3982 }
3701 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3983 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3702 SendInputEventACK(WebInputEvent::kMouseWheel, 3984 SendInputEventACK(WebInputEvent::kMouseWheel,
3703 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3985 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3704 ExpectGestureScrollEventsAfterMouseWheelACK(true, false); 3986 ExpectGestureScrollEventsAfterMouseWheelACK(true, false);
3705 3987
3706 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 3988 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3707 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3989 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3708 ExpectGestureScrollEndForWheelScrolling(false); 3990 ExpectGestureScrollEndForWheelScrolling(false);
3709 3991
3710 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3992 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3711 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3993 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3712 3994
3713 // Scroll some more so as to not overscroll. 3995 // Scroll some more so as to not overscroll.
3714 SimulateWheelEvent(10, 0, 0, true); 3996 if (!wheel_scroll_latching_enabled_) {
3997 SimulateWheelEvent(10, 0, 0, true);
3998 } else {
3999 SimulateWheelEventWithPhase(10, 0, 0, true,
4000 WebMouseWheelEvent::kPhaseChanged);
4001 }
3715 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4002 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3716 SendInputEventACK(WebInputEvent::kMouseWheel, 4003 SendInputEventACK(WebInputEvent::kMouseWheel,
3717 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4004 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3718 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4005 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3719 4006
3720 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4007 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3721 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4008 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3722 ExpectGestureScrollEndForWheelScrolling(false); 4009 ExpectGestureScrollEndForWheelScrolling(false);
3723 4010
3724 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4011 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3725 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4012 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3726 4013
3727 // Scroll some more to initiate an overscroll. 4014 // Scroll some more to initiate an overscroll.
3728 SimulateWheelEvent(40, 0, 0, true); 4015 if (!wheel_scroll_latching_enabled_) {
4016 SimulateWheelEvent(40, 0, 0, true);
4017 } else {
4018 SimulateWheelEventWithPhase(40, 0, 0, true,
4019 WebMouseWheelEvent::kPhaseChanged);
4020 }
3729 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4021 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3730 SendInputEventACK(WebInputEvent::kMouseWheel, 4022 SendInputEventACK(WebInputEvent::kMouseWheel,
3731 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4023 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3732 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4024 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3733 4025
3734 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4026 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3735 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4027 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3736 ExpectGestureScrollEndForWheelScrolling(false); 4028 ExpectGestureScrollEndForWheelScrolling(false);
3737 4029
3738 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 4030 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
3739 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 4031 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
3740 EXPECT_EQ(60.f, overscroll_delta_x()); 4032 EXPECT_EQ(60.f, overscroll_delta_x());
3741 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); 4033 EXPECT_EQ(10.f, overscroll_delegate()->delta_x());
3742 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 4034 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3743 4035
3744 // Scroll in the reverse direction enough to abort the overscroll. 4036 // Scroll in the reverse direction enough to abort the overscroll.
3745 SimulateWheelEvent(-20, 0, 0, true); 4037 if (!wheel_scroll_latching_enabled_) {
4038 SimulateWheelEvent(-20, 0, 0, true);
4039 } else {
4040 SimulateWheelEventWithPhase(-20, 0, 0, true,
4041 WebMouseWheelEvent::kPhaseChanged);
4042 }
3746 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4043 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3747 SendInputEventACK(WebInputEvent::kMouseWheel, 4044 SendInputEventACK(WebInputEvent::kMouseWheel,
3748 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4045 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3749 if (wheel_scroll_latching_enabled_) { 4046 if (wheel_scroll_latching_enabled_) {
3750 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 4047 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
3751 } else { 4048 } else {
3752 // ScrollBegin and ScrollEnd will be queued events. 4049 // ScrollBegin and ScrollEnd will be queued events.
3753 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 4050 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3754 } 4051 }
3755 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4052 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3756 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4053 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3757 4054
3758 // Continue to scroll in the reverse direction. 4055 // Continue to scroll in the reverse direction.
3759 SimulateWheelEvent(-20, 0, 0, true); 4056 if (!wheel_scroll_latching_enabled_) {
4057 SimulateWheelEvent(-20, 0, 0, true);
4058 } else {
4059 SimulateWheelEventWithPhase(-20, 0, 0, true,
4060 WebMouseWheelEvent::kPhaseChanged);
4061 }
3760 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4062 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3761 SendInputEventACK(WebInputEvent::kMouseWheel, 4063 SendInputEventACK(WebInputEvent::kMouseWheel,
3762 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4064 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3763 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4065 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3764 4066
3765 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4067 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3766 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4068 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3767 ExpectGestureScrollEndForWheelScrolling(false); 4069 ExpectGestureScrollEndForWheelScrolling(false);
3768 4070
3769 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4071 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3770 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4072 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3771 4073
3772 // Continue to scroll in the reverse direction enough to initiate overscroll 4074 // Continue to scroll in the reverse direction enough to initiate overscroll
3773 // in that direction. 4075 // in that direction.
3774 SimulateWheelEvent(-55, 0, 0, true); 4076 if (!wheel_scroll_latching_enabled_) {
4077 SimulateWheelEvent(-55, 0, 0, true);
4078 } else {
4079 SimulateWheelEventWithPhase(-55, 0, 0, true,
4080 WebMouseWheelEvent::kPhaseChanged);
4081 }
3775 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4082 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3776 SendInputEventACK(WebInputEvent::kMouseWheel, 4083 SendInputEventACK(WebInputEvent::kMouseWheel,
3777 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4084 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3778 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4085 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3779 4086
3780 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4087 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3781 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4088 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4089 if (wheel_scroll_latching_enabled_) {
4090 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
4091 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4092 SendInputEventACK(WebInputEvent::kMouseWheel,
4093 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4094 }
3782 ExpectGestureScrollEndForWheelScrolling(true); 4095 ExpectGestureScrollEndForWheelScrolling(true);
3783 4096
3784 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4097 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
3785 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4098 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
3786 EXPECT_EQ(-75.f, overscroll_delta_x()); 4099 EXPECT_EQ(-75.f, overscroll_delta_x());
3787 EXPECT_EQ(-25.f, overscroll_delegate()->delta_x()); 4100 EXPECT_EQ(-25.f, overscroll_delegate()->delta_x());
3788 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 4101 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3789 } 4102 }
3790 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollOverscrollToggle) { 4103 TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollOverscrollToggle) {
3791 WheelScrollOverscrollToggle(); 4104 WheelScrollOverscrollToggle();
3792 } 4105 }
3793 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 4106 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
3794 WheelScrollOverscrollToggle) { 4107 WheelScrollOverscrollToggle) {
3795 WheelScrollOverscrollToggle(); 4108 WheelScrollOverscrollToggle();
3796 } 4109 }
3797 4110
3798 void RenderWidgetHostViewAuraOverscrollTest::ScrollEventsOverscrollWithFling() { 4111 void RenderWidgetHostViewAuraOverscrollTest::ScrollEventsOverscrollWithFling() {
3799 SetUpOverscrollEnvironment(); 4112 SetUpOverscrollEnvironment();
3800 4113
3801 // Send a wheel event. ACK the event as not processed. This should not 4114 // Send a wheel event. ACK the event as not processed. This should not
3802 // initiate an overscroll gesture since it doesn't cross the threshold yet. 4115 // initiate an overscroll gesture since it doesn't cross the threshold yet.
3803 SimulateWheelEvent(10, 0, 0, true); 4116 if (!wheel_scroll_latching_enabled_) {
4117 SimulateWheelEvent(10, 0, 0, true);
4118 } else {
4119 SimulateWheelEventWithPhase(10, 0, 0, true,
4120 WebMouseWheelEvent::kPhaseBegan);
4121 }
3804 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4122 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3805 SendInputEventACK(WebInputEvent::kMouseWheel, 4123 SendInputEventACK(WebInputEvent::kMouseWheel,
3806 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4124 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3807 ExpectGestureScrollEventsAfterMouseWheelACK(true, false); 4125 ExpectGestureScrollEventsAfterMouseWheelACK(true, false);
3808 4126
3809 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4127 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3810 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4128 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3811 ExpectGestureScrollEndForWheelScrolling(false); 4129 ExpectGestureScrollEndForWheelScrolling(false);
3812 4130
3813 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4131 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3814 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4132 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3815 4133
3816 // Scroll some more so as to not overscroll. 4134 // Scroll some more so as to not overscroll.
3817 SimulateWheelEvent(20, 0, 0, true); 4135 if (!wheel_scroll_latching_enabled_) {
4136 SimulateWheelEvent(20, 0, 0, true);
4137 } else {
4138 SimulateWheelEventWithPhase(20, 0, 0, true,
4139 WebMouseWheelEvent::kPhaseChanged);
4140 }
3818 EXPECT_EQ(1U, sink_->message_count()); 4141 EXPECT_EQ(1U, sink_->message_count());
3819 SendInputEventACK(WebInputEvent::kMouseWheel, 4142 SendInputEventACK(WebInputEvent::kMouseWheel,
3820 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4143 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3821 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4144 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3822 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4145 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3823 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4146 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3824 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4147 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3825 sink_->ClearMessages(); 4148 sink_->ClearMessages();
3826 4149
3827 // Scroll some more to initiate an overscroll. 4150 // Scroll some more to initiate an overscroll.
3828 SimulateWheelEvent(30, 0, 0, true); 4151 if (!wheel_scroll_latching_enabled_) {
4152 SimulateWheelEvent(30, 0, 0, true);
4153 } else {
4154 SimulateWheelEventWithPhase(30, 0, 0, true,
4155 WebMouseWheelEvent::kPhaseChanged);
4156 }
3829 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4157 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3830 SendInputEventACK(WebInputEvent::kMouseWheel, 4158 SendInputEventACK(WebInputEvent::kMouseWheel,
3831 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4159 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3832 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4160 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3833 4161
3834 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4162 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3835 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4163 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3836 ExpectGestureScrollEndForWheelScrolling(false); 4164 ExpectGestureScrollEndForWheelScrolling(false);
3837 4165
3838 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 4166 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
3839 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 4167 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
3840 4168
3841 EXPECT_EQ(60.f, overscroll_delta_x()); 4169 EXPECT_EQ(60.f, overscroll_delta_x());
3842 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); 4170 EXPECT_EQ(10.f, overscroll_delegate()->delta_x());
3843 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 4171 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3844 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 4172 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
3845 4173
3846 // Send a fling start, but with a small velocity, so that the overscroll is 4174 // Send a fling start, but with a small velocity, so that the overscroll is
3847 // aborted. The fling should proceed to the renderer, through the gesture 4175 // aborted. The fling should proceed to the renderer, through the gesture
3848 // event filter. 4176 // event filter.
3849 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin, 4177 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
3850 blink::kWebGestureDeviceTouchscreen); 4178 blink::kWebGestureDeviceTouchscreen);
3851 SimulateGestureFlingStartEvent(0.f, 0.1f, blink::kWebGestureDeviceTouchpad); 4179 SimulateGestureFlingStartEvent(0.f, 0.1f, blink::kWebGestureDeviceTouchpad);
3852 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4180 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3853 4181
3854 if (!wheel_scroll_latching_enabled_) { 4182 // ScrollBegin and FlingStart will be queued events.
3855 // ScrollBegin and FlingStart will be queued events. 4183 EXPECT_EQ(2U, sink_->message_count());
3856 EXPECT_EQ(2U, sink_->message_count());
3857 } else {
3858 // ScrollEnd, ScrollBegin, and FlingStart will be queued events.
3859 EXPECT_EQ(3U, sink_->message_count());
3860 }
3861 } 4184 }
3862 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 4185 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
3863 ScrollEventsOverscrollWithFling) { 4186 ScrollEventsOverscrollWithFling) {
3864 ScrollEventsOverscrollWithFling(); 4187 ScrollEventsOverscrollWithFling();
3865 } 4188 }
3866 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 4189 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
3867 ScrollEventsOverscrollWithFling) { 4190 ScrollEventsOverscrollWithFling) {
3868 ScrollEventsOverscrollWithFling(); 4191 ScrollEventsOverscrollWithFling();
3869 } 4192 }
3870 4193
3871 // Same as ScrollEventsOverscrollWithFling, but with zero velocity. Checks that 4194 // Same as ScrollEventsOverscrollWithFling, but with zero velocity. Checks that
3872 // the zero-velocity fling does not reach the renderer. 4195 // the zero-velocity fling does not reach the renderer.
3873 void RenderWidgetHostViewAuraOverscrollTest:: 4196 void RenderWidgetHostViewAuraOverscrollTest::
3874 ScrollEventsOverscrollWithZeroFling() { 4197 ScrollEventsOverscrollWithZeroFling() {
3875 SetUpOverscrollEnvironment(); 4198 SetUpOverscrollEnvironment();
3876 4199
3877 // Send a wheel event. ACK the event as not processed. This should not 4200 // Send a wheel event. ACK the event as not processed. This should not
3878 // initiate an overscroll gesture since it doesn't cross the threshold yet. 4201 // initiate an overscroll gesture since it doesn't cross the threshold yet.
3879 SimulateWheelEvent(10, 0, 0, true); 4202 if (!wheel_scroll_latching_enabled_) {
4203 SimulateWheelEvent(10, 0, 0, true);
4204 } else {
4205 SimulateWheelEventWithPhase(10, 0, 0, true,
4206 WebMouseWheelEvent::kPhaseBegan);
4207 }
3880 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4208 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3881 SendInputEventACK(WebInputEvent::kMouseWheel, 4209 SendInputEventACK(WebInputEvent::kMouseWheel,
3882 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4210 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3883 ExpectGestureScrollEventsAfterMouseWheelACK(true, false); 4211 ExpectGestureScrollEventsAfterMouseWheelACK(true, false);
3884 4212
3885 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4213 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3886 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4214 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3887 ExpectGestureScrollEndForWheelScrolling(false); 4215 ExpectGestureScrollEndForWheelScrolling(false);
3888 4216
3889 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4217 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3890 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4218 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3891 4219
3892 // Scroll some more so as to not overscroll. 4220 // Scroll some more so as to not overscroll.
3893 SimulateWheelEvent(20, 0, 0, true); 4221 if (!wheel_scroll_latching_enabled_) {
4222 SimulateWheelEvent(20, 0, 0, true);
4223 } else {
4224 SimulateWheelEventWithPhase(20, 0, 0, true,
4225 WebMouseWheelEvent::kPhaseChanged);
4226 }
3894 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4227 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3895 SendInputEventACK(WebInputEvent::kMouseWheel, 4228 SendInputEventACK(WebInputEvent::kMouseWheel,
3896 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4229 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3897 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4230 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3898 4231
3899 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4232 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3900 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4233 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3901 ExpectGestureScrollEndForWheelScrolling(false); 4234 ExpectGestureScrollEndForWheelScrolling(false);
3902 4235
3903 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4236 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3904 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 4237 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3905 4238
3906 // Scroll some more to initiate an overscroll. 4239 // Scroll some more to initiate an overscroll.
3907 SimulateWheelEvent(30, 0, 0, true); 4240 if (!wheel_scroll_latching_enabled_) {
4241 SimulateWheelEvent(30, 0, 0, true);
4242 } else {
4243 SimulateWheelEventWithPhase(30, 0, 0, true,
4244 WebMouseWheelEvent::kPhaseChanged);
4245 }
3908 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4246 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3909 SendInputEventACK(WebInputEvent::kMouseWheel, 4247 SendInputEventACK(WebInputEvent::kMouseWheel,
3910 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4248 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3911 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4249 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
3912 4250
3913 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4251 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
3914 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4252 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3915 ExpectGestureScrollEndForWheelScrolling(false); 4253 ExpectGestureScrollEndForWheelScrolling(false);
3916 4254
3917 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 4255 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
3918 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 4256 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
3919 4257
3920 EXPECT_EQ(60.f, overscroll_delta_x()); 4258 EXPECT_EQ(60.f, overscroll_delta_x());
3921 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); 4259 EXPECT_EQ(10.f, overscroll_delegate()->delta_x());
3922 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 4260 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3923 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 4261 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
3924 4262
3925 // Send a fling start, but with a small velocity, so that the overscroll is 4263 // Send a fling start, but with a small velocity, so that the overscroll is
3926 // aborted. The fling should proceed to the renderer, through the gesture 4264 // aborted. The fling should proceed to the renderer, through the gesture
3927 // event filter. 4265 // event filter.
3928 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin, 4266 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
3929 blink::kWebGestureDeviceTouchscreen); 4267 blink::kWebGestureDeviceTouchscreen);
3930 SimulateGestureFlingStartEvent(10.f, 0.f, blink::kWebGestureDeviceTouchpad); 4268 SimulateGestureFlingStartEvent(10.f, 0.f, blink::kWebGestureDeviceTouchpad);
3931 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4269 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3932 4270
3933 if (!wheel_scroll_latching_enabled_) {
3934 // ScrollBegin and FlingStart will be queued events. 4271 // ScrollBegin and FlingStart will be queued events.
3935 EXPECT_EQ(2U, sink_->message_count()); 4272 EXPECT_EQ(2U, sink_->message_count());
3936 } else {
3937 // ScrollEnd, ScrollBegin, and FlingStart will be queued events.
3938 EXPECT_EQ(3U, sink_->message_count());
3939 }
3940 } 4273 }
3941 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 4274 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
3942 ScrollEventsOverscrollWithZeroFling) { 4275 ScrollEventsOverscrollWithZeroFling) {
3943 ScrollEventsOverscrollWithZeroFling(); 4276 ScrollEventsOverscrollWithZeroFling();
3944 } 4277 }
3945 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 4278 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
3946 ScrollEventsOverscrollWithZeroFling) { 4279 ScrollEventsOverscrollWithZeroFling) {
3947 ScrollEventsOverscrollWithZeroFling(); 4280 ScrollEventsOverscrollWithZeroFling();
3948 } 4281 }
3949 4282
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
4390 SimulateGestureScrollUpdateEvent(-20, 0, 0); 4723 SimulateGestureScrollUpdateEvent(-20, 0, 0);
4391 EXPECT_EQ(1U, sink_->message_count()); 4724 EXPECT_EQ(1U, sink_->message_count());
4392 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4725 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4393 } 4726 }
4394 4727
4395 void RenderWidgetHostViewAuraOverscrollTest:: 4728 void RenderWidgetHostViewAuraOverscrollTest::
4396 OverscrollDirectionChangeMouseWheel() { 4729 OverscrollDirectionChangeMouseWheel() {
4397 SetUpOverscrollEnvironment(); 4730 SetUpOverscrollEnvironment();
4398 4731
4399 // Send wheel event and receive ack as not consumed. 4732 // Send wheel event and receive ack as not consumed.
4400 SimulateWheelEvent(125, -5, 0, true); 4733 if (!wheel_scroll_latching_enabled_) {
4734 SimulateWheelEvent(125, -5, 0, true);
4735 } else {
4736 SimulateWheelEventWithPhase(125, -5, 0, true,
4737 WebMouseWheelEvent::kPhaseBegan);
4738 }
4401 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4739 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4402 SendInputEventACK(WebInputEvent::kMouseWheel, 4740 SendInputEventACK(WebInputEvent::kMouseWheel,
4403 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4741 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4404 ExpectGestureScrollEventsAfterMouseWheelACK(true, false); 4742 ExpectGestureScrollEventsAfterMouseWheelACK(true, false);
4405 4743
4406 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4744 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4407 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4745 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4408 ExpectGestureScrollEndForWheelScrolling(false); 4746 ExpectGestureScrollEndForWheelScrolling(false);
4409 4747
4410 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 4748 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
4411 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 4749 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
4412 4750
4413 // Send another wheel event, but in the reverse direction. The overscroll 4751 // Send another wheel event, but in the reverse direction. The overscroll
4414 // controller will not consume the event, because it is not triggering 4752 // controller will not consume the event, because it is not triggering
4415 // gesture-nav. 4753 // gesture-nav.
4416 4754
4417 SimulateWheelEvent(-260, 0, 0, true); 4755 if (!wheel_scroll_latching_enabled_) {
4756 SimulateWheelEvent(-260, 0, 0, true);
4757 } else {
4758 SimulateWheelEventWithPhase(-260, 0, 0, true,
4759 WebMouseWheelEvent::kPhaseChanged);
4760 }
4418 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4761 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4419 SendInputEventACK(WebInputEvent::kMouseWheel, 4762 SendInputEventACK(WebInputEvent::kMouseWheel,
4420 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4763 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4421 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4764 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
4422 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4765 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4423 4766
4424 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4767 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4425 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4768 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4426 ExpectGestureScrollEndForWheelScrolling(false); 4769 ExpectGestureScrollEndForWheelScrolling(false);
4427 4770
4428 // Since it was unhandled; the overscroll should now be west 4771 // Since it was unhandled; the overscroll should now be west
4429 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4772 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4430 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4773 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4431 4774
4432 SimulateWheelEvent(-20, 0, 0, true); 4775 if (!wheel_scroll_latching_enabled_) {
4776 SimulateWheelEvent(-20, 0, 0, true);
4777 } else {
4778 SimulateWheelEventWithPhase(-20, 0, 0, true,
4779 WebMouseWheelEvent::kPhaseChanged);
tdresser 2017/05/19 16:17:33 Is it worth using the same trick here of adding a
sahel 2017/05/19 17:39:16 Done.
4780 }
4433 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4781 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4434 SendInputEventACK(WebInputEvent::kMouseWheel, 4782 SendInputEventACK(WebInputEvent::kMouseWheel,
4435 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4783 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4436 4784
4437 // wheel event ack generates gesture scroll update; which gets consumed 4785 // wheel event ack generates gesture scroll update; which gets consumed
4438 // solely by the overflow controller. 4786 // solely by the overflow controller.
4439 if (!wheel_scroll_latching_enabled_) { 4787 if (!wheel_scroll_latching_enabled_) {
4440 // No ScrollUpdates, only ScrollBegin and ScrollEnd will be queued events. 4788 // No ScrollUpdates, only ScrollBegin and ScrollEnd will be queued events.
4441 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 4789 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
4442 } else { 4790 } else {
4443 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 4791 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
4444 } 4792 }
4445 4793
4446 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 4794 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4447 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 4795 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4448 } 4796 }
4449 TEST_F(RenderWidgetHostViewAuraOverscrollTest, 4797 TEST_F(RenderWidgetHostViewAuraOverscrollTest,
4450 OverscrollDirectionChangeMouseWheel) { 4798 OverscrollDirectionChangeMouseWheel) {
4451 OverscrollDirectionChangeMouseWheel(); 4799 OverscrollDirectionChangeMouseWheel();
4452 } 4800 }
4453 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest, 4801 TEST_F(RenderWidgetHostViewAuraOverscrollWithoutWheelScrollLatchingTest,
4454 OverscrollDirectionChangeMouseWheel) { 4802 OverscrollDirectionChangeMouseWheel) {
4455 OverscrollDirectionChangeMouseWheel(); 4803 OverscrollDirectionChangeMouseWheel();
4456 } 4804 }
4457 4805
4458 void RenderWidgetHostViewAuraOverscrollTest::OverscrollMouseMoveCompletion() { 4806 void RenderWidgetHostViewAuraOverscrollTest::OverscrollMouseMoveCompletion() {
4459 SetUpOverscrollEnvironment(); 4807 SetUpOverscrollEnvironment();
4460 4808
4461 SimulateWheelEvent(5, 0, 0, true); // sent directly 4809 if (!wheel_scroll_latching_enabled_) {
4462 SimulateWheelEvent(-1, 0, 0, true); // enqueued 4810 SimulateWheelEvent(5, 0, 0, true); // sent directly
4463 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event 4811 SimulateWheelEvent(-1, 0, 0, true); // enqueued
4464 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event 4812 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event
4465 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event 4813 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event
4814 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event
4815 } else {
4816 SimulateWheelEventWithPhase(
4817 5, 0, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
4818 SimulateWheelEventWithPhase(-1, 0, 0, true,
4819 WebMouseWheelEvent::kPhaseChanged); // enqueued
4820 SimulateWheelEventWithPhase(
4821 -10, -3, 0, true,
4822 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4823 SimulateWheelEventWithPhase(
4824 -15, -1, 0, true,
4825 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4826 SimulateWheelEventWithPhase(
4827 -30, -3, 0, true,
4828 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4829 }
4466 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4830 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4467 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4831 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4468 4832
4469 // Receive ACK the first wheel event as not processed. 4833 // Receive ACK the first wheel event as not processed.
4470 SendInputEventACK(WebInputEvent::kMouseWheel, 4834 SendInputEventACK(WebInputEvent::kMouseWheel,
4471 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4835 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4472 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 4836 ExpectGestureScrollEventsAfterMouseWheelACK(true, true);
4473 4837
4474 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4838 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4475 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4839 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
4549 OverscrollMouseMoveCompletion) { 4913 OverscrollMouseMoveCompletion) {
4550 OverscrollMouseMoveCompletion(); 4914 OverscrollMouseMoveCompletion();
4551 } 4915 }
4552 4916
4553 // Tests that if a page scrolled, then the overscroll controller's states are 4917 // Tests that if a page scrolled, then the overscroll controller's states are
4554 // reset after the end of the scroll. 4918 // reset after the end of the scroll.
4555 void RenderWidgetHostViewAuraOverscrollTest:: 4919 void RenderWidgetHostViewAuraOverscrollTest::
4556 OverscrollStateResetsAfterScroll() { 4920 OverscrollStateResetsAfterScroll() {
4557 SetUpOverscrollEnvironment(); 4921 SetUpOverscrollEnvironment();
4558 4922
4559 SimulateWheelEvent(0, 5, 0, true); // sent directly 4923 if (!wheel_scroll_latching_enabled_) {
4560 SimulateWheelEvent(0, 30, 0, true); // enqueued 4924 SimulateWheelEvent(0, 5, 0, true); // sent directly
4561 SimulateWheelEvent(0, 40, 0, true); // coalesced into previous event 4925 SimulateWheelEvent(0, 30, 0, true); // enqueued
4562 SimulateWheelEvent(0, 10, 0, true); // coalesced into previous event 4926 SimulateWheelEvent(0, 40, 0, true); // coalesced into previous event
4927 SimulateWheelEvent(0, 10, 0, true); // coalesced into previous event
4928 } else {
4929 SimulateWheelEventWithPhase(
4930 0, 5, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
4931 SimulateWheelEventWithPhase(0, 30, 0, true,
4932 WebMouseWheelEvent::kPhaseChanged); // enqueued
4933 SimulateWheelEventWithPhase(
4934 0, 40, 0, true,
4935 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4936 SimulateWheelEventWithPhase(
4937 0, 10, 0, true,
4938 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
4939 }
4563 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 4940 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
4564 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 4941 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4565 4942
4566 // The first wheel event is consumed. Dispatches the queued wheel event. 4943 // The first wheel event is consumed. Dispatches the queued wheel event.
4567 SendInputEventACK(WebInputEvent::kMouseWheel, 4944 SendInputEventACK(WebInputEvent::kMouseWheel,
4568 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4945 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4569 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 4946 ExpectGestureScrollEventsAfterMouseWheelACK(true, true);
4570 4947
4571 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4948 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4572 INPUT_EVENT_ACK_STATE_CONSUMED); 4949 INPUT_EVENT_ACK_STATE_CONSUMED);
4573 ExpectGestureScrollEndForWheelScrolling(false); 4950 ExpectGestureScrollEndForWheelScrolling(false);
4574 EXPECT_TRUE(ScrollStateIsContentScrolling()); 4951 EXPECT_TRUE(ScrollStateIsContentScrolling());
4575 4952
4576 // The second wheel event is consumed. 4953 // The second wheel event is consumed.
4577 SendInputEventACK(WebInputEvent::kMouseWheel, 4954 SendInputEventACK(WebInputEvent::kMouseWheel,
4578 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 4955 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4579 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 4956 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
4580 4957
4581 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 4958 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4582 INPUT_EVENT_ACK_STATE_CONSUMED); 4959 INPUT_EVENT_ACK_STATE_CONSUMED);
4960
4961 if (wheel_scroll_latching_enabled_) {
4962 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
4963 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4964 SendInputEventACK(WebInputEvent::kMouseWheel,
4965 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4966 }
4583 ExpectGestureScrollEndForWheelScrolling(true); 4967 ExpectGestureScrollEndForWheelScrolling(true);
4584 EXPECT_TRUE(ScrollStateIsContentScrolling()); 4968 EXPECT_TRUE(ScrollStateIsContentScrolling());
4585 4969
4586 // Touchpad scroll can end with a zero-velocity fling. But it is not 4970 // Touchpad scroll can end with a zero-velocity fling. But it is not
4587 // dispatched, but it should still reset the overscroll controller state. 4971 // dispatched, but it should still reset the overscroll controller state.
4588 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin, 4972 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
4589 blink::kWebGestureDeviceTouchscreen); 4973 blink::kWebGestureDeviceTouchscreen);
4590 SimulateGestureFlingStartEvent(0.f, 0.f, blink::kWebGestureDeviceTouchpad); 4974 SimulateGestureFlingStartEvent(0.f, 0.f, blink::kWebGestureDeviceTouchpad);
4591 EXPECT_TRUE(ScrollStateIsUnknown()); 4975 EXPECT_TRUE(ScrollStateIsUnknown());
4592 // ScrollBegin will be queued events. 4976 // ScrollBegin will be queued events.
4593 EXPECT_EQ(1U, sink_->message_count()); 4977 EXPECT_EQ(1U, sink_->message_count());
4594 4978
4595 // Dropped flings should neither propagate *nor* indicate that they were 4979 // Dropped flings should neither propagate *nor* indicate that they were
4596 // consumed and have triggered a fling animation (as tracked by the router). 4980 // consumed and have triggered a fling animation (as tracked by the router).
4597 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents()); 4981 EXPECT_FALSE(parent_host_->input_router()->HasPendingEvents());
4598 4982
4599 SimulateGestureEvent(WebInputEvent::kGestureScrollEnd, 4983 SimulateGestureEvent(WebInputEvent::kGestureScrollEnd,
4600 blink::kWebGestureDeviceTouchscreen); 4984 blink::kWebGestureDeviceTouchscreen);
4601 // ScrollBegin, and ScrollEnd will be queued events. 4985 // ScrollBegin, and ScrollEnd will be queued events.
4602 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 4986 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
4603 4987
4604 SimulateWheelEvent(-5, 0, 0, true); // sent directly 4988 if (!wheel_scroll_latching_enabled_) {
4605 SimulateWheelEvent(-60, 0, 0, true); // enqueued 4989 SimulateWheelEvent(-5, 0, 0, true); // sent directly
4606 SimulateWheelEvent(-100, 0, 0, true); // coalesced into previous event 4990 SimulateWheelEvent(-60, 0, 0, true); // enqueued
4991 SimulateWheelEvent(-100, 0, 0, true); // coalesced into previous event
4992 } else {
4993 SimulateWheelEventWithPhase(
4994 -5, 0, 0, true, WebMouseWheelEvent::kPhaseBegan); // sent directly
4995 SimulateWheelEventWithPhase(-60, 0, 0, true,
4996 WebMouseWheelEvent::kPhaseChanged); // enqueued
4997 SimulateWheelEventWithPhase(
4998 -100, 0, 0, true,
4999 WebMouseWheelEvent::kPhaseChanged); // coalesced into previous event
5000 }
4607 EXPECT_TRUE(ScrollStateIsUnknown()); 5001 EXPECT_TRUE(ScrollStateIsUnknown());
4608 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 5002 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
4609 5003
4610 // The first wheel scroll did not scroll content. Overscroll should not start 5004 // The first wheel scroll did not scroll content. Overscroll should not start
4611 // yet, since enough hasn't been scrolled. 5005 // yet, since enough hasn't been scrolled.
4612 SendInputEventACK(WebInputEvent::kMouseWheel, 5006 SendInputEventACK(WebInputEvent::kMouseWheel,
4613 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5007 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4614 ExpectGestureScrollEventsAfterMouseWheelACK(true, true); 5008 ExpectGestureScrollEventsAfterMouseWheelACK(true, true);
4615 5009
4616 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5010 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4617 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5011 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4618 ExpectGestureScrollEndForWheelScrolling(false); 5012 ExpectGestureScrollEndForWheelScrolling(false);
4619 EXPECT_TRUE(ScrollStateIsUnknown()); 5013 EXPECT_TRUE(ScrollStateIsUnknown());
4620 5014
4621 SendInputEventACK(WebInputEvent::kMouseWheel, 5015 SendInputEventACK(WebInputEvent::kMouseWheel,
4622 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5016 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
4623 ExpectGestureScrollEventsAfterMouseWheelACK(false, false); 5017 ExpectGestureScrollEventsAfterMouseWheelACK(false, false);
4624 5018
4625 SendInputEventACK(WebInputEvent::kGestureScrollUpdate, 5019 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
4626 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 5020 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5021
5022 if (wheel_scroll_latching_enabled_) {
5023 SimulateWheelEventWithPhase(0, 0, 0, true, WebMouseWheelEvent::kPhaseEnded);
5024 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
5025 SendInputEventACK(WebInputEvent::kMouseWheel,
5026 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
5027 }
5028
4627 ExpectGestureScrollEndForWheelScrolling(true); 5029 ExpectGestureScrollEndForWheelScrolling(true);
4628 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); 5030 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode());
4629 EXPECT_TRUE(ScrollStateIsOverscrolling()); 5031 EXPECT_TRUE(ScrollStateIsOverscrolling());
4630 5032
4631 // The GestureScrollBegin will reset the delegate's mode, so check it here. 5033 // The GestureScrollBegin will reset the delegate's mode, so check it here.
4632 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); 5034 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode());
4633 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin, 5035 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
4634 blink::kWebGestureDeviceTouchscreen); 5036 blink::kWebGestureDeviceTouchscreen);
4635 SimulateGestureFlingStartEvent(0.f, 0.f, blink::kWebGestureDeviceTouchpad); 5037 SimulateGestureFlingStartEvent(0.f, 0.f, blink::kWebGestureDeviceTouchpad);
4636 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 5038 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after
5547 // There is no composition in the beginning. 5949 // There is no composition in the beginning.
5548 EXPECT_FALSE(has_composition_text()); 5950 EXPECT_FALSE(has_composition_text());
5549 SetHasCompositionTextToTrue(); 5951 SetHasCompositionTextToTrue();
5550 view->ImeCancelComposition(); 5952 view->ImeCancelComposition();
5551 // The composition must have been canceled. 5953 // The composition must have been canceled.
5552 EXPECT_FALSE(has_composition_text()); 5954 EXPECT_FALSE(has_composition_text());
5553 } 5955 }
5554 } 5956 }
5555 5957
5556 } // namespace content 5958 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698