Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <math.h> | 5 #include <math.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/location.h" | 9 #include "base/location.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 1799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1810 | 1810 |
| 1811 client_overscroll = client_->GetAndResetOverscroll(); | 1811 client_overscroll = client_->GetAndResetOverscroll(); |
| 1812 EXPECT_EQ(wheel_overscroll.accumulated_overscroll, | 1812 EXPECT_EQ(wheel_overscroll.accumulated_overscroll, |
| 1813 client_overscroll.accumulated_overscroll); | 1813 client_overscroll.accumulated_overscroll); |
| 1814 EXPECT_EQ(wheel_overscroll.latest_overscroll_delta, | 1814 EXPECT_EQ(wheel_overscroll.latest_overscroll_delta, |
| 1815 client_overscroll.latest_overscroll_delta); | 1815 client_overscroll.latest_overscroll_delta); |
| 1816 EXPECT_EQ(wheel_overscroll.current_fling_velocity, | 1816 EXPECT_EQ(wheel_overscroll.current_fling_velocity, |
| 1817 client_overscroll.current_fling_velocity); | 1817 client_overscroll.current_fling_velocity); |
| 1818 } | 1818 } |
| 1819 | 1819 |
| 1820 namespace { | |
| 1821 | |
| 1822 class InputRouterImplScaleEventTest : public InputRouterImplTest { | |
| 1823 public: | |
| 1824 InputRouterImplScaleEventTest() {} | |
| 1825 | |
| 1826 void SetUp() override { | |
| 1827 InputRouterImplTest::SetUp(); | |
| 1828 input_router_->SetDeviceScaleFactor(2.f); | |
| 1829 } | |
| 1830 | |
| 1831 template <typename T> | |
| 1832 const T* GetSentWebInputEvent() const { | |
| 1833 EXPECT_EQ(1u, process_->sink().message_count()); | |
| 1834 | |
| 1835 InputMsg_HandleInputEvent::Schema::Param param; | |
| 1836 InputMsg_HandleInputEvent::Read(process_->sink().GetMessageAt(0), ¶m); | |
| 1837 return static_cast<const T*>(base::get<0>(param)); | |
| 1838 } | |
| 1839 | |
| 1840 template <typename T> | |
| 1841 const T* GetFilterWebInputEvent() const { | |
| 1842 return static_cast<const T*>(client_->last_filter_event()); | |
| 1843 } | |
| 1844 | |
| 1845 private: | |
| 1846 DISALLOW_COPY_AND_ASSIGN(InputRouterImplScaleEventTest); | |
| 1847 }; | |
| 1848 | |
| 1849 class InputRouterImplScaleMouseEventTest | |
| 1850 : public InputRouterImplScaleEventTest { | |
| 1851 public: | |
| 1852 InputRouterImplScaleMouseEventTest() {} | |
| 1853 | |
| 1854 void RunMouseEventTest(const std::string& name, WebInputEvent::Type type) { | |
| 1855 SCOPED_TRACE(name); | |
| 1856 SimulateMouseEvent(type, 10, 10); | |
| 1857 const WebMouseEvent* sent_event = GetSentWebInputEvent<WebMouseEvent>(); | |
| 1858 EXPECT_EQ(20, sent_event->x); | |
| 1859 EXPECT_EQ(20, sent_event->y); | |
| 1860 | |
| 1861 const WebMouseEvent* filter_event = GetFilterWebInputEvent<WebMouseEvent>(); | |
| 1862 EXPECT_EQ(10, filter_event->x); | |
| 1863 EXPECT_EQ(10, filter_event->y); | |
| 1864 | |
| 1865 process_->sink().ClearMessages(); | |
| 1866 } | |
| 1867 | |
| 1868 private: | |
| 1869 DISALLOW_COPY_AND_ASSIGN(InputRouterImplScaleMouseEventTest); | |
| 1870 }; | |
| 1871 | |
| 1872 } // namespace | |
| 1873 | |
| 1874 TEST_F(InputRouterImplScaleMouseEventTest, ScaleMouseEventTest) { | |
| 1875 RunMouseEventTest("Enter", WebInputEvent::MouseEnter); | |
| 1876 RunMouseEventTest("Down", WebInputEvent::MouseDown); | |
| 1877 RunMouseEventTest("Move", WebInputEvent::MouseMove); | |
| 1878 RunMouseEventTest("Up", WebInputEvent::MouseUp); | |
| 1879 } | |
| 1880 | |
| 1881 TEST_F(InputRouterImplScaleEventTest, ScaleMouseWheelEventTest) { | |
| 1882 ASSERT_EQ(0u, process_->sink().message_count()); | |
| 1883 SimulateWheelEvent(10, 10, 0, false); | |
| 1884 ASSERT_EQ(1u, process_->sink().message_count()); | |
| 1885 | |
| 1886 const WebMouseWheelEvent* sent_event = | |
| 1887 GetSentWebInputEvent<WebMouseWheelEvent>(); | |
| 1888 EXPECT_EQ(20, sent_event->deltaX); | |
| 1889 EXPECT_EQ(20, sent_event->deltaY); | |
| 1890 EXPECT_EQ(2, sent_event->wheelTicksX); | |
| 1891 EXPECT_EQ(2, sent_event->wheelTicksY); | |
| 1892 | |
| 1893 const WebMouseWheelEvent* filter_event = | |
| 1894 GetFilterWebInputEvent<WebMouseWheelEvent>(); | |
| 1895 EXPECT_EQ(10, filter_event->deltaX); | |
| 1896 EXPECT_EQ(10, filter_event->deltaY); | |
| 1897 EXPECT_EQ(1, filter_event->wheelTicksX); | |
| 1898 EXPECT_EQ(1, filter_event->wheelTicksY); | |
| 1899 | |
| 1900 EXPECT_EQ(sent_event->accelerationRatioX, filter_event->accelerationRatioX); | |
| 1901 EXPECT_EQ(sent_event->accelerationRatioY, filter_event->accelerationRatioY); | |
| 1902 } | |
| 1903 | |
| 1904 namespace { | |
| 1905 | |
| 1906 class InputRouterImplScaleTouchEventTest | |
| 1907 : public InputRouterImplScaleEventTest { | |
| 1908 public: | |
| 1909 InputRouterImplScaleTouchEventTest() {} | |
| 1910 | |
| 1911 void RunTouchEventTest(const std::string& name, WebTouchPoint::State state) { | |
|
tdresser
2015/11/27 21:35:20
Add a comment indicating the setup required to use
oshima
2015/11/30 23:01:12
Done.
| |
| 1912 SCOPED_TRACE(name); | |
| 1913 ASSERT_EQ(1u, process_->sink().message_count()); | |
| 1914 const WebTouchEvent* sent_event = GetSentWebInputEvent<WebTouchEvent>(); | |
| 1915 ASSERT_EQ(2u, sent_event->touchesLength); | |
| 1916 EXPECT_EQ(state, sent_event->touches[0].state); | |
| 1917 EXPECT_EQ(20, sent_event->touches[0].position.x); | |
| 1918 EXPECT_EQ(40, sent_event->touches[0].position.y); | |
| 1919 EXPECT_EQ(10, sent_event->touches[0].screenPosition.x); | |
| 1920 EXPECT_EQ(20, sent_event->touches[0].screenPosition.y); | |
| 1921 EXPECT_EQ(2, sent_event->touches[0].radiusX); | |
| 1922 EXPECT_EQ(2, sent_event->touches[0].radiusY); | |
| 1923 | |
| 1924 EXPECT_EQ(200, sent_event->touches[1].position.x); | |
| 1925 EXPECT_EQ(400, sent_event->touches[1].position.y); | |
| 1926 EXPECT_EQ(100, sent_event->touches[1].screenPosition.x); | |
| 1927 EXPECT_EQ(200, sent_event->touches[1].screenPosition.y); | |
| 1928 EXPECT_EQ(2, sent_event->touches[1].radiusX); | |
| 1929 EXPECT_EQ(2, sent_event->touches[1].radiusY); | |
| 1930 | |
| 1931 const WebTouchEvent* filter_event = GetFilterWebInputEvent<WebTouchEvent>(); | |
| 1932 ASSERT_EQ(2u, filter_event->touchesLength); | |
| 1933 EXPECT_EQ(10, filter_event->touches[0].position.x); | |
| 1934 EXPECT_EQ(20, filter_event->touches[0].position.y); | |
| 1935 EXPECT_EQ(10, filter_event->touches[0].screenPosition.x); | |
| 1936 EXPECT_EQ(20, filter_event->touches[0].screenPosition.y); | |
| 1937 EXPECT_EQ(1, filter_event->touches[0].radiusX); | |
| 1938 EXPECT_EQ(1, filter_event->touches[0].radiusY); | |
| 1939 | |
| 1940 EXPECT_EQ(100, filter_event->touches[1].position.x); | |
| 1941 EXPECT_EQ(200, filter_event->touches[1].position.y); | |
| 1942 EXPECT_EQ(100, filter_event->touches[1].screenPosition.x); | |
| 1943 EXPECT_EQ(200, filter_event->touches[1].screenPosition.y); | |
| 1944 EXPECT_EQ(1, filter_event->touches[1].radiusX); | |
| 1945 EXPECT_EQ(1, filter_event->touches[1].radiusY); | |
| 1946 } | |
| 1947 | |
| 1948 void FlushTouchEvent(WebInputEvent::Type type) { | |
| 1949 uint32 touch_event_id = SendTouchEvent(); | |
| 1950 SendTouchEventACK(type, INPUT_EVENT_ACK_STATE_CONSUMED, touch_event_id); | |
| 1951 ASSERT_TRUE(TouchEventQueueEmpty()); | |
| 1952 ASSERT_NE(0u, process_->sink().message_count()); | |
| 1953 } | |
| 1954 | |
| 1955 void ReleaseTouchPointAndAck(int index) { | |
| 1956 ReleaseTouchPoint(index); | |
| 1957 int release_event_id = SendTouchEvent(); | |
| 1958 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, | |
| 1959 release_event_id); | |
| 1960 } | |
| 1961 | |
| 1962 private: | |
| 1963 DISALLOW_COPY_AND_ASSIGN(InputRouterImplScaleTouchEventTest); | |
| 1964 }; | |
| 1965 | |
| 1966 } // namespace | |
| 1967 | |
| 1968 TEST_F(InputRouterImplScaleTouchEventTest, ScaleTouchEventTest) { | |
| 1969 // Press | |
| 1970 PressTouchPoint(10, 20); | |
| 1971 PressTouchPoint(100, 200); | |
| 1972 FlushTouchEvent(WebInputEvent::TouchStart); | |
| 1973 | |
| 1974 RunTouchEventTest("Press", WebTouchPoint::StatePressed); | |
| 1975 ReleaseTouchPointAndAck(1); | |
| 1976 ReleaseTouchPointAndAck(0); | |
| 1977 EXPECT_EQ(3u, GetSentMessageCountAndResetSink()); | |
| 1978 | |
| 1979 // Move | |
| 1980 PressTouchPoint(0, 0); | |
| 1981 PressTouchPoint(0, 0); | |
| 1982 FlushTouchEvent(WebInputEvent::TouchStart); | |
| 1983 process_->sink().ClearMessages(); | |
| 1984 | |
| 1985 MoveTouchPoint(0, 10, 20); | |
| 1986 MoveTouchPoint(1, 100, 200); | |
| 1987 FlushTouchEvent(WebInputEvent::TouchMove); | |
| 1988 RunTouchEventTest("Move", WebTouchPoint::StateMoved); | |
| 1989 ReleaseTouchPointAndAck(1); | |
| 1990 ReleaseTouchPointAndAck(0); | |
| 1991 EXPECT_EQ(3u, GetSentMessageCountAndResetSink()); | |
| 1992 | |
| 1993 // Release | |
| 1994 PressTouchPoint(10, 20); | |
| 1995 PressTouchPoint(100, 200); | |
| 1996 FlushTouchEvent(WebInputEvent::TouchMove); | |
| 1997 process_->sink().ClearMessages(); | |
| 1998 | |
| 1999 ReleaseTouchPoint(0); | |
| 2000 ReleaseTouchPoint(1); | |
| 2001 FlushTouchEvent(WebInputEvent::TouchEnd); | |
| 2002 RunTouchEventTest("Release", WebTouchPoint::StateReleased); | |
| 2003 | |
| 2004 // Cancel | |
| 2005 PressTouchPoint(10, 20); | |
| 2006 PressTouchPoint(100, 200); | |
| 2007 FlushTouchEvent(WebInputEvent::TouchStart); | |
| 2008 process_->sink().ClearMessages(); | |
| 2009 | |
| 2010 CancelTouchPoint(0); | |
| 2011 CancelTouchPoint(1); | |
| 2012 FlushTouchEvent(WebInputEvent::TouchCancel); | |
| 2013 RunTouchEventTest("Cancel", WebTouchPoint::StateCancelled); | |
| 2014 } | |
| 2015 | |
| 2016 namespace { | |
| 2017 | |
| 2018 class InputRouterImplScaleGestureEventTest | |
| 2019 : public InputRouterImplScaleEventTest { | |
| 2020 public: | |
| 2021 InputRouterImplScaleGestureEventTest() {} | |
| 2022 | |
| 2023 WebGestureEvent BuildGestureEvent(WebInputEvent::Type type, int x, int y) { | |
| 2024 auto event = SyntheticWebGestureEventBuilder::Build( | |
|
tdresser
2015/11/27 21:35:20
Some of the use of auto here seems a bit suspect t
oshima
2015/11/30 23:01:12
Done.
| |
| 2025 type, blink::WebGestureDeviceTouchpad); | |
| 2026 event.globalX = event.x = x; | |
| 2027 event.globalY = event.y = y; | |
| 2028 return event; | |
| 2029 } | |
| 2030 | |
| 2031 void TestTap(const std::string& name, WebInputEvent::Type type) { | |
| 2032 SCOPED_TRACE(name); | |
| 2033 auto event = BuildGestureEvent(type, 10, 20); | |
| 2034 event.data.tap.width = 30; | |
| 2035 event.data.tap.height = 40; | |
| 2036 SimulateGestureEvent(event); | |
| 2037 FlushGestureEvent(type); | |
| 2038 | |
| 2039 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); | |
| 2040 TestLocationInSentEvent(sent_event); | |
| 2041 EXPECT_EQ(60, sent_event->data.tap.width); | |
| 2042 EXPECT_EQ(80, sent_event->data.tap.height); | |
| 2043 | |
| 2044 const WebGestureEvent* filter_event = | |
| 2045 GetFilterWebInputEvent<WebGestureEvent>(); | |
| 2046 TestLocationInFilterEvent(filter_event); | |
| 2047 EXPECT_EQ(30, filter_event->data.tap.width); | |
| 2048 EXPECT_EQ(40, filter_event->data.tap.height); | |
| 2049 process_->sink().ClearMessages(); | |
| 2050 } | |
| 2051 | |
| 2052 void TestLongPress(const std::string& name, WebInputEvent::Type type) { | |
| 2053 auto event = BuildGestureEvent(type, 10, 20); | |
| 2054 event.data.longPress.width = 30; | |
| 2055 event.data.longPress.height = 40; | |
| 2056 SimulateGestureEvent(event); | |
| 2057 FlushGestureEvent(type); | |
| 2058 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); | |
| 2059 TestLocationInSentEvent(sent_event); | |
| 2060 EXPECT_EQ(60, sent_event->data.longPress.width); | |
| 2061 EXPECT_EQ(80, sent_event->data.longPress.height); | |
| 2062 | |
| 2063 const WebGestureEvent* filter_event = | |
| 2064 GetFilterWebInputEvent<WebGestureEvent>(); | |
| 2065 TestLocationInFilterEvent(filter_event); | |
| 2066 EXPECT_EQ(30, filter_event->data.longPress.width); | |
| 2067 EXPECT_EQ(40, filter_event->data.longPress.height); | |
| 2068 process_->sink().ClearMessages(); | |
| 2069 } | |
| 2070 | |
| 2071 void FlushGestureEvent(WebInputEvent::Type type) { | |
| 2072 SendInputEventACK(type, INPUT_EVENT_ACK_STATE_CONSUMED); | |
| 2073 ASSERT_NE(0u, process_->sink().message_count()); | |
| 2074 } | |
| 2075 | |
| 2076 void TestLocationInSentEvent(const WebGestureEvent* sent_event) { | |
|
tdresser
2015/11/27 21:35:20
Could we take the co-ordinates here as parameters?
oshima
2015/11/30 23:01:12
Done.
| |
| 2077 EXPECT_EQ(20, sent_event->x); | |
| 2078 EXPECT_EQ(40, sent_event->y); | |
| 2079 EXPECT_EQ(10, sent_event->globalX); | |
| 2080 EXPECT_EQ(20, sent_event->globalY); | |
| 2081 } | |
| 2082 | |
| 2083 void TestLocationInFilterEvent(const WebGestureEvent* filter_event) { | |
| 2084 EXPECT_EQ(10, filter_event->x); | |
| 2085 EXPECT_EQ(20, filter_event->y); | |
| 2086 EXPECT_EQ(10, filter_event->globalX); | |
| 2087 EXPECT_EQ(20, filter_event->globalY); | |
| 2088 } | |
| 2089 | |
| 2090 private: | |
| 2091 DISALLOW_COPY_AND_ASSIGN(InputRouterImplScaleGestureEventTest); | |
| 2092 }; | |
| 2093 | |
| 2094 } // namespace | |
| 2095 | |
| 2096 TEST_F(InputRouterImplScaleGestureEventTest, GestureScrollUpdate) { | |
| 2097 SimulateGestureScrollUpdateEvent(10.f, 20, 0, | |
| 2098 blink::WebGestureDeviceTouchpad); | |
| 2099 FlushGestureEvent(WebInputEvent::GestureScrollUpdate); | |
| 2100 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); | |
| 2101 | |
| 2102 EXPECT_EQ(20.f, sent_event->data.scrollUpdate.deltaX); | |
| 2103 EXPECT_EQ(40.f, sent_event->data.scrollUpdate.deltaY); | |
| 2104 | |
| 2105 const WebGestureEvent* filter_event = | |
| 2106 GetFilterWebInputEvent<WebGestureEvent>(); | |
| 2107 EXPECT_EQ(10.f, filter_event->data.scrollUpdate.deltaX); | |
| 2108 EXPECT_EQ(20.f, filter_event->data.scrollUpdate.deltaY); | |
| 2109 } | |
| 2110 | |
| 2111 TEST_F(InputRouterImplScaleGestureEventTest, GestureScrollBegin) { | |
| 2112 SimulateGestureEvent( | |
| 2113 SyntheticWebGestureEventBuilder::BuildScrollBegin(10.f, 20.f)); | |
| 2114 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); | |
| 2115 EXPECT_EQ(20.f, sent_event->data.scrollBegin.deltaXHint); | |
| 2116 EXPECT_EQ(40.f, sent_event->data.scrollBegin.deltaYHint); | |
| 2117 | |
| 2118 const WebGestureEvent* filter_event = | |
| 2119 GetFilterWebInputEvent<WebGestureEvent>(); | |
| 2120 EXPECT_EQ(10.f, filter_event->data.scrollBegin.deltaXHint); | |
| 2121 EXPECT_EQ(20.f, filter_event->data.scrollBegin.deltaYHint); | |
| 2122 } | |
| 2123 | |
| 2124 TEST_F(InputRouterImplScaleGestureEventTest, GesturePinchUpdate) { | |
| 2125 SimulateGesturePinchUpdateEvent(1.5f, 10, 20, 0, | |
| 2126 blink::WebGestureDeviceTouchpad); | |
| 2127 FlushGestureEvent(WebInputEvent::GesturePinchUpdate); | |
| 2128 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); | |
| 2129 TestLocationInSentEvent(sent_event); | |
| 2130 EXPECT_EQ(1.5f, sent_event->data.pinchUpdate.scale); | |
| 2131 | |
| 2132 const WebGestureEvent* filter_event = | |
| 2133 GetFilterWebInputEvent<WebGestureEvent>(); | |
| 2134 TestLocationInFilterEvent(filter_event); | |
| 2135 EXPECT_EQ(1.5f, filter_event->data.pinchUpdate.scale); | |
| 2136 } | |
| 2137 | |
| 2138 TEST_F(InputRouterImplScaleGestureEventTest, GestureTapDown) { | |
| 2139 auto event = BuildGestureEvent(WebInputEvent::GestureTapDown, 10, 20); | |
| 2140 event.data.tapDown.width = 30; | |
| 2141 event.data.tapDown.height = 40; | |
| 2142 SimulateGestureEvent(event); | |
| 2143 // FlushGestureEvent(WebInputEvent::GestureTapDown); | |
| 2144 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); | |
| 2145 TestLocationInSentEvent(sent_event); | |
| 2146 EXPECT_EQ(60, sent_event->data.tapDown.width); | |
| 2147 EXPECT_EQ(80, sent_event->data.tapDown.height); | |
| 2148 | |
| 2149 const WebGestureEvent* filter_event = | |
| 2150 GetFilterWebInputEvent<WebGestureEvent>(); | |
| 2151 TestLocationInFilterEvent(filter_event); | |
| 2152 EXPECT_EQ(30, filter_event->data.tapDown.width); | |
| 2153 EXPECT_EQ(40, filter_event->data.tapDown.height); | |
| 2154 } | |
| 2155 | |
| 2156 TEST_F(InputRouterImplScaleGestureEventTest, GestureTapOthers) { | |
| 2157 TestTap("GestureDoubleTap", WebInputEvent::GestureDoubleTap); | |
| 2158 TestTap("GestureTap", WebInputEvent::GestureTap); | |
| 2159 TestTap("GestureTapUnconfirmed", WebInputEvent::GestureTapUnconfirmed); | |
| 2160 } | |
| 2161 | |
| 2162 TEST_F(InputRouterImplScaleGestureEventTest, GestureShowPress) { | |
| 2163 auto event = BuildGestureEvent(WebInputEvent::GestureShowPress, 10, 20); | |
| 2164 event.data.showPress.width = 30; | |
| 2165 event.data.showPress.height = 40; | |
| 2166 SimulateGestureEvent(event); | |
| 2167 | |
| 2168 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); | |
| 2169 TestLocationInSentEvent(sent_event); | |
| 2170 EXPECT_EQ(60, sent_event->data.showPress.width); | |
| 2171 EXPECT_EQ(80, sent_event->data.showPress.height); | |
| 2172 | |
| 2173 const WebGestureEvent* filter_event = | |
| 2174 GetFilterWebInputEvent<WebGestureEvent>(); | |
| 2175 TestLocationInFilterEvent(filter_event); | |
| 2176 EXPECT_EQ(30, filter_event->data.showPress.width); | |
| 2177 EXPECT_EQ(40, filter_event->data.showPress.height); | |
| 2178 } | |
| 2179 | |
| 2180 TEST_F(InputRouterImplScaleGestureEventTest, GestureLongPress) { | |
| 2181 TestLongPress("LongPress", WebInputEvent::GestureLongPress); | |
| 2182 TestLongPress("LongPap", WebInputEvent::GestureLongTap); | |
| 2183 } | |
| 2184 | |
| 2185 TEST_F(InputRouterImplScaleGestureEventTest, GestureTwoFingerTap) { | |
| 2186 auto event = BuildGestureEvent(WebInputEvent::GestureTwoFingerTap, 10, 20); | |
| 2187 event.data.twoFingerTap.firstFingerWidth = 30; | |
| 2188 event.data.twoFingerTap.firstFingerHeight = 40; | |
| 2189 SimulateGestureEvent(event); | |
| 2190 | |
| 2191 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); | |
| 2192 EXPECT_EQ(20, sent_event->x); | |
| 2193 EXPECT_EQ(40, sent_event->y); | |
| 2194 EXPECT_EQ(60, sent_event->data.twoFingerTap.firstFingerWidth); | |
| 2195 EXPECT_EQ(80, sent_event->data.twoFingerTap.firstFingerHeight); | |
| 2196 | |
| 2197 const WebGestureEvent* filter_event = | |
| 2198 GetFilterWebInputEvent<WebGestureEvent>(); | |
| 2199 EXPECT_EQ(10, filter_event->x); | |
| 2200 EXPECT_EQ(20, filter_event->y); | |
| 2201 EXPECT_EQ(30, filter_event->data.twoFingerTap.firstFingerWidth); | |
| 2202 EXPECT_EQ(40, filter_event->data.twoFingerTap.firstFingerHeight); | |
| 2203 } | |
| 2204 | |
| 2205 TEST_F(InputRouterImplScaleGestureEventTest, GestureFlingStart) { | |
| 2206 auto event = BuildGestureEvent(WebInputEvent::GestureFlingStart, 10, 20); | |
| 2207 event.data.flingStart.velocityX = 30; | |
| 2208 event.data.flingStart.velocityY = 40; | |
| 2209 SimulateGestureEvent(event); | |
| 2210 | |
| 2211 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); | |
| 2212 TestLocationInSentEvent(sent_event); | |
| 2213 EXPECT_EQ(60, sent_event->data.flingStart.velocityX); | |
| 2214 EXPECT_EQ(80, sent_event->data.flingStart.velocityY); | |
| 2215 | |
| 2216 const WebGestureEvent* filter_event = | |
| 2217 GetFilterWebInputEvent<WebGestureEvent>(); | |
| 2218 TestLocationInFilterEvent(filter_event); | |
| 2219 EXPECT_EQ(30, filter_event->data.flingStart.velocityX); | |
| 2220 EXPECT_EQ(40, filter_event->data.flingStart.velocityY); | |
| 2221 } | |
| 2222 | |
| 1820 } // namespace content | 2223 } // namespace content |
| OLD | NEW |