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

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

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