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

Side by Side Diff: content/browser/renderer_host/input/input_router_impl_unittest.cc

Issue 2893843002: input: Remove now dead code. (Closed)
Patch Set: tot merge Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/input/input_router_impl.h" 5 #include "content/browser/renderer_host/input/input_router_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 } 345 }
346 346
347 bool TouchEventQueueEmpty() const { 347 bool TouchEventQueueEmpty() const {
348 return input_router()->touch_event_queue_->Empty(); 348 return input_router()->touch_event_queue_->Empty();
349 } 349 }
350 350
351 bool TouchEventTimeoutEnabled() const { 351 bool TouchEventTimeoutEnabled() const {
352 return input_router()->touch_event_queue_->IsAckTimeoutEnabled(); 352 return input_router()->touch_event_queue_->IsAckTimeoutEnabled();
353 } 353 }
354 354
355 void RequestNotificationWhenFlushed() const {
356 return input_router_->RequestNotificationWhenFlushed();
357 }
358
359 size_t GetAndResetDidFlushCount() {
360 return client_->GetAndResetDidFlushCount();
361 }
362
363 bool HasPendingEvents() const { 355 bool HasPendingEvents() const {
364 return input_router_->HasPendingEvents(); 356 return input_router_->HasPendingEvents();
365 } 357 }
366 358
367 void OnHasTouchEventHandlers(bool has_handlers) { 359 void OnHasTouchEventHandlers(bool has_handlers) {
368 input_router_->OnMessageReceived( 360 input_router_->OnMessageReceived(
369 ViewHostMsg_HasTouchEventHandlers(0, has_handlers)); 361 ViewHostMsg_HasTouchEventHandlers(0, has_handlers));
370 } 362 }
371 363
372 void OnSetTouchAction(cc::TouchAction touch_action) { 364 void OnSetTouchAction(cc::TouchAction touch_action) {
(...skipping 1409 matching lines...) Expand 10 before | Expand all | Expand 10 after
1782 SimulateGestureEvent(WebInputEvent::kGestureDoubleTap, 1774 SimulateGestureEvent(WebInputEvent::kGestureDoubleTap,
1783 blink::kWebGestureDeviceTouchscreen); 1775 blink::kWebGestureDeviceTouchscreen);
1784 // This test will become invalid if GestureDoubleTap stops requiring an ack. 1776 // This test will become invalid if GestureDoubleTap stops requiring an ack.
1785 ASSERT_TRUE(ShouldBlockEventStream( 1777 ASSERT_TRUE(ShouldBlockEventStream(
1786 GetEventWithType(WebInputEvent::kGestureDoubleTap))); 1778 GetEventWithType(WebInputEvent::kGestureDoubleTap)));
1787 EXPECT_EQ(1, client_->in_flight_event_count()); 1779 EXPECT_EQ(1, client_->in_flight_event_count());
1788 SendInputEventACK(WebInputEvent::kGestureTap, INPUT_EVENT_ACK_STATE_CONSUMED); 1780 SendInputEventACK(WebInputEvent::kGestureTap, INPUT_EVENT_ACK_STATE_CONSUMED);
1789 EXPECT_EQ(0, client_->in_flight_event_count()); 1781 EXPECT_EQ(0, client_->in_flight_event_count());
1790 } 1782 }
1791 1783
1792 // Test that the router will call the client's |DidFlush| after all events have
1793 // been dispatched following a call to |Flush|.
1794 TEST_F(InputRouterImplTest, InputFlush) {
1795 EXPECT_FALSE(HasPendingEvents());
1796
1797 // Flushing an empty router should immediately trigger DidFlush.
1798 RequestNotificationWhenFlushed();
1799 EXPECT_EQ(1U, GetAndResetDidFlushCount());
1800 EXPECT_FALSE(HasPendingEvents());
1801
1802 // Queue a TouchStart.
1803 OnHasTouchEventHandlers(true);
1804 PressTouchPoint(1, 1);
1805 uint32_t touch_press_event_id = SendTouchEvent();
1806 EXPECT_TRUE(HasPendingEvents());
1807
1808 // DidFlush should be called only after the event is ack'ed.
1809 RequestNotificationWhenFlushed();
1810 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1811 SendTouchEventACK(WebInputEvent::kTouchStart,
1812 INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_press_event_id);
1813 EXPECT_EQ(1U, GetAndResetDidFlushCount());
1814
1815 // Ensure different types of enqueued events will prevent the DidFlush call
1816 // until all such events have been fully dispatched.
1817 MoveTouchPoint(0, 50, 50);
1818 uint32_t touch_move_event_id = SendTouchEvent();
1819 ASSERT_TRUE(HasPendingEvents());
1820 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
1821 blink::kWebGestureDeviceTouchscreen);
1822 SimulateGestureEvent(WebInputEvent::kGestureScrollUpdate,
1823 blink::kWebGestureDeviceTouchscreen);
1824 SimulateGestureEvent(WebInputEvent::kGesturePinchBegin,
1825 blink::kWebGestureDeviceTouchscreen);
1826 SimulateGestureEvent(WebInputEvent::kGesturePinchUpdate,
1827 blink::kWebGestureDeviceTouchscreen);
1828 RequestNotificationWhenFlushed();
1829 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1830
1831 // Repeated flush calls should have no effect.
1832 RequestNotificationWhenFlushed();
1833 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1834
1835 // There are still pending gestures.
1836 SendTouchEventACK(WebInputEvent::kTouchMove,
1837 INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_move_event_id);
1838 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1839 EXPECT_TRUE(HasPendingEvents());
1840
1841 // One more gesture to go.
1842 SendInputEventACK(WebInputEvent::kGestureScrollUpdate,
1843 INPUT_EVENT_ACK_STATE_CONSUMED);
1844 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1845 EXPECT_TRUE(HasPendingEvents());
1846
1847 // The final ack'ed gesture should trigger the DidFlush.
1848 SendInputEventACK(WebInputEvent::kGesturePinchUpdate,
1849 INPUT_EVENT_ACK_STATE_CONSUMED);
1850 EXPECT_EQ(1U, GetAndResetDidFlushCount());
1851 EXPECT_FALSE(HasPendingEvents());
1852 }
1853
1854 // Test that the router will call the client's |DidFlush| after all fling
1855 // animations have completed.
1856 TEST_F(InputRouterImplTest, InputFlushAfterFling) {
1857 EXPECT_FALSE(HasPendingEvents());
1858
1859 // Simulate a fling.
1860 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
1861 blink::kWebGestureDeviceTouchscreen);
1862 SimulateGestureEvent(WebInputEvent::kGestureFlingStart,
1863 blink::kWebGestureDeviceTouchscreen);
1864 EXPECT_TRUE(HasPendingEvents());
1865
1866 // If the fling is unconsumed, the flush is complete.
1867 RequestNotificationWhenFlushed();
1868 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1869 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
1870 blink::kWebGestureDeviceTouchscreen);
1871 SendInputEventACK(WebInputEvent::kGestureFlingStart,
1872 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1873 EXPECT_FALSE(HasPendingEvents());
1874 EXPECT_EQ(1U, GetAndResetDidFlushCount());
1875
1876 // Simulate a second fling.
1877 SimulateGestureEvent(WebInputEvent::kGestureFlingStart,
1878 blink::kWebGestureDeviceTouchscreen);
1879 EXPECT_TRUE(HasPendingEvents());
1880
1881 // If the fling is consumed, the flush is complete only when the renderer
1882 // reports that is has ended.
1883 RequestNotificationWhenFlushed();
1884 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1885 SendInputEventACK(WebInputEvent::kGestureFlingStart,
1886 INPUT_EVENT_ACK_STATE_CONSUMED);
1887 EXPECT_TRUE(HasPendingEvents());
1888 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1889
1890 // The fling end notification should signal that the router is flushed.
1891 input_router()->OnMessageReceived(InputHostMsg_DidStopFlinging(0));
1892 EXPECT_EQ(1U, GetAndResetDidFlushCount());
1893
1894 // Even flings consumed by the client require a fling-end notification.
1895 client_->set_filter_state(INPUT_EVENT_ACK_STATE_CONSUMED);
1896 SimulateGestureEvent(WebInputEvent::kGestureScrollBegin,
1897 blink::kWebGestureDeviceTouchscreen);
1898 SimulateGestureEvent(WebInputEvent::kGestureFlingStart,
1899 blink::kWebGestureDeviceTouchscreen);
1900 ASSERT_TRUE(HasPendingEvents());
1901 RequestNotificationWhenFlushed();
1902 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1903 input_router()->OnMessageReceived(InputHostMsg_DidStopFlinging(0));
1904 EXPECT_EQ(1U, GetAndResetDidFlushCount());
1905 }
1906
1907 // Test that GesturePinchUpdate is handled specially for trackpad 1784 // Test that GesturePinchUpdate is handled specially for trackpad
1908 TEST_F(InputRouterImplTest, TouchpadPinchUpdate) { 1785 TEST_F(InputRouterImplTest, TouchpadPinchUpdate) {
1909 // GesturePinchUpdate for trackpad sends synthetic wheel events. 1786 // GesturePinchUpdate for trackpad sends synthetic wheel events.
1910 // Note that the Touchscreen case is verified as NOT doing this as 1787 // Note that the Touchscreen case is verified as NOT doing this as
1911 // part of the ShowPressIsInOrder test. 1788 // part of the ShowPressIsInOrder test.
1912 1789
1913 SimulateGesturePinchUpdateEvent(1.5f, 20, 25, 0, 1790 SimulateGesturePinchUpdateEvent(1.5f, 20, 25, 0,
1914 blink::kWebGestureDeviceTouchpad); 1791 blink::kWebGestureDeviceTouchpad);
1915 1792
1916 // Verify we actually sent a special wheel event to the renderer. 1793 // Verify we actually sent a special wheel event to the renderer.
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
2501 EXPECT_EQ(80, sent_event->data.fling_start.velocity_y); 2378 EXPECT_EQ(80, sent_event->data.fling_start.velocity_y);
2502 2379
2503 const WebGestureEvent* filter_event = 2380 const WebGestureEvent* filter_event =
2504 GetFilterWebInputEvent<WebGestureEvent>(); 2381 GetFilterWebInputEvent<WebGestureEvent>();
2505 TestLocationInFilterEvent(filter_event, orig); 2382 TestLocationInFilterEvent(filter_event, orig);
2506 EXPECT_EQ(30, filter_event->data.fling_start.velocity_x); 2383 EXPECT_EQ(30, filter_event->data.fling_start.velocity_x);
2507 EXPECT_EQ(40, filter_event->data.fling_start.velocity_y); 2384 EXPECT_EQ(40, filter_event->data.fling_start.velocity_y);
2508 } 2385 }
2509 2386
2510 } // namespace content 2387 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698