| Index: content/browser/renderer_host/render_widget_host_unittest.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc
|
| index 350168e282da5feae359a175399b747b0cce62f9..ccc0f3efdc7f022f6db2265435d0e5f53599abfd 100644
|
| --- a/content/browser/renderer_host/render_widget_host_unittest.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_unittest.cc
|
| @@ -11,6 +11,8 @@
|
| #include "content/browser/browser_thread_impl.h"
|
| #include "content/browser/renderer_host/input/gesture_event_queue.h"
|
| #include "content/browser/renderer_host/input/input_router_impl.h"
|
| +#include "content/browser/renderer_host/input/tap_suppression_controller.h"
|
| +#include "content/browser/renderer_host/input/tap_suppression_controller_client.h"
|
| #include "content/browser/renderer_host/input/touch_event_queue.h"
|
| #include "content/browser/renderer_host/overscroll_controller.h"
|
| #include "content/browser/renderer_host/overscroll_controller_delegate.h"
|
| @@ -197,6 +199,7 @@
|
| int routing_id)
|
| : RenderWidgetHostImpl(delegate, process, routing_id, false),
|
| unresponsive_timer_fired_(false) {
|
| + input_router_impl_ = static_cast<InputRouterImpl*>(input_router_.get());
|
| acked_touch_event_type_ = blink::WebInputEvent::Undefined;
|
| }
|
|
|
| @@ -247,10 +250,13 @@
|
| overscroll_controller_->set_delegate(overscroll_delegate_.get());
|
| }
|
|
|
| - void DisableGestureDebounce() { set_debounce_interval_time_ms(0); }
|
| + void DisableGestureDebounce() {
|
| + gesture_event_queue().set_debounce_enabled_for_testing(false);
|
| + }
|
|
|
| void set_debounce_interval_time_ms(int delay_ms) {
|
| - gesture_event_queue().set_debounce_interval_time_ms_for_testing(delay_ms);
|
| + gesture_event_queue().
|
| + set_debounce_interval_time_ms_for_testing(delay_ms);
|
| }
|
|
|
| bool TouchEventQueueEmpty() const {
|
| @@ -302,11 +308,12 @@
|
| }
|
|
|
| void SetupForInputRouterTest() {
|
| - input_router_.reset(new MockInputRouter(this));
|
| + mock_input_router_ = new MockInputRouter(this);
|
| + input_router_.reset(mock_input_router_);
|
| }
|
|
|
| MockInputRouter* mock_input_router() {
|
| - return static_cast<MockInputRouter*>(input_router_.get());
|
| + return mock_input_router_;
|
| }
|
|
|
| protected:
|
| @@ -315,28 +322,26 @@
|
| }
|
|
|
| const TouchEventQueue& touch_event_queue() const {
|
| - return input_router_impl()->touch_event_queue_;
|
| + return input_router_impl_->touch_event_queue_;
|
| }
|
|
|
| const GestureEventQueue& gesture_event_queue() const {
|
| - return input_router_impl()->gesture_event_queue_;
|
| + return input_router_impl_->gesture_event_queue_;
|
| }
|
|
|
| GestureEventQueue& gesture_event_queue() {
|
| - return input_router_impl()->gesture_event_queue_;
|
| + return input_router_impl_->gesture_event_queue_;
|
| }
|
|
|
| private:
|
| - const InputRouterImpl* input_router_impl() const {
|
| - return static_cast<InputRouterImpl*>(input_router_.get());
|
| - }
|
| -
|
| - InputRouterImpl* input_router_impl() {
|
| - return static_cast<InputRouterImpl*>(input_router_.get());
|
| - }
|
| -
|
| bool unresponsive_timer_fired_;
|
| WebInputEvent::Type acked_touch_event_type_;
|
| +
|
| + // |input_router_impl_| and |mock_input_router_| are owned by
|
| + // RenderWidgetHostImpl. The handles below are provided for convenience so
|
| + // that we don't have to reinterpret_cast it all the time.
|
| + InputRouterImpl* input_router_impl_;
|
| + MockInputRouter* mock_input_router_;
|
|
|
| scoped_ptr<TestOverscrollDelegate> overscroll_delegate_;
|
|
|
| @@ -611,9 +616,6 @@
|
| view_.reset(new TestView(host_.get()));
|
| host_->SetView(view_.get());
|
| host_->Init();
|
| -
|
| - // Tests for debounce-related behavior will explicitly enable debouncing.
|
| - host_->DisableGestureDebounce();
|
| }
|
| virtual void TearDown() {
|
| view_.reset();
|
| @@ -1519,6 +1521,7 @@
|
| // overscroll nav instead of completing it.
|
| TEST_F(RenderWidgetHostTest, ReverseFlingCancelsOverscroll) {
|
| host_->SetupForOverscrollControllerTest();
|
| + host_->DisableGestureDebounce();
|
| process_->sink().ClearMessages();
|
| view_->set_bounds(gfx::Rect(0, 0, 400, 200));
|
| view_->Show();
|
| @@ -1571,6 +1574,7 @@
|
| TEST_F(RenderWidgetHostTest, GestureScrollOverscrolls) {
|
| // Turn off debounce handling for test isolation.
|
| host_->SetupForOverscrollControllerTest();
|
| + host_->DisableGestureDebounce();
|
| process_->sink().ClearMessages();
|
|
|
| SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
|
| @@ -1624,6 +1628,7 @@
|
| TEST_F(RenderWidgetHostTest, GestureScrollConsumedHorizontal) {
|
| // Turn off debounce handling for test isolation.
|
| host_->SetupForOverscrollControllerTest();
|
| + host_->DisableGestureDebounce();
|
| process_->sink().ClearMessages();
|
|
|
| SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
|
| @@ -2078,6 +2083,7 @@
|
| // move events do reach the renderer.
|
| TEST_F(RenderWidgetHostTest, OverscrollMouseMoveCompletion) {
|
| host_->SetupForOverscrollControllerTest();
|
| + host_->DisableGestureDebounce();
|
| process_->sink().ClearMessages();
|
| view_->set_bounds(gfx::Rect(0, 0, 400, 200));
|
| view_->Show();
|
| @@ -2168,6 +2174,7 @@
|
| // reset after the end of the scroll.
|
| TEST_F(RenderWidgetHostTest, OverscrollStateResetsAfterScroll) {
|
| host_->SetupForOverscrollControllerTest();
|
| + host_->DisableGestureDebounce();
|
| process_->sink().ClearMessages();
|
| view_->set_bounds(gfx::Rect(0, 0, 400, 200));
|
| view_->Show();
|
| @@ -2242,7 +2249,6 @@
|
| INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
|
| EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_mode());
|
| EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_delegate()->current_mode());
|
| - EXPECT_EQ(2U, process_->sink().message_count());
|
|
|
| host_->Blur();
|
| EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode());
|
| @@ -2254,8 +2260,7 @@
|
|
|
| SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
|
| WebGestureEvent::Touchscreen);
|
| - EXPECT_EQ(1U, process_->sink().message_count());
|
| - process_->sink().ClearMessages();
|
| + EXPECT_EQ(0U, process_->sink().message_count());
|
|
|
| // Start a scroll gesture again. This should correctly start the overscroll
|
| // after the threshold.
|
| @@ -2272,7 +2277,7 @@
|
| WebGestureEvent::Touchscreen);
|
| EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->current_mode());
|
| EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_delegate()->completed_mode());
|
| - EXPECT_EQ(3U, process_->sink().message_count());
|
| + process_->sink().ClearMessages();
|
| }
|
|
|
| std::string GetInputMessageTypes(RenderWidgetHostProcess* process) {
|
| @@ -2295,6 +2300,7 @@
|
|
|
| TEST_F(RenderWidgetHostTest, TouchEmulator) {
|
| simulated_event_time_delta_seconds_ = 0.1;
|
| + host_->DisableGestureDebounce();
|
| // Immediately ack all touches instead of sending them to the renderer.
|
| host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, false));
|
| host_->OnMessageReceived(
|
|
|