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 "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 "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/memory/shared_memory.h" | 9 #include "base/memory/shared_memory.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 } | 469 } |
470 | 470 |
471 void SimulateGestureEventCoreWithLatencyInfo( | 471 void SimulateGestureEventCoreWithLatencyInfo( |
472 const WebGestureEvent& gesture_event, | 472 const WebGestureEvent& gesture_event, |
473 const ui::LatencyInfo& ui_latency) { | 473 const ui::LatencyInfo& ui_latency) { |
474 widget_host_->ForwardGestureEventWithLatencyInfo(gesture_event, ui_latency); | 474 widget_host_->ForwardGestureEventWithLatencyInfo(gesture_event, ui_latency); |
475 } | 475 } |
476 | 476 |
477 // Inject simple synthetic WebGestureEvent instances. | 477 // Inject simple synthetic WebGestureEvent instances. |
478 void SimulateGestureEvent(WebInputEvent::Type type, | 478 void SimulateGestureEvent(WebInputEvent::Type type, |
479 WebGestureEvent::SourceDevice sourceDevice) { | 479 blink::WebGestureDevice sourceDevice) { |
480 SimulateGestureEventCore( | 480 SimulateGestureEventCore( |
481 SyntheticWebGestureEventBuilder::Build(type, sourceDevice)); | 481 SyntheticWebGestureEventBuilder::Build(type, sourceDevice)); |
482 } | 482 } |
483 | 483 |
484 void SimulateGestureEventWithLatencyInfo( | 484 void SimulateGestureEventWithLatencyInfo(WebInputEvent::Type type, |
485 WebInputEvent::Type type, | 485 blink::WebGestureDevice sourceDevice, |
486 WebGestureEvent::SourceDevice sourceDevice, | 486 const ui::LatencyInfo& ui_latency) { |
487 const ui::LatencyInfo& ui_latency) { | |
488 SimulateGestureEventCoreWithLatencyInfo( | 487 SimulateGestureEventCoreWithLatencyInfo( |
489 SyntheticWebGestureEventBuilder::Build(type, sourceDevice), ui_latency); | 488 SyntheticWebGestureEventBuilder::Build(type, sourceDevice), ui_latency); |
490 } | 489 } |
491 | 490 |
492 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) { | 491 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) { |
493 SimulateGestureEventCore( | 492 SimulateGestureEventCore( |
494 SyntheticWebGestureEventBuilder::BuildScrollUpdate(dX, dY, modifiers)); | 493 SyntheticWebGestureEventBuilder::BuildScrollUpdate(dX, dY, modifiers)); |
495 } | 494 } |
496 | 495 |
497 void SimulateGesturePinchUpdateEvent(float scale, | 496 void SimulateGesturePinchUpdateEvent(float scale, |
498 float anchorX, | 497 float anchorX, |
499 float anchorY, | 498 float anchorY, |
500 int modifiers) { | 499 int modifiers) { |
501 SimulateGestureEventCore(SyntheticWebGestureEventBuilder::BuildPinchUpdate( | 500 SimulateGestureEventCore(SyntheticWebGestureEventBuilder::BuildPinchUpdate( |
502 scale, anchorX, anchorY, modifiers, WebGestureEvent::Touchscreen)); | 501 scale, |
| 502 anchorX, |
| 503 anchorY, |
| 504 modifiers, |
| 505 blink::WebGestureDeviceTouchscreen)); |
503 } | 506 } |
504 | 507 |
505 // Inject synthetic GestureFlingStart events. | 508 // Inject synthetic GestureFlingStart events. |
506 void SimulateGestureFlingStartEvent( | 509 void SimulateGestureFlingStartEvent(float velocityX, |
507 float velocityX, | 510 float velocityY, |
508 float velocityY, | 511 blink::WebGestureDevice sourceDevice) { |
509 WebGestureEvent::SourceDevice sourceDevice) { | |
510 SimulateGestureEventCore(SyntheticWebGestureEventBuilder::BuildFling( | 512 SimulateGestureEventCore(SyntheticWebGestureEventBuilder::BuildFling( |
511 velocityX, velocityY, sourceDevice)); | 513 velocityX, velocityY, sourceDevice)); |
512 } | 514 } |
513 | 515 |
514 void SendInputEventACK(WebInputEvent::Type type, | 516 void SendInputEventACK(WebInputEvent::Type type, |
515 InputEventAckState ack_result) { | 517 InputEventAckState ack_result) { |
516 InputHostMsg_HandleInputEvent_ACK_Params ack; | 518 InputHostMsg_HandleInputEvent_ACK_Params ack; |
517 ack.type = type; | 519 ack.type = type; |
518 ack.state = ack_result; | 520 ack.state = ack_result; |
519 InputHostMsg_HandleInputEvent_ACK response(0, ack); | 521 InputHostMsg_HandleInputEvent_ACK response(0, ack); |
(...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1874 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1876 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1875 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 1877 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
1876 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1878 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
1877 | 1879 |
1878 SendInputEventACK(WebInputEvent::MouseWheel, | 1880 SendInputEventACK(WebInputEvent::MouseWheel, |
1879 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1881 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1880 EXPECT_EQ(0U, sink_->message_count()); | 1882 EXPECT_EQ(0U, sink_->message_count()); |
1881 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 1883 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
1882 | 1884 |
1883 // Indicate the end of the scrolling from the touchpad. | 1885 // Indicate the end of the scrolling from the touchpad. |
1884 SimulateGestureFlingStartEvent(-1200.f, 0.f, WebGestureEvent::Touchpad); | 1886 SimulateGestureFlingStartEvent(-1200.f, 0.f, blink::WebGestureDeviceTouchpad); |
1885 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1887 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
1886 | 1888 |
1887 // Start another scroll. This time, do not consume any scroll events. | 1889 // Start another scroll. This time, do not consume any scroll events. |
1888 SimulateWheelEvent(0, -5, 0, true); // sent directly | 1890 SimulateWheelEvent(0, -5, 0, true); // sent directly |
1889 SimulateWheelEvent(0, -1, 0, true); // enqueued | 1891 SimulateWheelEvent(0, -1, 0, true); // enqueued |
1890 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event | 1892 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event |
1891 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event | 1893 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event |
1892 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event | 1894 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event |
1893 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers | 1895 SimulateWheelEvent(-20, 6, 1, true); // enqueued, different modifiers |
1894 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 1896 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1994 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 1996 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
1995 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 1997 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
1996 EXPECT_EQ(60.f, overscroll_delta_x()); | 1998 EXPECT_EQ(60.f, overscroll_delta_x()); |
1997 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); | 1999 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); |
1998 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); | 2000 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); |
1999 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2001 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2000 | 2002 |
2001 // Send a fling start, but with a small velocity, so that the overscroll is | 2003 // Send a fling start, but with a small velocity, so that the overscroll is |
2002 // aborted. The fling should proceed to the renderer, through the gesture | 2004 // aborted. The fling should proceed to the renderer, through the gesture |
2003 // event filter. | 2005 // event filter. |
2004 SimulateGestureFlingStartEvent(0.f, 0.1f, WebGestureEvent::Touchpad); | 2006 SimulateGestureFlingStartEvent(0.f, 0.1f, blink::WebGestureDeviceTouchpad); |
2005 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2007 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2006 EXPECT_EQ(1U, sink_->message_count()); | 2008 EXPECT_EQ(1U, sink_->message_count()); |
2007 } | 2009 } |
2008 | 2010 |
2009 // Same as ScrollEventsOverscrollWithFling, but with zero velocity. Checks that | 2011 // Same as ScrollEventsOverscrollWithFling, but with zero velocity. Checks that |
2010 // the zero-velocity fling does not reach the renderer. | 2012 // the zero-velocity fling does not reach the renderer. |
2011 TEST_F(RenderWidgetHostViewAuraOverscrollTest, | 2013 TEST_F(RenderWidgetHostViewAuraOverscrollTest, |
2012 ScrollEventsOverscrollWithZeroFling) { | 2014 ScrollEventsOverscrollWithZeroFling) { |
2013 SetUpOverscrollEnvironment(); | 2015 SetUpOverscrollEnvironment(); |
2014 | 2016 |
(...skipping 21 matching lines...) Expand all Loading... |
2036 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2038 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
2037 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 2039 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
2038 EXPECT_EQ(60.f, overscroll_delta_x()); | 2040 EXPECT_EQ(60.f, overscroll_delta_x()); |
2039 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); | 2041 EXPECT_EQ(10.f, overscroll_delegate()->delta_x()); |
2040 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); | 2042 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); |
2041 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2043 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2042 | 2044 |
2043 // Send a fling start, but with a small velocity, so that the overscroll is | 2045 // Send a fling start, but with a small velocity, so that the overscroll is |
2044 // aborted. The fling should proceed to the renderer, through the gesture | 2046 // aborted. The fling should proceed to the renderer, through the gesture |
2045 // event filter. | 2047 // event filter. |
2046 SimulateGestureFlingStartEvent(10.f, 0.f, WebGestureEvent::Touchpad); | 2048 SimulateGestureFlingStartEvent(10.f, 0.f, blink::WebGestureDeviceTouchpad); |
2047 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2049 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2048 EXPECT_EQ(1U, sink_->message_count()); | 2050 EXPECT_EQ(1U, sink_->message_count()); |
2049 } | 2051 } |
2050 | 2052 |
2051 // Tests that a fling in the opposite direction of the overscroll cancels the | 2053 // Tests that a fling in the opposite direction of the overscroll cancels the |
2052 // overscroll nav instead of completing it. | 2054 // overscroll nav instead of completing it. |
2053 TEST_F(RenderWidgetHostViewAuraOverscrollTest, ReverseFlingCancelsOverscroll) { | 2055 TEST_F(RenderWidgetHostViewAuraOverscrollTest, ReverseFlingCancelsOverscroll) { |
2054 SetUpOverscrollEnvironment(); | 2056 SetUpOverscrollEnvironment(); |
2055 | 2057 |
2056 { | 2058 { |
2057 // Start and end a gesture in the same direction without processing the | 2059 // Start and end a gesture in the same direction without processing the |
2058 // gesture events in the renderer. This should initiate and complete an | 2060 // gesture events in the renderer. This should initiate and complete an |
2059 // overscroll navigation. | 2061 // overscroll navigation. |
2060 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2062 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2061 WebGestureEvent::Touchscreen); | 2063 blink::WebGestureDeviceTouchscreen); |
2062 SimulateGestureScrollUpdateEvent(300, -5, 0); | 2064 SimulateGestureScrollUpdateEvent(300, -5, 0); |
2063 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2065 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2064 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2066 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2065 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2067 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
2066 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 2068 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
2067 sink_->ClearMessages(); | 2069 sink_->ClearMessages(); |
2068 | 2070 |
2069 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 2071 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
2070 WebGestureEvent::Touchscreen); | 2072 blink::WebGestureDeviceTouchscreen); |
2071 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); | 2073 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); |
2072 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2074 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2073 EXPECT_EQ(1U, sink_->message_count()); | 2075 EXPECT_EQ(1U, sink_->message_count()); |
2074 } | 2076 } |
2075 | 2077 |
2076 { | 2078 { |
2077 // Start over, except instead of ending the gesture with ScrollEnd, end it | 2079 // Start over, except instead of ending the gesture with ScrollEnd, end it |
2078 // with a FlingStart, with velocity in the reverse direction. This should | 2080 // with a FlingStart, with velocity in the reverse direction. This should |
2079 // initiate an overscroll navigation, but it should be cancelled because of | 2081 // initiate an overscroll navigation, but it should be cancelled because of |
2080 // the fling in the opposite direction. | 2082 // the fling in the opposite direction. |
2081 overscroll_delegate()->Reset(); | 2083 overscroll_delegate()->Reset(); |
2082 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2084 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2083 WebGestureEvent::Touchscreen); | 2085 blink::WebGestureDeviceTouchscreen); |
2084 SimulateGestureScrollUpdateEvent(-300, -5, 0); | 2086 SimulateGestureScrollUpdateEvent(-300, -5, 0); |
2085 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2087 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2086 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2088 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2087 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); | 2089 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); |
2088 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); | 2090 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->current_mode()); |
2089 sink_->ClearMessages(); | 2091 sink_->ClearMessages(); |
2090 | 2092 |
2091 SimulateGestureFlingStartEvent(100, 0, WebGestureEvent::Touchscreen); | 2093 SimulateGestureFlingStartEvent(100, 0, blink::WebGestureDeviceTouchscreen); |
2092 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); | 2094 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); |
2093 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2095 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2094 EXPECT_EQ(1U, sink_->message_count()); | 2096 EXPECT_EQ(1U, sink_->message_count()); |
2095 } | 2097 } |
2096 } | 2098 } |
2097 | 2099 |
2098 // Tests that touch-scroll events are handled correctly by the overscroll | 2100 // Tests that touch-scroll events are handled correctly by the overscroll |
2099 // controller. This also tests that the overscroll controller and the | 2101 // controller. This also tests that the overscroll controller and the |
2100 // gesture-event filter play nice with each other. | 2102 // gesture-event filter play nice with each other. |
2101 TEST_F(RenderWidgetHostViewAuraOverscrollTest, GestureScrollOverscrolls) { | 2103 TEST_F(RenderWidgetHostViewAuraOverscrollTest, GestureScrollOverscrolls) { |
2102 SetUpOverscrollEnvironment(); | 2104 SetUpOverscrollEnvironment(); |
2103 | 2105 |
2104 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2106 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2105 WebGestureEvent::Touchscreen); | 2107 blink::WebGestureDeviceTouchscreen); |
2106 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2108 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2107 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2109 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2108 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2110 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2109 | 2111 |
2110 // Send another gesture event and ACK as not being processed. This should | 2112 // Send another gesture event and ACK as not being processed. This should |
2111 // initiate the navigation gesture. | 2113 // initiate the navigation gesture. |
2112 SimulateGestureScrollUpdateEvent(55, -5, 0); | 2114 SimulateGestureScrollUpdateEvent(55, -5, 0); |
2113 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2115 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2114 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2116 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2115 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2117 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
(...skipping 13 matching lines...) Expand all Loading... |
2129 EXPECT_EQ(65.f, overscroll_delta_x()); | 2131 EXPECT_EQ(65.f, overscroll_delta_x()); |
2130 EXPECT_EQ(-10.f, overscroll_delta_y()); | 2132 EXPECT_EQ(-10.f, overscroll_delta_y()); |
2131 EXPECT_EQ(15.f, overscroll_delegate()->delta_x()); | 2133 EXPECT_EQ(15.f, overscroll_delegate()->delta_x()); |
2132 EXPECT_EQ(-10.f, overscroll_delegate()->delta_y()); | 2134 EXPECT_EQ(-10.f, overscroll_delegate()->delta_y()); |
2133 EXPECT_EQ(0U, sink_->message_count()); | 2135 EXPECT_EQ(0U, sink_->message_count()); |
2134 | 2136 |
2135 // Now send a scroll end. This should cancel the overscroll gesture, and send | 2137 // Now send a scroll end. This should cancel the overscroll gesture, and send |
2136 // the event to the renderer. The gesture-event filter should receive this | 2138 // the event to the renderer. The gesture-event filter should receive this |
2137 // event. | 2139 // event. |
2138 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 2140 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
2139 WebGestureEvent::Touchscreen); | 2141 blink::WebGestureDeviceTouchscreen); |
2140 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2142 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2141 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2143 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2142 EXPECT_EQ(1U, sink_->message_count()); | 2144 EXPECT_EQ(1U, sink_->message_count()); |
2143 } | 2145 } |
2144 | 2146 |
2145 // Tests that if the page is scrolled because of a scroll-gesture, then that | 2147 // Tests that if the page is scrolled because of a scroll-gesture, then that |
2146 // particular scroll sequence never generates overscroll if the scroll direction | 2148 // particular scroll sequence never generates overscroll if the scroll direction |
2147 // is horizontal. | 2149 // is horizontal. |
2148 TEST_F(RenderWidgetHostViewAuraOverscrollTest, | 2150 TEST_F(RenderWidgetHostViewAuraOverscrollTest, |
2149 GestureScrollConsumedHorizontal) { | 2151 GestureScrollConsumedHorizontal) { |
2150 SetUpOverscrollEnvironment(); | 2152 SetUpOverscrollEnvironment(); |
2151 | 2153 |
2152 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2154 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2153 WebGestureEvent::Touchscreen); | 2155 blink::WebGestureDeviceTouchscreen); |
2154 SimulateGestureScrollUpdateEvent(10, 0, 0); | 2156 SimulateGestureScrollUpdateEvent(10, 0, 0); |
2155 | 2157 |
2156 // Start scrolling on content. ACK both events as being processed. | 2158 // Start scrolling on content. ACK both events as being processed. |
2157 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2159 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2158 INPUT_EVENT_ACK_STATE_CONSUMED); | 2160 INPUT_EVENT_ACK_STATE_CONSUMED); |
2159 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2161 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2160 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2162 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2161 sink_->ClearMessages(); | 2163 sink_->ClearMessages(); |
2162 | 2164 |
2163 // Send another gesture event and ACK as not being processed. This should | 2165 // Send another gesture event and ACK as not being processed. This should |
2164 // not initiate overscroll because the beginning of the scroll event did | 2166 // not initiate overscroll because the beginning of the scroll event did |
2165 // scroll some content on the page. Since there was no overscroll, the event | 2167 // scroll some content on the page. Since there was no overscroll, the event |
2166 // should reach the renderer. | 2168 // should reach the renderer. |
2167 SimulateGestureScrollUpdateEvent(55, 0, 0); | 2169 SimulateGestureScrollUpdateEvent(55, 0, 0); |
2168 EXPECT_EQ(1U, sink_->message_count()); | 2170 EXPECT_EQ(1U, sink_->message_count()); |
2169 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2171 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2170 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2172 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2171 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2173 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2172 } | 2174 } |
2173 | 2175 |
2174 // Tests that the overscroll controller plays nice with touch-scrolls and the | 2176 // Tests that the overscroll controller plays nice with touch-scrolls and the |
2175 // gesture event filter with debounce filtering turned on. | 2177 // gesture event filter with debounce filtering turned on. |
2176 TEST_F(RenderWidgetHostViewAuraOverscrollTest, | 2178 TEST_F(RenderWidgetHostViewAuraOverscrollTest, |
2177 GestureScrollDebounceOverscrolls) { | 2179 GestureScrollDebounceOverscrolls) { |
2178 SetUpOverscrollEnvironmentWithDebounce(100); | 2180 SetUpOverscrollEnvironmentWithDebounce(100); |
2179 | 2181 |
2180 // Start scrolling. Receive ACK as it being processed. | 2182 // Start scrolling. Receive ACK as it being processed. |
2181 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2183 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2182 WebGestureEvent::Touchscreen); | 2184 blink::WebGestureDeviceTouchscreen); |
2183 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2185 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2184 | 2186 |
2185 // Send update events. | 2187 // Send update events. |
2186 SimulateGestureScrollUpdateEvent(25, 0, 0); | 2188 SimulateGestureScrollUpdateEvent(25, 0, 0); |
2187 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2189 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2188 | 2190 |
2189 // Quickly end and restart the scroll gesture. These two events should get | 2191 // Quickly end and restart the scroll gesture. These two events should get |
2190 // discarded. | 2192 // discarded. |
2191 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 2193 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
2192 WebGestureEvent::Touchscreen); | 2194 blink::WebGestureDeviceTouchscreen); |
2193 EXPECT_EQ(0U, sink_->message_count()); | 2195 EXPECT_EQ(0U, sink_->message_count()); |
2194 | 2196 |
2195 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2197 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2196 WebGestureEvent::Touchscreen); | 2198 blink::WebGestureDeviceTouchscreen); |
2197 EXPECT_EQ(0U, sink_->message_count()); | 2199 EXPECT_EQ(0U, sink_->message_count()); |
2198 | 2200 |
2199 // Send another update event. This should get into the queue. | 2201 // Send another update event. This should get into the queue. |
2200 SimulateGestureScrollUpdateEvent(30, 0, 0); | 2202 SimulateGestureScrollUpdateEvent(30, 0, 0); |
2201 EXPECT_EQ(0U, sink_->message_count()); | 2203 EXPECT_EQ(0U, sink_->message_count()); |
2202 | 2204 |
2203 // Receive an ACK for the first scroll-update event as not being processed. | 2205 // Receive an ACK for the first scroll-update event as not being processed. |
2204 // This will contribute to the overscroll gesture, but not enough for the | 2206 // This will contribute to the overscroll gesture, but not enough for the |
2205 // overscroll controller to start consuming gesture events. This also cause | 2207 // overscroll controller to start consuming gesture events. This also cause |
2206 // the queued gesture event to be forwarded to the renderer. | 2208 // the queued gesture event to be forwarded to the renderer. |
(...skipping 22 matching lines...) Expand all Loading... |
2229 } | 2231 } |
2230 | 2232 |
2231 // Tests that the gesture debounce timer plays nice with the overscroll | 2233 // Tests that the gesture debounce timer plays nice with the overscroll |
2232 // controller. | 2234 // controller. |
2233 TEST_F(RenderWidgetHostViewAuraOverscrollTest, | 2235 TEST_F(RenderWidgetHostViewAuraOverscrollTest, |
2234 GestureScrollDebounceTimerOverscroll) { | 2236 GestureScrollDebounceTimerOverscroll) { |
2235 SetUpOverscrollEnvironmentWithDebounce(10); | 2237 SetUpOverscrollEnvironmentWithDebounce(10); |
2236 | 2238 |
2237 // Start scrolling. Receive ACK as it being processed. | 2239 // Start scrolling. Receive ACK as it being processed. |
2238 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2240 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2239 WebGestureEvent::Touchscreen); | 2241 blink::WebGestureDeviceTouchscreen); |
2240 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2242 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2241 | 2243 |
2242 // Send update events. | 2244 // Send update events. |
2243 SimulateGestureScrollUpdateEvent(55, 0, 0); | 2245 SimulateGestureScrollUpdateEvent(55, 0, 0); |
2244 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2246 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2245 | 2247 |
2246 // Send an end event. This should get in the debounce queue. | 2248 // Send an end event. This should get in the debounce queue. |
2247 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 2249 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
2248 WebGestureEvent::Touchscreen); | 2250 blink::WebGestureDeviceTouchscreen); |
2249 EXPECT_EQ(0U, sink_->message_count()); | 2251 EXPECT_EQ(0U, sink_->message_count()); |
2250 | 2252 |
2251 // Receive ACK for the scroll-update event. | 2253 // Receive ACK for the scroll-update event. |
2252 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2254 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2253 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2255 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2254 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2256 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
2255 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 2257 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
2256 EXPECT_EQ(55.f, overscroll_delta_x()); | 2258 EXPECT_EQ(55.f, overscroll_delta_x()); |
2257 EXPECT_EQ(5.f, overscroll_delegate()->delta_x()); | 2259 EXPECT_EQ(5.f, overscroll_delegate()->delta_x()); |
2258 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); | 2260 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); |
(...skipping 30 matching lines...) Expand all Loading... |
2289 | 2291 |
2290 MoveTouchPoint(0, 20, 5); | 2292 MoveTouchPoint(0, 20, 5); |
2291 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2293 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2292 SendInputEventACK(WebInputEvent::TouchMove, | 2294 SendInputEventACK(WebInputEvent::TouchMove, |
2293 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2295 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2294 | 2296 |
2295 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2297 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2296 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2298 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2297 | 2299 |
2298 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2300 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2299 WebGestureEvent::Touchscreen); | 2301 blink::WebGestureDeviceTouchscreen); |
2300 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2302 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2301 SimulateGestureScrollUpdateEvent(20, 0, 0); | 2303 SimulateGestureScrollUpdateEvent(20, 0, 0); |
2302 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2304 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2303 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2305 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2304 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2306 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2305 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2307 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2306 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2308 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2307 | 2309 |
2308 // Another touch move event should reach the renderer since overscroll hasn't | 2310 // Another touch move event should reach the renderer since overscroll hasn't |
2309 // started yet. Note that touch events sent during the scroll period may | 2311 // started yet. Note that touch events sent during the scroll period may |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2356 // The touch-end/cancel event should always reach the renderer if the page has | 2358 // The touch-end/cancel event should always reach the renderer if the page has |
2357 // touch handlers. | 2359 // touch handlers. |
2358 ReleaseTouchPoint(1); | 2360 ReleaseTouchPoint(1); |
2359 AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2361 AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2360 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2362 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2361 ReleaseTouchPoint(0); | 2363 ReleaseTouchPoint(0); |
2362 AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2364 AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2363 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2365 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2364 | 2366 |
2365 SimulateGestureEvent(blink::WebInputEvent::GestureScrollEnd, | 2367 SimulateGestureEvent(blink::WebInputEvent::GestureScrollEnd, |
2366 WebGestureEvent::Touchscreen); | 2368 blink::WebGestureDeviceTouchscreen); |
2367 base::MessageLoop::current()->PostDelayedTask( | 2369 base::MessageLoop::current()->PostDelayedTask( |
2368 FROM_HERE, | 2370 FROM_HERE, |
2369 base::MessageLoop::QuitClosure(), | 2371 base::MessageLoop::QuitClosure(), |
2370 base::TimeDelta::FromMilliseconds(10)); | 2372 base::TimeDelta::FromMilliseconds(10)); |
2371 base::MessageLoop::current()->Run(); | 2373 base::MessageLoop::current()->Run(); |
2372 EXPECT_EQ(1U, sink_->message_count()); | 2374 EXPECT_EQ(1U, sink_->message_count()); |
2373 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2375 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2374 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2376 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2375 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); | 2377 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); |
2376 } | 2378 } |
2377 | 2379 |
2378 // Tests that touch-gesture end is dispatched to the renderer at the end of a | 2380 // Tests that touch-gesture end is dispatched to the renderer at the end of a |
2379 // touch-gesture initiated overscroll. | 2381 // touch-gesture initiated overscroll. |
2380 TEST_F(RenderWidgetHostViewAuraOverscrollTest, | 2382 TEST_F(RenderWidgetHostViewAuraOverscrollTest, |
2381 TouchGestureEndDispatchedAfterOverscrollComplete) { | 2383 TouchGestureEndDispatchedAfterOverscrollComplete) { |
2382 SetUpOverscrollEnvironmentWithDebounce(10); | 2384 SetUpOverscrollEnvironmentWithDebounce(10); |
2383 widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, true)); | 2385 widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, true)); |
2384 sink_->ClearMessages(); | 2386 sink_->ClearMessages(); |
2385 | 2387 |
2386 // Start scrolling. Receive ACK as it being processed. | 2388 // Start scrolling. Receive ACK as it being processed. |
2387 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2389 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2388 WebGestureEvent::Touchscreen); | 2390 blink::WebGestureDeviceTouchscreen); |
2389 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2391 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2390 // The scroll begin event will have received a synthetic ack from the input | 2392 // The scroll begin event will have received a synthetic ack from the input |
2391 // router. | 2393 // router. |
2392 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2394 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2393 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2395 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2394 | 2396 |
2395 // Send update events. | 2397 // Send update events. |
2396 SimulateGestureScrollUpdateEvent(55, -5, 0); | 2398 SimulateGestureScrollUpdateEvent(55, -5, 0); |
2397 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2399 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2398 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2400 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2399 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2401 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2400 | 2402 |
2401 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2403 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2402 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2404 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2403 EXPECT_EQ(0U, sink_->message_count()); | 2405 EXPECT_EQ(0U, sink_->message_count()); |
2404 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2406 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
2405 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 2407 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
2406 EXPECT_EQ(55.f, overscroll_delta_x()); | 2408 EXPECT_EQ(55.f, overscroll_delta_x()); |
2407 EXPECT_EQ(5.f, overscroll_delegate()->delta_x()); | 2409 EXPECT_EQ(5.f, overscroll_delegate()->delta_x()); |
2408 EXPECT_EQ(-5.f, overscroll_delegate()->delta_y()); | 2410 EXPECT_EQ(-5.f, overscroll_delegate()->delta_y()); |
2409 | 2411 |
2410 // Send end event. | 2412 // Send end event. |
2411 SimulateGestureEvent(blink::WebInputEvent::GestureScrollEnd, | 2413 SimulateGestureEvent(blink::WebInputEvent::GestureScrollEnd, |
2412 WebGestureEvent::Touchscreen); | 2414 blink::WebGestureDeviceTouchscreen); |
2413 EXPECT_EQ(0U, sink_->message_count()); | 2415 EXPECT_EQ(0U, sink_->message_count()); |
2414 base::MessageLoop::current()->PostDelayedTask( | 2416 base::MessageLoop::current()->PostDelayedTask( |
2415 FROM_HERE, | 2417 FROM_HERE, |
2416 base::MessageLoop::QuitClosure(), | 2418 base::MessageLoop::QuitClosure(), |
2417 base::TimeDelta::FromMilliseconds(10)); | 2419 base::TimeDelta::FromMilliseconds(10)); |
2418 base::MessageLoop::current()->Run(); | 2420 base::MessageLoop::current()->Run(); |
2419 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2421 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2420 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2422 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2421 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); | 2423 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); |
2422 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2424 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2423 | 2425 |
2424 // Start scrolling. Receive ACK as it being processed. | 2426 // Start scrolling. Receive ACK as it being processed. |
2425 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2427 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2426 WebGestureEvent::Touchscreen); | 2428 blink::WebGestureDeviceTouchscreen); |
2427 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2429 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2428 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2430 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2429 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2431 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2430 | 2432 |
2431 // Send update events. | 2433 // Send update events. |
2432 SimulateGestureScrollUpdateEvent(235, -5, 0); | 2434 SimulateGestureScrollUpdateEvent(235, -5, 0); |
2433 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2435 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2434 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2436 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2435 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2437 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2436 | 2438 |
2437 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2439 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2438 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2440 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2439 EXPECT_EQ(0U, sink_->message_count()); | 2441 EXPECT_EQ(0U, sink_->message_count()); |
2440 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2442 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
2441 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 2443 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
2442 EXPECT_EQ(235.f, overscroll_delta_x()); | 2444 EXPECT_EQ(235.f, overscroll_delta_x()); |
2443 EXPECT_EQ(185.f, overscroll_delegate()->delta_x()); | 2445 EXPECT_EQ(185.f, overscroll_delegate()->delta_x()); |
2444 EXPECT_EQ(-5.f, overscroll_delegate()->delta_y()); | 2446 EXPECT_EQ(-5.f, overscroll_delegate()->delta_y()); |
2445 | 2447 |
2446 // Send end event. | 2448 // Send end event. |
2447 SimulateGestureEvent(blink::WebInputEvent::GestureScrollEnd, | 2449 SimulateGestureEvent(blink::WebInputEvent::GestureScrollEnd, |
2448 WebGestureEvent::Touchscreen); | 2450 blink::WebGestureDeviceTouchscreen); |
2449 EXPECT_EQ(0U, sink_->message_count()); | 2451 EXPECT_EQ(0U, sink_->message_count()); |
2450 base::MessageLoop::current()->PostDelayedTask( | 2452 base::MessageLoop::current()->PostDelayedTask( |
2451 FROM_HERE, | 2453 FROM_HERE, |
2452 base::MessageLoop::QuitClosure(), | 2454 base::MessageLoop::QuitClosure(), |
2453 base::TimeDelta::FromMilliseconds(10)); | 2455 base::TimeDelta::FromMilliseconds(10)); |
2454 base::MessageLoop::current()->Run(); | 2456 base::MessageLoop::current()->Run(); |
2455 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2457 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2456 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2458 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2457 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); | 2459 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); |
2458 EXPECT_EQ(1U, sink_->message_count()); | 2460 EXPECT_EQ(1U, sink_->message_count()); |
2459 } | 2461 } |
2460 | 2462 |
2461 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollDirectionChange) { | 2463 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollDirectionChange) { |
2462 SetUpOverscrollEnvironmentWithDebounce(100); | 2464 SetUpOverscrollEnvironmentWithDebounce(100); |
2463 | 2465 |
2464 // Start scrolling. Receive ACK as it being processed. | 2466 // Start scrolling. Receive ACK as it being processed. |
2465 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2467 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2466 WebGestureEvent::Touchscreen); | 2468 blink::WebGestureDeviceTouchscreen); |
2467 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2469 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2468 | 2470 |
2469 // Send update events and receive ack as not consumed. | 2471 // Send update events and receive ack as not consumed. |
2470 SimulateGestureScrollUpdateEvent(125, -5, 0); | 2472 SimulateGestureScrollUpdateEvent(125, -5, 0); |
2471 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2473 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2472 | 2474 |
2473 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2475 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2474 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2476 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2475 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2477 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
2476 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 2478 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2530 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2532 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2531 | 2533 |
2532 // Moving the mouse more should continue to send the events to the renderer. | 2534 // Moving the mouse more should continue to send the events to the renderer. |
2533 SimulateMouseMove(5, 10, 0); | 2535 SimulateMouseMove(5, 10, 0); |
2534 SendInputEventACK(WebInputEvent::MouseMove, | 2536 SendInputEventACK(WebInputEvent::MouseMove, |
2535 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2537 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2536 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2538 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2537 | 2539 |
2538 // Now try with gestures. | 2540 // Now try with gestures. |
2539 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2541 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2540 WebGestureEvent::Touchscreen); | 2542 blink::WebGestureDeviceTouchscreen); |
2541 SimulateGestureScrollUpdateEvent(300, -5, 0); | 2543 SimulateGestureScrollUpdateEvent(300, -5, 0); |
2542 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2544 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2543 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2545 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2544 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2546 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
2545 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 2547 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
2546 sink_->ClearMessages(); | 2548 sink_->ClearMessages(); |
2547 | 2549 |
2548 // Overscroll gesture is in progress. Send a mouse-move now. This should | 2550 // Overscroll gesture is in progress. Send a mouse-move now. This should |
2549 // complete the gesture (because the amount overscrolled is above the | 2551 // complete the gesture (because the amount overscrolled is above the |
2550 // threshold). | 2552 // threshold). |
2551 SimulateMouseMove(5, 10, 0); | 2553 SimulateMouseMove(5, 10, 0); |
2552 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); | 2554 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); |
2553 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2555 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2554 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2556 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2555 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2557 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2556 SendInputEventACK(WebInputEvent::MouseMove, | 2558 SendInputEventACK(WebInputEvent::MouseMove, |
2557 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2559 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2558 | 2560 |
2559 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 2561 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
2560 WebGestureEvent::Touchscreen); | 2562 blink::WebGestureDeviceTouchscreen); |
2561 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2563 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2562 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2564 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2563 | 2565 |
2564 // Move mouse some more. The mouse-move events should reach the renderer. | 2566 // Move mouse some more. The mouse-move events should reach the renderer. |
2565 SimulateMouseMove(5, 10, 0); | 2567 SimulateMouseMove(5, 10, 0); |
2566 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2568 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2567 | 2569 |
2568 SendInputEventACK(WebInputEvent::MouseMove, | 2570 SendInputEventACK(WebInputEvent::MouseMove, |
2569 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2571 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2570 } | 2572 } |
(...skipping 15 matching lines...) Expand all Loading... |
2586 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); | 2588 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); |
2587 EXPECT_TRUE(ScrollStateIsContentScrolling()); | 2589 EXPECT_TRUE(ScrollStateIsContentScrolling()); |
2588 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2590 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2589 | 2591 |
2590 // The second wheel event is consumed. | 2592 // The second wheel event is consumed. |
2591 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); | 2593 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); |
2592 EXPECT_TRUE(ScrollStateIsContentScrolling()); | 2594 EXPECT_TRUE(ScrollStateIsContentScrolling()); |
2593 | 2595 |
2594 // Touchpad scroll can end with a zero-velocity fling. But it is not | 2596 // Touchpad scroll can end with a zero-velocity fling. But it is not |
2595 // dispatched, but it should still reset the overscroll controller state. | 2597 // dispatched, but it should still reset the overscroll controller state. |
2596 SimulateGestureFlingStartEvent(0.f, 0.f, WebGestureEvent::Touchpad); | 2598 SimulateGestureFlingStartEvent(0.f, 0.f, blink::WebGestureDeviceTouchpad); |
2597 EXPECT_TRUE(ScrollStateIsUnknown()); | 2599 EXPECT_TRUE(ScrollStateIsUnknown()); |
2598 EXPECT_EQ(0U, sink_->message_count()); | 2600 EXPECT_EQ(0U, sink_->message_count()); |
2599 | 2601 |
2600 SimulateWheelEvent(-5, 0, 0, true); // sent directly | 2602 SimulateWheelEvent(-5, 0, 0, true); // sent directly |
2601 SimulateWheelEvent(-60, 0, 0, true); // enqueued | 2603 SimulateWheelEvent(-60, 0, 0, true); // enqueued |
2602 SimulateWheelEvent(-100, 0, 0, true); // coalesced into previous event | 2604 SimulateWheelEvent(-100, 0, 0, true); // coalesced into previous event |
2603 EXPECT_TRUE(ScrollStateIsUnknown()); | 2605 EXPECT_TRUE(ScrollStateIsUnknown()); |
2604 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2606 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2605 | 2607 |
2606 // The first wheel scroll did not scroll content. Overscroll should not start | 2608 // The first wheel scroll did not scroll content. Overscroll should not start |
2607 // yet, since enough hasn't been scrolled. | 2609 // yet, since enough hasn't been scrolled. |
2608 SendInputEventACK(WebInputEvent::MouseWheel, | 2610 SendInputEventACK(WebInputEvent::MouseWheel, |
2609 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2611 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2610 EXPECT_TRUE(ScrollStateIsUnknown()); | 2612 EXPECT_TRUE(ScrollStateIsUnknown()); |
2611 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2613 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2612 | 2614 |
2613 SendInputEventACK(WebInputEvent::MouseWheel, | 2615 SendInputEventACK(WebInputEvent::MouseWheel, |
2614 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2616 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2615 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); | 2617 EXPECT_EQ(OVERSCROLL_WEST, overscroll_mode()); |
2616 EXPECT_TRUE(ScrollStateIsOverscrolling()); | 2618 EXPECT_TRUE(ScrollStateIsOverscrolling()); |
2617 EXPECT_EQ(0U, sink_->message_count()); | 2619 EXPECT_EQ(0U, sink_->message_count()); |
2618 | 2620 |
2619 SimulateGestureFlingStartEvent(0.f, 0.f, WebGestureEvent::Touchpad); | 2621 SimulateGestureFlingStartEvent(0.f, 0.f, blink::WebGestureDeviceTouchpad); |
2620 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2622 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2621 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->completed_mode()); | 2623 EXPECT_EQ(OVERSCROLL_WEST, overscroll_delegate()->completed_mode()); |
2622 EXPECT_TRUE(ScrollStateIsUnknown()); | 2624 EXPECT_TRUE(ScrollStateIsUnknown()); |
2623 EXPECT_EQ(0U, sink_->message_count()); | 2625 EXPECT_EQ(0U, sink_->message_count()); |
2624 } | 2626 } |
2625 | 2627 |
2626 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollResetsOnBlur) { | 2628 TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollResetsOnBlur) { |
2627 SetUpOverscrollEnvironment(); | 2629 SetUpOverscrollEnvironment(); |
2628 | 2630 |
2629 // Start an overscroll with gesture scroll. In the middle of the scroll, blur | 2631 // Start an overscroll with gesture scroll. In the middle of the scroll, blur |
2630 // the host. | 2632 // the host. |
2631 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2633 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2632 WebGestureEvent::Touchscreen); | 2634 blink::WebGestureDeviceTouchscreen); |
2633 SimulateGestureScrollUpdateEvent(300, -5, 0); | 2635 SimulateGestureScrollUpdateEvent(300, -5, 0); |
2634 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2636 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2635 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2637 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2636 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2638 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
2637 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 2639 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
2638 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); | 2640 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); |
2639 | 2641 |
2640 view_->OnWindowFocused(NULL, view_->GetAttachedWindow()); | 2642 view_->OnWindowFocused(NULL, view_->GetAttachedWindow()); |
2641 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); | 2643 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); |
2642 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2644 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2643 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); | 2645 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); |
2644 EXPECT_EQ(0.f, overscroll_delegate()->delta_x()); | 2646 EXPECT_EQ(0.f, overscroll_delegate()->delta_x()); |
2645 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); | 2647 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); |
2646 sink_->ClearMessages(); | 2648 sink_->ClearMessages(); |
2647 | 2649 |
2648 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 2650 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
2649 WebGestureEvent::Touchscreen); | 2651 blink::WebGestureDeviceTouchscreen); |
2650 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 2652 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
2651 | 2653 |
2652 // Start a scroll gesture again. This should correctly start the overscroll | 2654 // Start a scroll gesture again. This should correctly start the overscroll |
2653 // after the threshold. | 2655 // after the threshold. |
2654 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 2656 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
2655 WebGestureEvent::Touchscreen); | 2657 blink::WebGestureDeviceTouchscreen); |
2656 SimulateGestureScrollUpdateEvent(300, -5, 0); | 2658 SimulateGestureScrollUpdateEvent(300, -5, 0); |
2657 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 2659 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
2658 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2660 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2659 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); | 2661 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); |
2660 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); | 2662 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); |
2661 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); | 2663 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); |
2662 | 2664 |
2663 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 2665 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
2664 WebGestureEvent::Touchscreen); | 2666 blink::WebGestureDeviceTouchscreen); |
2665 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); | 2667 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); |
2666 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); | 2668 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); |
2667 EXPECT_EQ(3U, sink_->message_count()); | 2669 EXPECT_EQ(3U, sink_->message_count()); |
2668 } | 2670 } |
2669 | 2671 |
2670 } // namespace content | 2672 } // namespace content |
OLD | NEW |