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

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

Issue 260923003: Revert of Consolidate all touch/gesture related constants in content (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
« no previous file with comments | « content/browser/renderer_host/render_widget_host_impl.cc ('k') | content/content_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/memory/shared_memory.h" 9 #include "base/memory/shared_memory.h"
10 #include "base/timer/timer.h" 10 #include "base/timer/timer.h"
11 #include "content/browser/browser_thread_impl.h" 11 #include "content/browser/browser_thread_impl.h"
12 #include "content/browser/renderer_host/input/gesture_event_queue.h" 12 #include "content/browser/renderer_host/input/gesture_event_queue.h"
13 #include "content/browser/renderer_host/input/input_router_impl.h" 13 #include "content/browser/renderer_host/input/input_router_impl.h"
14 #include "content/browser/renderer_host/input/tap_suppression_controller.h"
15 #include "content/browser/renderer_host/input/tap_suppression_controller_client. h"
14 #include "content/browser/renderer_host/input/touch_event_queue.h" 16 #include "content/browser/renderer_host/input/touch_event_queue.h"
15 #include "content/browser/renderer_host/overscroll_controller.h" 17 #include "content/browser/renderer_host/overscroll_controller.h"
16 #include "content/browser/renderer_host/overscroll_controller_delegate.h" 18 #include "content/browser/renderer_host/overscroll_controller_delegate.h"
17 #include "content/browser/renderer_host/render_widget_host_delegate.h" 19 #include "content/browser/renderer_host/render_widget_host_delegate.h"
18 #include "content/browser/renderer_host/render_widget_host_view_base.h" 20 #include "content/browser/renderer_host/render_widget_host_view_base.h"
19 #include "content/common/input/synthetic_web_input_event_builders.h" 21 #include "content/common/input/synthetic_web_input_event_builders.h"
20 #include "content/common/input_messages.h" 22 #include "content/common/input_messages.h"
21 #include "content/common/view_messages.h" 23 #include "content/common/view_messages.h"
22 #include "content/public/common/content_switches.h" 24 #include "content/public/common/content_switches.h"
23 #include "content/public/test/mock_render_process_host.h" 25 #include "content/public/test/mock_render_process_host.h"
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 // MockRenderWidgetHost ---------------------------------------------------- 192 // MockRenderWidgetHost ----------------------------------------------------
191 193
192 class MockRenderWidgetHost : public RenderWidgetHostImpl { 194 class MockRenderWidgetHost : public RenderWidgetHostImpl {
193 public: 195 public:
194 MockRenderWidgetHost( 196 MockRenderWidgetHost(
195 RenderWidgetHostDelegate* delegate, 197 RenderWidgetHostDelegate* delegate,
196 RenderProcessHost* process, 198 RenderProcessHost* process,
197 int routing_id) 199 int routing_id)
198 : RenderWidgetHostImpl(delegate, process, routing_id, false), 200 : RenderWidgetHostImpl(delegate, process, routing_id, false),
199 unresponsive_timer_fired_(false) { 201 unresponsive_timer_fired_(false) {
202 input_router_impl_ = static_cast<InputRouterImpl*>(input_router_.get());
200 acked_touch_event_type_ = blink::WebInputEvent::Undefined; 203 acked_touch_event_type_ = blink::WebInputEvent::Undefined;
201 } 204 }
202 205
203 // Allow poking at a few private members. 206 // Allow poking at a few private members.
204 using RenderWidgetHostImpl::OnUpdateRect; 207 using RenderWidgetHostImpl::OnUpdateRect;
205 using RenderWidgetHostImpl::RendererExited; 208 using RenderWidgetHostImpl::RendererExited;
206 using RenderWidgetHostImpl::last_requested_size_; 209 using RenderWidgetHostImpl::last_requested_size_;
207 using RenderWidgetHostImpl::is_hidden_; 210 using RenderWidgetHostImpl::is_hidden_;
208 using RenderWidgetHostImpl::resize_ack_pending_; 211 using RenderWidgetHostImpl::resize_ack_pending_;
209 using RenderWidgetHostImpl::input_router_; 212 using RenderWidgetHostImpl::input_router_;
(...skipping 30 matching lines...) Expand all
240 bool ScrollingInProgress() const { 243 bool ScrollingInProgress() const {
241 return gesture_event_queue().scrolling_in_progress_; 244 return gesture_event_queue().scrolling_in_progress_;
242 } 245 }
243 246
244 void SetupForOverscrollControllerTest() { 247 void SetupForOverscrollControllerTest() {
245 SetOverscrollControllerEnabled(true); 248 SetOverscrollControllerEnabled(true);
246 overscroll_delegate_.reset(new TestOverscrollDelegate(GetView())); 249 overscroll_delegate_.reset(new TestOverscrollDelegate(GetView()));
247 overscroll_controller_->set_delegate(overscroll_delegate_.get()); 250 overscroll_controller_->set_delegate(overscroll_delegate_.get());
248 } 251 }
249 252
250 void DisableGestureDebounce() { set_debounce_interval_time_ms(0); } 253 void DisableGestureDebounce() {
254 gesture_event_queue().set_debounce_enabled_for_testing(false);
255 }
251 256
252 void set_debounce_interval_time_ms(int delay_ms) { 257 void set_debounce_interval_time_ms(int delay_ms) {
253 gesture_event_queue().set_debounce_interval_time_ms_for_testing(delay_ms); 258 gesture_event_queue().
259 set_debounce_interval_time_ms_for_testing(delay_ms);
254 } 260 }
255 261
256 bool TouchEventQueueEmpty() const { 262 bool TouchEventQueueEmpty() const {
257 return touch_event_queue().empty(); 263 return touch_event_queue().empty();
258 } 264 }
259 265
260 virtual void OnTouchEventAck( 266 virtual void OnTouchEventAck(
261 const TouchEventWithLatencyInfo& event, 267 const TouchEventWithLatencyInfo& event,
262 InputEventAckState ack_result) OVERRIDE { 268 InputEventAckState ack_result) OVERRIDE {
263 // Sniff touch acks. 269 // Sniff touch acks.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 301
296 float overscroll_delta_y() const { 302 float overscroll_delta_y() const {
297 return overscroll_controller_->overscroll_delta_y_; 303 return overscroll_controller_->overscroll_delta_y_;
298 } 304 }
299 305
300 TestOverscrollDelegate* overscroll_delegate() { 306 TestOverscrollDelegate* overscroll_delegate() {
301 return overscroll_delegate_.get(); 307 return overscroll_delegate_.get();
302 } 308 }
303 309
304 void SetupForInputRouterTest() { 310 void SetupForInputRouterTest() {
305 input_router_.reset(new MockInputRouter(this)); 311 mock_input_router_ = new MockInputRouter(this);
312 input_router_.reset(mock_input_router_);
306 } 313 }
307 314
308 MockInputRouter* mock_input_router() { 315 MockInputRouter* mock_input_router() {
309 return static_cast<MockInputRouter*>(input_router_.get()); 316 return mock_input_router_;
310 } 317 }
311 318
312 protected: 319 protected:
313 virtual void NotifyRendererUnresponsive() OVERRIDE { 320 virtual void NotifyRendererUnresponsive() OVERRIDE {
314 unresponsive_timer_fired_ = true; 321 unresponsive_timer_fired_ = true;
315 } 322 }
316 323
317 const TouchEventQueue& touch_event_queue() const { 324 const TouchEventQueue& touch_event_queue() const {
318 return input_router_impl()->touch_event_queue_; 325 return input_router_impl_->touch_event_queue_;
319 } 326 }
320 327
321 const GestureEventQueue& gesture_event_queue() const { 328 const GestureEventQueue& gesture_event_queue() const {
322 return input_router_impl()->gesture_event_queue_; 329 return input_router_impl_->gesture_event_queue_;
323 } 330 }
324 331
325 GestureEventQueue& gesture_event_queue() { 332 GestureEventQueue& gesture_event_queue() {
326 return input_router_impl()->gesture_event_queue_; 333 return input_router_impl_->gesture_event_queue_;
327 } 334 }
328 335
329 private: 336 private:
330 const InputRouterImpl* input_router_impl() const {
331 return static_cast<InputRouterImpl*>(input_router_.get());
332 }
333
334 InputRouterImpl* input_router_impl() {
335 return static_cast<InputRouterImpl*>(input_router_.get());
336 }
337
338 bool unresponsive_timer_fired_; 337 bool unresponsive_timer_fired_;
339 WebInputEvent::Type acked_touch_event_type_; 338 WebInputEvent::Type acked_touch_event_type_;
340 339
340 // |input_router_impl_| and |mock_input_router_| are owned by
341 // RenderWidgetHostImpl. The handles below are provided for convenience so
342 // that we don't have to reinterpret_cast it all the time.
343 InputRouterImpl* input_router_impl_;
344 MockInputRouter* mock_input_router_;
345
341 scoped_ptr<TestOverscrollDelegate> overscroll_delegate_; 346 scoped_ptr<TestOverscrollDelegate> overscroll_delegate_;
342 347
343 DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHost); 348 DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHost);
344 }; 349 };
345 350
346 namespace { 351 namespace {
347 352
348 // RenderWidgetHostProcess ----------------------------------------------------- 353 // RenderWidgetHostProcess -----------------------------------------------------
349 354
350 class RenderWidgetHostProcess : public MockRenderProcessHost { 355 class RenderWidgetHostProcess : public MockRenderProcessHost {
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 scoped_ptr<ui::ContextFactory>(new ui::InProcessContextFactory)); 609 scoped_ptr<ui::ContextFactory>(new ui::InProcessContextFactory));
605 aura::Env::CreateInstance(); 610 aura::Env::CreateInstance();
606 screen_.reset(aura::TestScreen::Create()); 611 screen_.reset(aura::TestScreen::Create());
607 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, screen_.get()); 612 gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, screen_.get());
608 #endif 613 #endif
609 host_.reset( 614 host_.reset(
610 new MockRenderWidgetHost(delegate_.get(), process_, MSG_ROUTING_NONE)); 615 new MockRenderWidgetHost(delegate_.get(), process_, MSG_ROUTING_NONE));
611 view_.reset(new TestView(host_.get())); 616 view_.reset(new TestView(host_.get()));
612 host_->SetView(view_.get()); 617 host_->SetView(view_.get());
613 host_->Init(); 618 host_->Init();
614
615 // Tests for debounce-related behavior will explicitly enable debouncing.
616 host_->DisableGestureDebounce();
617 } 619 }
618 virtual void TearDown() { 620 virtual void TearDown() {
619 view_.reset(); 621 view_.reset();
620 host_.reset(); 622 host_.reset();
621 delegate_.reset(); 623 delegate_.reset();
622 process_ = NULL; 624 process_ = NULL;
623 browser_context_.reset(); 625 browser_context_.reset();
624 626
625 #if defined(USE_AURA) 627 #if defined(USE_AURA)
626 aura::Env::DeleteInstance(); 628 aura::Env::DeleteInstance();
(...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after
1512 SimulateGestureFlingStartEvent(10.f, 0.f, WebGestureEvent::Touchpad); 1514 SimulateGestureFlingStartEvent(10.f, 0.f, WebGestureEvent::Touchpad);
1513 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode()); 1515 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode());
1514 EXPECT_EQ(1U, host_->GestureEventLastQueueEventSize()); 1516 EXPECT_EQ(1U, host_->GestureEventLastQueueEventSize());
1515 EXPECT_EQ(1U, process_->sink().message_count()); 1517 EXPECT_EQ(1U, process_->sink().message_count());
1516 } 1518 }
1517 1519
1518 // Tests that a fling in the opposite direction of the overscroll cancels the 1520 // Tests that a fling in the opposite direction of the overscroll cancels the
1519 // overscroll nav instead of completing it. 1521 // overscroll nav instead of completing it.
1520 TEST_F(RenderWidgetHostTest, ReverseFlingCancelsOverscroll) { 1522 TEST_F(RenderWidgetHostTest, ReverseFlingCancelsOverscroll) {
1521 host_->SetupForOverscrollControllerTest(); 1523 host_->SetupForOverscrollControllerTest();
1524 host_->DisableGestureDebounce();
1522 process_->sink().ClearMessages(); 1525 process_->sink().ClearMessages();
1523 view_->set_bounds(gfx::Rect(0, 0, 400, 200)); 1526 view_->set_bounds(gfx::Rect(0, 0, 400, 200));
1524 view_->Show(); 1527 view_->Show();
1525 1528
1526 { 1529 {
1527 // Start and end a gesture in the same direction without processing the 1530 // Start and end a gesture in the same direction without processing the
1528 // gesture events in the renderer. This should initiate and complete an 1531 // gesture events in the renderer. This should initiate and complete an
1529 // overscroll navigation. 1532 // overscroll navigation.
1530 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1533 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1531 WebGestureEvent::Touchscreen); 1534 WebGestureEvent::Touchscreen);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1564 EXPECT_EQ(1U, process_->sink().message_count()); 1567 EXPECT_EQ(1U, process_->sink().message_count());
1565 } 1568 }
1566 } 1569 }
1567 1570
1568 // Tests that touch-scroll events are handled correctly by the overscroll 1571 // Tests that touch-scroll events are handled correctly by the overscroll
1569 // controller. This also tests that the overscroll controller and the 1572 // controller. This also tests that the overscroll controller and the
1570 // gesture-event filter play nice with each other. 1573 // gesture-event filter play nice with each other.
1571 TEST_F(RenderWidgetHostTest, GestureScrollOverscrolls) { 1574 TEST_F(RenderWidgetHostTest, GestureScrollOverscrolls) {
1572 // Turn off debounce handling for test isolation. 1575 // Turn off debounce handling for test isolation.
1573 host_->SetupForOverscrollControllerTest(); 1576 host_->SetupForOverscrollControllerTest();
1577 host_->DisableGestureDebounce();
1574 process_->sink().ClearMessages(); 1578 process_->sink().ClearMessages();
1575 1579
1576 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1580 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1577 WebGestureEvent::Touchscreen); 1581 WebGestureEvent::Touchscreen);
1578 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode()); 1582 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode());
1579 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->current_mode()); 1583 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->current_mode());
1580 1584
1581 // Send another gesture event and ACK as not being processed. This should 1585 // Send another gesture event and ACK as not being processed. This should
1582 // initiate the navigation gesture. 1586 // initiate the navigation gesture.
1583 SimulateGestureScrollUpdateEvent(55, -5, 0); 1587 SimulateGestureScrollUpdateEvent(55, -5, 0);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1617 // router. 1621 // router.
1618 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize()); 1622 EXPECT_EQ(0U, host_->GestureEventLastQueueEventSize());
1619 } 1623 }
1620 1624
1621 // Tests that if the page is scrolled because of a scroll-gesture, then that 1625 // Tests that if the page is scrolled because of a scroll-gesture, then that
1622 // particular scroll sequence never generates overscroll if the scroll direction 1626 // particular scroll sequence never generates overscroll if the scroll direction
1623 // is horizontal. 1627 // is horizontal.
1624 TEST_F(RenderWidgetHostTest, GestureScrollConsumedHorizontal) { 1628 TEST_F(RenderWidgetHostTest, GestureScrollConsumedHorizontal) {
1625 // Turn off debounce handling for test isolation. 1629 // Turn off debounce handling for test isolation.
1626 host_->SetupForOverscrollControllerTest(); 1630 host_->SetupForOverscrollControllerTest();
1631 host_->DisableGestureDebounce();
1627 process_->sink().ClearMessages(); 1632 process_->sink().ClearMessages();
1628 1633
1629 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1634 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1630 WebGestureEvent::Touchscreen); 1635 WebGestureEvent::Touchscreen);
1631 SimulateGestureScrollUpdateEvent(10, 0, 0); 1636 SimulateGestureScrollUpdateEvent(10, 0, 0);
1632 1637
1633 // Start scrolling on content. ACK both events as being processed. 1638 // Start scrolling on content. ACK both events as being processed.
1634 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 1639 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
1635 INPUT_EVENT_ACK_STATE_CONSUMED); 1640 INPUT_EVENT_ACK_STATE_CONSUMED);
1636 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode()); 1641 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode());
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
2071 // should reach the renderer. 2076 // should reach the renderer.
2072 SimulateGestureScrollUpdateEvent(-20, 0, 0); 2077 SimulateGestureScrollUpdateEvent(-20, 0, 0);
2073 EXPECT_EQ(1U, process_->sink().message_count()); 2078 EXPECT_EQ(1U, process_->sink().message_count());
2074 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode()); 2079 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode());
2075 } 2080 }
2076 2081
2077 // Tests that if a mouse-move event completes the overscroll gesture, future 2082 // Tests that if a mouse-move event completes the overscroll gesture, future
2078 // move events do reach the renderer. 2083 // move events do reach the renderer.
2079 TEST_F(RenderWidgetHostTest, OverscrollMouseMoveCompletion) { 2084 TEST_F(RenderWidgetHostTest, OverscrollMouseMoveCompletion) {
2080 host_->SetupForOverscrollControllerTest(); 2085 host_->SetupForOverscrollControllerTest();
2086 host_->DisableGestureDebounce();
2081 process_->sink().ClearMessages(); 2087 process_->sink().ClearMessages();
2082 view_->set_bounds(gfx::Rect(0, 0, 400, 200)); 2088 view_->set_bounds(gfx::Rect(0, 0, 400, 200));
2083 view_->Show(); 2089 view_->Show();
2084 2090
2085 SimulateWheelEvent(5, 0, 0, true); // sent directly 2091 SimulateWheelEvent(5, 0, 0, true); // sent directly
2086 SimulateWheelEvent(-1, 0, 0, true); // enqueued 2092 SimulateWheelEvent(-1, 0, 0, true); // enqueued
2087 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event 2093 SimulateWheelEvent(-10, -3, 0, true); // coalesced into previous event
2088 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event 2094 SimulateWheelEvent(-15, -1, 0, true); // coalesced into previous event
2089 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event 2095 SimulateWheelEvent(-30, -3, 0, true); // coalesced into previous event
2090 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode()); 2096 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode());
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2161 2167
2162 SendInputEventACK(WebInputEvent::MouseMove, 2168 SendInputEventACK(WebInputEvent::MouseMove,
2163 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2169 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2164 process_->sink().ClearMessages(); 2170 process_->sink().ClearMessages();
2165 } 2171 }
2166 2172
2167 // Tests that if a page scrolled, then the overscroll controller's states are 2173 // Tests that if a page scrolled, then the overscroll controller's states are
2168 // reset after the end of the scroll. 2174 // reset after the end of the scroll.
2169 TEST_F(RenderWidgetHostTest, OverscrollStateResetsAfterScroll) { 2175 TEST_F(RenderWidgetHostTest, OverscrollStateResetsAfterScroll) {
2170 host_->SetupForOverscrollControllerTest(); 2176 host_->SetupForOverscrollControllerTest();
2177 host_->DisableGestureDebounce();
2171 process_->sink().ClearMessages(); 2178 process_->sink().ClearMessages();
2172 view_->set_bounds(gfx::Rect(0, 0, 400, 200)); 2179 view_->set_bounds(gfx::Rect(0, 0, 400, 200));
2173 view_->Show(); 2180 view_->Show();
2174 2181
2175 SimulateWheelEvent(0, 5, 0, true); // sent directly 2182 SimulateWheelEvent(0, 5, 0, true); // sent directly
2176 SimulateWheelEvent(0, 30, 0, true); // enqueued 2183 SimulateWheelEvent(0, 30, 0, true); // enqueued
2177 SimulateWheelEvent(0, 40, 0, true); // coalesced into previous event 2184 SimulateWheelEvent(0, 40, 0, true); // coalesced into previous event
2178 SimulateWheelEvent(0, 10, 0, true); // coalesced into previous event 2185 SimulateWheelEvent(0, 10, 0, true); // coalesced into previous event
2179 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode()); 2186 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode());
2180 EXPECT_EQ(1U, process_->sink().message_count()); 2187 EXPECT_EQ(1U, process_->sink().message_count());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
2235 2242
2236 // Start an overscroll with gesture scroll. In the middle of the scroll, blur 2243 // Start an overscroll with gesture scroll. In the middle of the scroll, blur
2237 // the host. 2244 // the host.
2238 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 2245 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
2239 WebGestureEvent::Touchscreen); 2246 WebGestureEvent::Touchscreen);
2240 SimulateGestureScrollUpdateEvent(300, -5, 0); 2247 SimulateGestureScrollUpdateEvent(300, -5, 0);
2241 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 2248 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
2242 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2249 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2243 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_mode()); 2250 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_mode());
2244 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_delegate()->current_mode()); 2251 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_delegate()->current_mode());
2245 EXPECT_EQ(2U, process_->sink().message_count());
2246 2252
2247 host_->Blur(); 2253 host_->Blur();
2248 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode()); 2254 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_mode());
2249 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->current_mode()); 2255 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->current_mode());
2250 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->completed_mode()); 2256 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->completed_mode());
2251 EXPECT_EQ(0.f, host_->overscroll_delegate()->delta_x()); 2257 EXPECT_EQ(0.f, host_->overscroll_delegate()->delta_x());
2252 EXPECT_EQ(0.f, host_->overscroll_delegate()->delta_y()); 2258 EXPECT_EQ(0.f, host_->overscroll_delegate()->delta_y());
2253 process_->sink().ClearMessages(); 2259 process_->sink().ClearMessages();
2254 2260
2255 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 2261 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
2256 WebGestureEvent::Touchscreen); 2262 WebGestureEvent::Touchscreen);
2257 EXPECT_EQ(1U, process_->sink().message_count()); 2263 EXPECT_EQ(0U, process_->sink().message_count());
2258 process_->sink().ClearMessages();
2259 2264
2260 // Start a scroll gesture again. This should correctly start the overscroll 2265 // Start a scroll gesture again. This should correctly start the overscroll
2261 // after the threshold. 2266 // after the threshold.
2262 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 2267 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
2263 WebGestureEvent::Touchscreen); 2268 WebGestureEvent::Touchscreen);
2264 SimulateGestureScrollUpdateEvent(300, -5, 0); 2269 SimulateGestureScrollUpdateEvent(300, -5, 0);
2265 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 2270 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
2266 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 2271 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
2267 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_mode()); 2272 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_mode());
2268 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_delegate()->current_mode()); 2273 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_delegate()->current_mode());
2269 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->completed_mode()); 2274 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->completed_mode());
2270 2275
2271 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 2276 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
2272 WebGestureEvent::Touchscreen); 2277 WebGestureEvent::Touchscreen);
2273 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->current_mode()); 2278 EXPECT_EQ(OVERSCROLL_NONE, host_->overscroll_delegate()->current_mode());
2274 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_delegate()->completed_mode()); 2279 EXPECT_EQ(OVERSCROLL_EAST, host_->overscroll_delegate()->completed_mode());
2275 EXPECT_EQ(3U, process_->sink().message_count()); 2280 process_->sink().ClearMessages();
2276 } 2281 }
2277 2282
2278 std::string GetInputMessageTypes(RenderWidgetHostProcess* process) { 2283 std::string GetInputMessageTypes(RenderWidgetHostProcess* process) {
2279 const WebInputEvent* event = NULL; 2284 const WebInputEvent* event = NULL;
2280 ui::LatencyInfo latency_info; 2285 ui::LatencyInfo latency_info;
2281 bool is_keyboard_shortcut; 2286 bool is_keyboard_shortcut;
2282 std::string result; 2287 std::string result;
2283 for (size_t i = 0; i < process->sink().message_count(); ++i) { 2288 for (size_t i = 0; i < process->sink().message_count(); ++i) {
2284 const IPC::Message *message = process->sink().GetMessageAt(i); 2289 const IPC::Message *message = process->sink().GetMessageAt(i);
2285 EXPECT_EQ(InputMsg_HandleInputEvent::ID, message->type()); 2290 EXPECT_EQ(InputMsg_HandleInputEvent::ID, message->type());
2286 EXPECT_TRUE(InputMsg_HandleInputEvent::Read( 2291 EXPECT_TRUE(InputMsg_HandleInputEvent::Read(
2287 message, &event, &latency_info, &is_keyboard_shortcut)); 2292 message, &event, &latency_info, &is_keyboard_shortcut));
2288 if (i != 0) 2293 if (i != 0)
2289 result += " "; 2294 result += " ";
2290 result += WebInputEventTraits::GetName(event->type); 2295 result += WebInputEventTraits::GetName(event->type);
2291 } 2296 }
2292 process->sink().ClearMessages(); 2297 process->sink().ClearMessages();
2293 return result; 2298 return result;
2294 } 2299 }
2295 2300
2296 TEST_F(RenderWidgetHostTest, TouchEmulator) { 2301 TEST_F(RenderWidgetHostTest, TouchEmulator) {
2297 simulated_event_time_delta_seconds_ = 0.1; 2302 simulated_event_time_delta_seconds_ = 0.1;
2303 host_->DisableGestureDebounce();
2298 // Immediately ack all touches instead of sending them to the renderer. 2304 // Immediately ack all touches instead of sending them to the renderer.
2299 host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, false)); 2305 host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, false));
2300 host_->OnMessageReceived( 2306 host_->OnMessageReceived(
2301 ViewHostMsg_SetTouchEventEmulationEnabled(0, true, true)); 2307 ViewHostMsg_SetTouchEventEmulationEnabled(0, true, true));
2302 process_->sink().ClearMessages(); 2308 process_->sink().ClearMessages();
2303 view_->set_bounds(gfx::Rect(0, 0, 400, 200)); 2309 view_->set_bounds(gfx::Rect(0, 0, 400, 200));
2304 view_->Show(); 2310 view_->Show();
2305 2311
2306 SimulateMouseEvent(WebInputEvent::MouseMove, 10, 10, 0, false); 2312 SimulateMouseEvent(WebInputEvent::MouseMove, 10, 10, 0, false);
2307 EXPECT_EQ(0U, process_->sink().message_count()); 2313 EXPECT_EQ(0U, process_->sink().message_count());
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
2672 2678
2673 // Tests RWHI::ForwardTouchEventWithLatencyInfo(). 2679 // Tests RWHI::ForwardTouchEventWithLatencyInfo().
2674 PressTouchPoint(0, 1); 2680 PressTouchPoint(0, 1);
2675 SendTouchEvent(); 2681 SendTouchEvent();
2676 CheckLatencyInfoComponentInMessage( 2682 CheckLatencyInfoComponentInMessage(
2677 process_, GetLatencyComponentId(), WebInputEvent::TouchStart); 2683 process_, GetLatencyComponentId(), WebInputEvent::TouchStart);
2678 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); 2684 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED);
2679 } 2685 }
2680 2686
2681 } // namespace content 2687 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_impl.cc ('k') | content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698