| 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 // Test tests if two finger touch event at (10, 20) and (100, 200) are |
| 1912 // properly scaled. The touch event must be generated ans flushed into |
| 1913 // the message sink prior to this method. |
| 1914 void RunTouchEventTest(const std::string& name, WebTouchPoint::State state) { |
| 1915 SCOPED_TRACE(name); |
| 1916 ASSERT_EQ(1u, process_->sink().message_count()); |
| 1917 const WebTouchEvent* sent_event = GetSentWebInputEvent<WebTouchEvent>(); |
| 1918 ASSERT_EQ(2u, sent_event->touchesLength); |
| 1919 EXPECT_EQ(state, sent_event->touches[0].state); |
| 1920 EXPECT_EQ(20, sent_event->touches[0].position.x); |
| 1921 EXPECT_EQ(40, sent_event->touches[0].position.y); |
| 1922 EXPECT_EQ(10, sent_event->touches[0].screenPosition.x); |
| 1923 EXPECT_EQ(20, sent_event->touches[0].screenPosition.y); |
| 1924 EXPECT_EQ(2, sent_event->touches[0].radiusX); |
| 1925 EXPECT_EQ(2, sent_event->touches[0].radiusY); |
| 1926 |
| 1927 EXPECT_EQ(200, sent_event->touches[1].position.x); |
| 1928 EXPECT_EQ(400, sent_event->touches[1].position.y); |
| 1929 EXPECT_EQ(100, sent_event->touches[1].screenPosition.x); |
| 1930 EXPECT_EQ(200, sent_event->touches[1].screenPosition.y); |
| 1931 EXPECT_EQ(2, sent_event->touches[1].radiusX); |
| 1932 EXPECT_EQ(2, sent_event->touches[1].radiusY); |
| 1933 |
| 1934 const WebTouchEvent* filter_event = GetFilterWebInputEvent<WebTouchEvent>(); |
| 1935 ASSERT_EQ(2u, filter_event->touchesLength); |
| 1936 EXPECT_EQ(10, filter_event->touches[0].position.x); |
| 1937 EXPECT_EQ(20, filter_event->touches[0].position.y); |
| 1938 EXPECT_EQ(10, filter_event->touches[0].screenPosition.x); |
| 1939 EXPECT_EQ(20, filter_event->touches[0].screenPosition.y); |
| 1940 EXPECT_EQ(1, filter_event->touches[0].radiusX); |
| 1941 EXPECT_EQ(1, filter_event->touches[0].radiusY); |
| 1942 |
| 1943 EXPECT_EQ(100, filter_event->touches[1].position.x); |
| 1944 EXPECT_EQ(200, filter_event->touches[1].position.y); |
| 1945 EXPECT_EQ(100, filter_event->touches[1].screenPosition.x); |
| 1946 EXPECT_EQ(200, filter_event->touches[1].screenPosition.y); |
| 1947 EXPECT_EQ(1, filter_event->touches[1].radiusX); |
| 1948 EXPECT_EQ(1, filter_event->touches[1].radiusY); |
| 1949 } |
| 1950 |
| 1951 void FlushTouchEvent(WebInputEvent::Type type) { |
| 1952 uint32 touch_event_id = SendTouchEvent(); |
| 1953 SendTouchEventACK(type, INPUT_EVENT_ACK_STATE_CONSUMED, touch_event_id); |
| 1954 ASSERT_TRUE(TouchEventQueueEmpty()); |
| 1955 ASSERT_NE(0u, process_->sink().message_count()); |
| 1956 } |
| 1957 |
| 1958 void ReleaseTouchPointAndAck(int index) { |
| 1959 ReleaseTouchPoint(index); |
| 1960 int release_event_id = SendTouchEvent(); |
| 1961 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1962 release_event_id); |
| 1963 } |
| 1964 |
| 1965 private: |
| 1966 DISALLOW_COPY_AND_ASSIGN(InputRouterImplScaleTouchEventTest); |
| 1967 }; |
| 1968 |
| 1969 } // namespace |
| 1970 |
| 1971 TEST_F(InputRouterImplScaleTouchEventTest, ScaleTouchEventTest) { |
| 1972 // Press |
| 1973 PressTouchPoint(10, 20); |
| 1974 PressTouchPoint(100, 200); |
| 1975 FlushTouchEvent(WebInputEvent::TouchStart); |
| 1976 |
| 1977 RunTouchEventTest("Press", WebTouchPoint::StatePressed); |
| 1978 ReleaseTouchPointAndAck(1); |
| 1979 ReleaseTouchPointAndAck(0); |
| 1980 EXPECT_EQ(3u, GetSentMessageCountAndResetSink()); |
| 1981 |
| 1982 // Move |
| 1983 PressTouchPoint(0, 0); |
| 1984 PressTouchPoint(0, 0); |
| 1985 FlushTouchEvent(WebInputEvent::TouchStart); |
| 1986 process_->sink().ClearMessages(); |
| 1987 |
| 1988 MoveTouchPoint(0, 10, 20); |
| 1989 MoveTouchPoint(1, 100, 200); |
| 1990 FlushTouchEvent(WebInputEvent::TouchMove); |
| 1991 RunTouchEventTest("Move", WebTouchPoint::StateMoved); |
| 1992 ReleaseTouchPointAndAck(1); |
| 1993 ReleaseTouchPointAndAck(0); |
| 1994 EXPECT_EQ(3u, GetSentMessageCountAndResetSink()); |
| 1995 |
| 1996 // Release |
| 1997 PressTouchPoint(10, 20); |
| 1998 PressTouchPoint(100, 200); |
| 1999 FlushTouchEvent(WebInputEvent::TouchMove); |
| 2000 process_->sink().ClearMessages(); |
| 2001 |
| 2002 ReleaseTouchPoint(0); |
| 2003 ReleaseTouchPoint(1); |
| 2004 FlushTouchEvent(WebInputEvent::TouchEnd); |
| 2005 RunTouchEventTest("Release", WebTouchPoint::StateReleased); |
| 2006 |
| 2007 // Cancel |
| 2008 PressTouchPoint(10, 20); |
| 2009 PressTouchPoint(100, 200); |
| 2010 FlushTouchEvent(WebInputEvent::TouchStart); |
| 2011 process_->sink().ClearMessages(); |
| 2012 |
| 2013 CancelTouchPoint(0); |
| 2014 CancelTouchPoint(1); |
| 2015 FlushTouchEvent(WebInputEvent::TouchCancel); |
| 2016 RunTouchEventTest("Cancel", WebTouchPoint::StateCancelled); |
| 2017 } |
| 2018 |
| 2019 namespace { |
| 2020 |
| 2021 class InputRouterImplScaleGestureEventTest |
| 2022 : public InputRouterImplScaleEventTest { |
| 2023 public: |
| 2024 InputRouterImplScaleGestureEventTest() {} |
| 2025 |
| 2026 WebGestureEvent BuildGestureEvent(WebInputEvent::Type type, |
| 2027 const gfx::Point& point) { |
| 2028 WebGestureEvent event = SyntheticWebGestureEventBuilder::Build( |
| 2029 type, blink::WebGestureDeviceTouchpad); |
| 2030 event.globalX = event.x = point.x(); |
| 2031 event.globalY = event.y = point.y(); |
| 2032 return event; |
| 2033 } |
| 2034 |
| 2035 void TestTap(const std::string& name, WebInputEvent::Type type) { |
| 2036 SCOPED_TRACE(name); |
| 2037 const gfx::Point orig(10, 20), scaled(20, 40); |
| 2038 WebGestureEvent event = BuildGestureEvent(type, orig); |
| 2039 event.data.tap.width = 30; |
| 2040 event.data.tap.height = 40; |
| 2041 SimulateGestureEvent(event); |
| 2042 FlushGestureEvent(type); |
| 2043 |
| 2044 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); |
| 2045 TestLocationInSentEvent(sent_event, orig, scaled); |
| 2046 EXPECT_EQ(60, sent_event->data.tap.width); |
| 2047 EXPECT_EQ(80, sent_event->data.tap.height); |
| 2048 |
| 2049 const WebGestureEvent* filter_event = |
| 2050 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2051 TestLocationInFilterEvent(filter_event, orig); |
| 2052 EXPECT_EQ(30, filter_event->data.tap.width); |
| 2053 EXPECT_EQ(40, filter_event->data.tap.height); |
| 2054 process_->sink().ClearMessages(); |
| 2055 } |
| 2056 |
| 2057 void TestLongPress(const std::string& name, WebInputEvent::Type type) { |
| 2058 const gfx::Point orig(10, 20), scaled(20, 40); |
| 2059 WebGestureEvent event = BuildGestureEvent(type, orig); |
| 2060 event.data.longPress.width = 30; |
| 2061 event.data.longPress.height = 40; |
| 2062 SimulateGestureEvent(event); |
| 2063 FlushGestureEvent(type); |
| 2064 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); |
| 2065 TestLocationInSentEvent(sent_event, orig, scaled); |
| 2066 EXPECT_EQ(60, sent_event->data.longPress.width); |
| 2067 EXPECT_EQ(80, sent_event->data.longPress.height); |
| 2068 |
| 2069 const WebGestureEvent* filter_event = |
| 2070 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2071 TestLocationInFilterEvent(filter_event, orig); |
| 2072 EXPECT_EQ(30, filter_event->data.longPress.width); |
| 2073 EXPECT_EQ(40, filter_event->data.longPress.height); |
| 2074 process_->sink().ClearMessages(); |
| 2075 } |
| 2076 |
| 2077 void FlushGestureEvent(WebInputEvent::Type type) { |
| 2078 SendInputEventACK(type, INPUT_EVENT_ACK_STATE_CONSUMED); |
| 2079 ASSERT_NE(0u, process_->sink().message_count()); |
| 2080 } |
| 2081 |
| 2082 void TestLocationInSentEvent(const WebGestureEvent* sent_event, |
| 2083 const gfx::Point& orig, |
| 2084 const gfx::Point& scaled) { |
| 2085 EXPECT_EQ(20, sent_event->x); |
| 2086 EXPECT_EQ(40, sent_event->y); |
| 2087 EXPECT_EQ(10, sent_event->globalX); |
| 2088 EXPECT_EQ(20, sent_event->globalY); |
| 2089 } |
| 2090 |
| 2091 void TestLocationInFilterEvent(const WebGestureEvent* filter_event, |
| 2092 const gfx::Point& point) { |
| 2093 EXPECT_EQ(10, filter_event->x); |
| 2094 EXPECT_EQ(20, filter_event->y); |
| 2095 EXPECT_EQ(10, filter_event->globalX); |
| 2096 EXPECT_EQ(20, filter_event->globalY); |
| 2097 } |
| 2098 |
| 2099 private: |
| 2100 DISALLOW_COPY_AND_ASSIGN(InputRouterImplScaleGestureEventTest); |
| 2101 }; |
| 2102 |
| 2103 } // namespace |
| 2104 |
| 2105 TEST_F(InputRouterImplScaleGestureEventTest, GestureScrollUpdate) { |
| 2106 SimulateGestureScrollUpdateEvent(10.f, 20, 0, |
| 2107 blink::WebGestureDeviceTouchpad); |
| 2108 FlushGestureEvent(WebInputEvent::GestureScrollUpdate); |
| 2109 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); |
| 2110 |
| 2111 EXPECT_EQ(20.f, sent_event->data.scrollUpdate.deltaX); |
| 2112 EXPECT_EQ(40.f, sent_event->data.scrollUpdate.deltaY); |
| 2113 |
| 2114 const WebGestureEvent* filter_event = |
| 2115 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2116 EXPECT_EQ(10.f, filter_event->data.scrollUpdate.deltaX); |
| 2117 EXPECT_EQ(20.f, filter_event->data.scrollUpdate.deltaY); |
| 2118 } |
| 2119 |
| 2120 TEST_F(InputRouterImplScaleGestureEventTest, GestureScrollBegin) { |
| 2121 SimulateGestureEvent( |
| 2122 SyntheticWebGestureEventBuilder::BuildScrollBegin(10.f, 20.f)); |
| 2123 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); |
| 2124 EXPECT_EQ(20.f, sent_event->data.scrollBegin.deltaXHint); |
| 2125 EXPECT_EQ(40.f, sent_event->data.scrollBegin.deltaYHint); |
| 2126 |
| 2127 const WebGestureEvent* filter_event = |
| 2128 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2129 EXPECT_EQ(10.f, filter_event->data.scrollBegin.deltaXHint); |
| 2130 EXPECT_EQ(20.f, filter_event->data.scrollBegin.deltaYHint); |
| 2131 } |
| 2132 |
| 2133 TEST_F(InputRouterImplScaleGestureEventTest, GesturePinchUpdate) { |
| 2134 const gfx::Point orig(10, 20), scaled(20, 40); |
| 2135 SimulateGesturePinchUpdateEvent(1.5f, orig.x(), orig.y(), 0, |
| 2136 blink::WebGestureDeviceTouchpad); |
| 2137 FlushGestureEvent(WebInputEvent::GesturePinchUpdate); |
| 2138 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); |
| 2139 TestLocationInSentEvent(sent_event, orig, scaled); |
| 2140 EXPECT_EQ(1.5f, sent_event->data.pinchUpdate.scale); |
| 2141 |
| 2142 const WebGestureEvent* filter_event = |
| 2143 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2144 TestLocationInFilterEvent(filter_event, orig); |
| 2145 EXPECT_EQ(1.5f, filter_event->data.pinchUpdate.scale); |
| 2146 } |
| 2147 |
| 2148 TEST_F(InputRouterImplScaleGestureEventTest, GestureTapDown) { |
| 2149 const gfx::Point orig(10, 20), scaled(20, 40); |
| 2150 WebGestureEvent event = |
| 2151 BuildGestureEvent(WebInputEvent::GestureTapDown, orig); |
| 2152 event.data.tapDown.width = 30; |
| 2153 event.data.tapDown.height = 40; |
| 2154 SimulateGestureEvent(event); |
| 2155 // FlushGestureEvent(WebInputEvent::GestureTapDown); |
| 2156 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); |
| 2157 TestLocationInSentEvent(sent_event, orig, scaled); |
| 2158 EXPECT_EQ(60, sent_event->data.tapDown.width); |
| 2159 EXPECT_EQ(80, sent_event->data.tapDown.height); |
| 2160 |
| 2161 const WebGestureEvent* filter_event = |
| 2162 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2163 TestLocationInFilterEvent(filter_event, orig); |
| 2164 EXPECT_EQ(30, filter_event->data.tapDown.width); |
| 2165 EXPECT_EQ(40, filter_event->data.tapDown.height); |
| 2166 } |
| 2167 |
| 2168 TEST_F(InputRouterImplScaleGestureEventTest, GestureTapOthers) { |
| 2169 TestTap("GestureDoubleTap", WebInputEvent::GestureDoubleTap); |
| 2170 TestTap("GestureTap", WebInputEvent::GestureTap); |
| 2171 TestTap("GestureTapUnconfirmed", WebInputEvent::GestureTapUnconfirmed); |
| 2172 } |
| 2173 |
| 2174 TEST_F(InputRouterImplScaleGestureEventTest, GestureShowPress) { |
| 2175 const gfx::Point orig(10, 20), scaled(20, 40); |
| 2176 WebGestureEvent event = |
| 2177 BuildGestureEvent(WebInputEvent::GestureShowPress, orig); |
| 2178 event.data.showPress.width = 30; |
| 2179 event.data.showPress.height = 40; |
| 2180 SimulateGestureEvent(event); |
| 2181 |
| 2182 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); |
| 2183 TestLocationInSentEvent(sent_event, orig, scaled); |
| 2184 EXPECT_EQ(60, sent_event->data.showPress.width); |
| 2185 EXPECT_EQ(80, sent_event->data.showPress.height); |
| 2186 |
| 2187 const WebGestureEvent* filter_event = |
| 2188 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2189 TestLocationInFilterEvent(filter_event, orig); |
| 2190 EXPECT_EQ(30, filter_event->data.showPress.width); |
| 2191 EXPECT_EQ(40, filter_event->data.showPress.height); |
| 2192 } |
| 2193 |
| 2194 TEST_F(InputRouterImplScaleGestureEventTest, GestureLongPress) { |
| 2195 TestLongPress("LongPress", WebInputEvent::GestureLongPress); |
| 2196 TestLongPress("LongPap", WebInputEvent::GestureLongTap); |
| 2197 } |
| 2198 |
| 2199 TEST_F(InputRouterImplScaleGestureEventTest, GestureTwoFingerTap) { |
| 2200 WebGestureEvent event = |
| 2201 BuildGestureEvent(WebInputEvent::GestureTwoFingerTap, gfx::Point(10, 20)); |
| 2202 event.data.twoFingerTap.firstFingerWidth = 30; |
| 2203 event.data.twoFingerTap.firstFingerHeight = 40; |
| 2204 SimulateGestureEvent(event); |
| 2205 |
| 2206 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); |
| 2207 EXPECT_EQ(20, sent_event->x); |
| 2208 EXPECT_EQ(40, sent_event->y); |
| 2209 EXPECT_EQ(60, sent_event->data.twoFingerTap.firstFingerWidth); |
| 2210 EXPECT_EQ(80, sent_event->data.twoFingerTap.firstFingerHeight); |
| 2211 |
| 2212 const WebGestureEvent* filter_event = |
| 2213 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2214 EXPECT_EQ(10, filter_event->x); |
| 2215 EXPECT_EQ(20, filter_event->y); |
| 2216 EXPECT_EQ(30, filter_event->data.twoFingerTap.firstFingerWidth); |
| 2217 EXPECT_EQ(40, filter_event->data.twoFingerTap.firstFingerHeight); |
| 2218 } |
| 2219 |
| 2220 TEST_F(InputRouterImplScaleGestureEventTest, GestureFlingStart) { |
| 2221 const gfx::Point orig(10, 20), scaled(20, 40); |
| 2222 WebGestureEvent event = BuildGestureEvent( |
| 2223 WebInputEvent::GestureFlingStart, orig); |
| 2224 event.data.flingStart.velocityX = 30; |
| 2225 event.data.flingStart.velocityY = 40; |
| 2226 SimulateGestureEvent(event); |
| 2227 |
| 2228 const WebGestureEvent* sent_event = GetSentWebInputEvent<WebGestureEvent>(); |
| 2229 TestLocationInSentEvent(sent_event, orig, scaled); |
| 2230 EXPECT_EQ(60, sent_event->data.flingStart.velocityX); |
| 2231 EXPECT_EQ(80, sent_event->data.flingStart.velocityY); |
| 2232 |
| 2233 const WebGestureEvent* filter_event = |
| 2234 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2235 TestLocationInFilterEvent(filter_event, orig); |
| 2236 EXPECT_EQ(30, filter_event->data.flingStart.velocityX); |
| 2237 EXPECT_EQ(40, filter_event->data.flingStart.velocityY); |
| 2238 } |
| 2239 |
| 1820 } // namespace content | 2240 } // namespace content |
| OLD | NEW |