OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 1969 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1980 | 1980 |
1981 // TODO(bokan): Technically incorrect, event positions should be in viewport | 1981 // TODO(bokan): Technically incorrect, event positions should be in viewport |
1982 // space. crbug.com/371902. | 1982 // space. crbug.com/371902. |
1983 IntPoint center = | 1983 IntPoint center = |
1984 m_webViewHelper.webView() | 1984 m_webViewHelper.webView() |
1985 ->mainFrameImpl() | 1985 ->mainFrameImpl() |
1986 ->frameView() | 1986 ->frameView() |
1987 ->contentsToScreen(element->layoutObject()->absoluteBoundingBoxRect()) | 1987 ->contentsToScreen(element->layoutObject()->absoluteBoundingBoxRect()) |
1988 .center(); | 1988 .center(); |
1989 | 1989 |
1990 WebGestureEvent event; | 1990 WebGestureEvent event(type, WebInputEvent::NoModifiers, |
1991 event.type = type; | 1991 WebInputEvent::TimeStampForTesting); |
| 1992 |
1992 event.sourceDevice = WebGestureDeviceTouchscreen; | 1993 event.sourceDevice = WebGestureDeviceTouchscreen; |
1993 event.x = center.x(); | 1994 event.x = center.x(); |
1994 event.y = center.y(); | 1995 event.y = center.y(); |
1995 | 1996 |
1996 m_webViewHelper.webView()->handleInputEvent(event); | 1997 m_webViewHelper.webView()->handleInputEvent(event); |
1997 runPendingTasks(); | 1998 runPendingTasks(); |
1998 return true; | 1999 return true; |
1999 } | 2000 } |
2000 | 2001 |
2001 bool WebViewTest::tapElementById(WebInputEvent::Type type, | 2002 bool WebViewTest::tapElementById(WebInputEvent::Type type, |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2044 EXPECT_TRUE(client.contentDetectionRequested()); | 2045 EXPECT_TRUE(client.contentDetectionRequested()); |
2045 EXPECT_FALSE(client.scheduledIntentURL().isValid()); | 2046 EXPECT_FALSE(client.scheduledIntentURL().isValid()); |
2046 | 2047 |
2047 WebURL intentURL = toKURL(m_baseURL); | 2048 WebURL intentURL = toKURL(m_baseURL); |
2048 client.setContentDetectionResult(intentURL); | 2049 client.setContentDetectionResult(intentURL); |
2049 EXPECT_TRUE(tapElementById(WebInputEvent::GestureTap, noListener)); | 2050 EXPECT_TRUE(tapElementById(WebInputEvent::GestureTap, noListener)); |
2050 EXPECT_TRUE(client.scheduledIntentURL() == intentURL); | 2051 EXPECT_TRUE(client.scheduledIntentURL() == intentURL); |
2051 EXPECT_TRUE(client.wasInMainFrame()); | 2052 EXPECT_TRUE(client.wasInMainFrame()); |
2052 | 2053 |
2053 // Tapping elsewhere should cancel the scheduled intent. | 2054 // Tapping elsewhere should cancel the scheduled intent. |
2054 WebGestureEvent event; | 2055 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
2055 event.type = WebInputEvent::GestureTap; | 2056 WebInputEvent::TimeStampForTesting); |
2056 event.sourceDevice = WebGestureDeviceTouchscreen; | 2057 event.sourceDevice = WebGestureDeviceTouchscreen; |
2057 webView->handleInputEvent(event); | 2058 webView->handleInputEvent(event); |
2058 runPendingTasks(); | 2059 runPendingTasks(); |
2059 EXPECT_TRUE(client.pendingIntentsCancelled()); | 2060 EXPECT_TRUE(client.pendingIntentsCancelled()); |
2060 | 2061 |
2061 // Explicitly reset to break dependency on locally scoped client. | 2062 // Explicitly reset to break dependency on locally scoped client. |
2062 m_webViewHelper.reset(); | 2063 m_webViewHelper.reset(); |
2063 } | 2064 } |
2064 | 2065 |
2065 TEST_P(WebViewTest, ContentDetectionInIframe) { | 2066 TEST_P(WebViewTest, ContentDetectionInIframe) { |
(...skipping 22 matching lines...) Expand all Loading... |
2088 | 2089 |
2089 // Explicitly reset to break dependency on locally scoped client. | 2090 // Explicitly reset to break dependency on locally scoped client. |
2090 m_webViewHelper.reset(); | 2091 m_webViewHelper.reset(); |
2091 } | 2092 } |
2092 | 2093 |
2093 TEST_P(WebViewTest, ClientTapHandling) { | 2094 TEST_P(WebViewTest, ClientTapHandling) { |
2094 TapHandlingWebViewClient client; | 2095 TapHandlingWebViewClient client; |
2095 client.reset(); | 2096 client.reset(); |
2096 WebView* webView = | 2097 WebView* webView = |
2097 m_webViewHelper.initializeAndLoad("about:blank", true, 0, &client); | 2098 m_webViewHelper.initializeAndLoad("about:blank", true, 0, &client); |
2098 WebGestureEvent event; | 2099 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
2099 event.type = WebInputEvent::GestureTap; | 2100 WebInputEvent::TimeStampForTesting); |
2100 event.sourceDevice = WebGestureDeviceTouchscreen; | 2101 event.sourceDevice = WebGestureDeviceTouchscreen; |
2101 event.x = 3; | 2102 event.x = 3; |
2102 event.y = 8; | 2103 event.y = 8; |
2103 webView->handleInputEvent(event); | 2104 webView->handleInputEvent(event); |
2104 runPendingTasks(); | 2105 runPendingTasks(); |
2105 EXPECT_EQ(3, client.tapX()); | 2106 EXPECT_EQ(3, client.tapX()); |
2106 EXPECT_EQ(8, client.tapY()); | 2107 EXPECT_EQ(8, client.tapY()); |
2107 client.reset(); | 2108 client.reset(); |
2108 event.type = WebInputEvent::GestureLongPress; | 2109 event.setType(WebInputEvent::GestureLongPress); |
2109 event.x = 25; | 2110 event.x = 25; |
2110 event.y = 7; | 2111 event.y = 7; |
2111 webView->handleInputEvent(event); | 2112 webView->handleInputEvent(event); |
2112 runPendingTasks(); | 2113 runPendingTasks(); |
2113 EXPECT_EQ(25, client.longpressX()); | 2114 EXPECT_EQ(25, client.longpressX()); |
2114 EXPECT_EQ(7, client.longpressY()); | 2115 EXPECT_EQ(7, client.longpressY()); |
2115 | 2116 |
2116 // Explicitly reset to break dependency on locally scoped client. | 2117 // Explicitly reset to break dependency on locally scoped client. |
2117 m_webViewHelper.reset(); | 2118 m_webViewHelper.reset(); |
2118 } | 2119 } |
2119 | 2120 |
2120 TEST_P(WebViewTest, ClientTapHandlingNullWebViewClient) { | 2121 TEST_P(WebViewTest, ClientTapHandlingNullWebViewClient) { |
2121 WebViewImpl* webView = | 2122 WebViewImpl* webView = |
2122 WebViewImpl::create(nullptr, WebPageVisibilityStateVisible); | 2123 WebViewImpl::create(nullptr, WebPageVisibilityStateVisible); |
2123 FrameTestHelpers::TestWebFrameClient webFrameClient; | 2124 FrameTestHelpers::TestWebFrameClient webFrameClient; |
2124 FrameTestHelpers::TestWebWidgetClient webWidgetClient; | 2125 FrameTestHelpers::TestWebWidgetClient webWidgetClient; |
2125 WebLocalFrame* localFrame = | 2126 WebLocalFrame* localFrame = |
2126 WebLocalFrame::create(WebTreeScopeType::Document, &webFrameClient); | 2127 WebLocalFrame::create(WebTreeScopeType::Document, &webFrameClient); |
2127 webView->setMainFrame(localFrame); | 2128 webView->setMainFrame(localFrame); |
2128 | 2129 |
2129 // TODO(dcheng): The main frame widget currently has a special case. | 2130 // TODO(dcheng): The main frame widget currently has a special case. |
2130 // Eliminate this once WebView is no longer a WebWidget. | 2131 // Eliminate this once WebView is no longer a WebWidget. |
2131 blink::WebFrameWidget::create(&webWidgetClient, webView, localFrame); | 2132 blink::WebFrameWidget::create(&webWidgetClient, webView, localFrame); |
2132 | 2133 |
2133 WebGestureEvent event; | 2134 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
2134 event.type = WebInputEvent::GestureTap; | 2135 WebInputEvent::TimeStampForTesting); |
2135 event.sourceDevice = WebGestureDeviceTouchscreen; | 2136 event.sourceDevice = WebGestureDeviceTouchscreen; |
2136 event.x = 3; | 2137 event.x = 3; |
2137 event.y = 8; | 2138 event.y = 8; |
2138 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); | 2139 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); |
2139 webView->close(); | 2140 webView->close(); |
2140 } | 2141 } |
2141 | 2142 |
2142 TEST_P(WebViewTest, LongPressEmptyDiv) { | 2143 TEST_P(WebViewTest, LongPressEmptyDiv) { |
2143 URLTestHelpers::registerMockedURLFromBaseURL( | 2144 URLTestHelpers::registerMockedURLFromBaseURL( |
2144 WebString::fromUTF8(m_baseURL.c_str()), | 2145 WebString::fromUTF8(m_baseURL.c_str()), |
2145 WebString::fromUTF8("long_press_empty_div.html")); | 2146 WebString::fromUTF8("long_press_empty_div.html")); |
2146 | 2147 |
2147 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2148 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2148 m_baseURL + "long_press_empty_div.html", true); | 2149 m_baseURL + "long_press_empty_div.html", true); |
2149 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2150 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2150 webView->resize(WebSize(500, 300)); | 2151 webView->resize(WebSize(500, 300)); |
2151 webView->updateAllLifecyclePhases(); | 2152 webView->updateAllLifecyclePhases(); |
2152 runPendingTasks(); | 2153 runPendingTasks(); |
2153 | 2154 |
2154 WebGestureEvent event; | 2155 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2155 event.type = WebInputEvent::GestureLongPress; | 2156 WebInputEvent::NoModifiers, |
| 2157 WebInputEvent::TimeStampForTesting); |
2156 event.sourceDevice = WebGestureDeviceTouchscreen; | 2158 event.sourceDevice = WebGestureDeviceTouchscreen; |
2157 event.x = 250; | 2159 event.x = 250; |
2158 event.y = 150; | 2160 event.y = 150; |
2159 | 2161 |
2160 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); | 2162 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); |
2161 } | 2163 } |
2162 | 2164 |
2163 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { | 2165 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { |
2164 URLTestHelpers::registerMockedURLFromBaseURL( | 2166 URLTestHelpers::registerMockedURLFromBaseURL( |
2165 WebString::fromUTF8(m_baseURL.c_str()), | 2167 WebString::fromUTF8(m_baseURL.c_str()), |
2166 WebString::fromUTF8("long_press_empty_div.html")); | 2168 WebString::fromUTF8("long_press_empty_div.html")); |
2167 | 2169 |
2168 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2170 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2169 m_baseURL + "long_press_empty_div.html", true); | 2171 m_baseURL + "long_press_empty_div.html", true); |
2170 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2172 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
2171 webView->resize(WebSize(500, 300)); | 2173 webView->resize(WebSize(500, 300)); |
2172 webView->updateAllLifecyclePhases(); | 2174 webView->updateAllLifecyclePhases(); |
2173 runPendingTasks(); | 2175 runPendingTasks(); |
2174 | 2176 |
2175 WebGestureEvent event; | 2177 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2176 event.type = WebInputEvent::GestureLongPress; | 2178 WebInputEvent::NoModifiers, |
| 2179 WebInputEvent::TimeStampForTesting); |
2177 event.sourceDevice = WebGestureDeviceTouchscreen; | 2180 event.sourceDevice = WebGestureDeviceTouchscreen; |
2178 event.x = 250; | 2181 event.x = 250; |
2179 event.y = 150; | 2182 event.y = 150; |
2180 | 2183 |
2181 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2184 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2182 webView->handleInputEvent(event)); | 2185 webView->handleInputEvent(event)); |
2183 } | 2186 } |
2184 | 2187 |
2185 TEST_P(WebViewTest, LongPressObject) { | 2188 TEST_P(WebViewTest, LongPressObject) { |
2186 URLTestHelpers::registerMockedURLFromBaseURL( | 2189 URLTestHelpers::registerMockedURLFromBaseURL( |
2187 WebString::fromUTF8(m_baseURL.c_str()), | 2190 WebString::fromUTF8(m_baseURL.c_str()), |
2188 WebString::fromUTF8("long_press_object.html")); | 2191 WebString::fromUTF8("long_press_object.html")); |
2189 | 2192 |
2190 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2193 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2191 m_baseURL + "long_press_object.html", true); | 2194 m_baseURL + "long_press_object.html", true); |
2192 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2195 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
2193 webView->resize(WebSize(500, 300)); | 2196 webView->resize(WebSize(500, 300)); |
2194 webView->updateAllLifecyclePhases(); | 2197 webView->updateAllLifecyclePhases(); |
2195 runPendingTasks(); | 2198 runPendingTasks(); |
2196 | 2199 |
2197 WebGestureEvent event; | 2200 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2198 event.type = WebInputEvent::GestureLongPress; | 2201 WebInputEvent::NoModifiers, |
| 2202 WebInputEvent::TimeStampForTesting); |
2199 event.sourceDevice = WebGestureDeviceTouchscreen; | 2203 event.sourceDevice = WebGestureDeviceTouchscreen; |
2200 event.x = 10; | 2204 event.x = 10; |
2201 event.y = 10; | 2205 event.y = 10; |
2202 | 2206 |
2203 EXPECT_NE(WebInputEventResult::HandledSystem, | 2207 EXPECT_NE(WebInputEventResult::HandledSystem, |
2204 webView->handleInputEvent(event)); | 2208 webView->handleInputEvent(event)); |
2205 | 2209 |
2206 HTMLElement* element = | 2210 HTMLElement* element = |
2207 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); | 2211 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); |
2208 EXPECT_FALSE(element->canStartSelection()); | 2212 EXPECT_FALSE(element->canStartSelection()); |
2209 } | 2213 } |
2210 | 2214 |
2211 TEST_P(WebViewTest, LongPressObjectFallback) { | 2215 TEST_P(WebViewTest, LongPressObjectFallback) { |
2212 URLTestHelpers::registerMockedURLFromBaseURL( | 2216 URLTestHelpers::registerMockedURLFromBaseURL( |
2213 WebString::fromUTF8(m_baseURL.c_str()), | 2217 WebString::fromUTF8(m_baseURL.c_str()), |
2214 WebString::fromUTF8("long_press_object_fallback.html")); | 2218 WebString::fromUTF8("long_press_object_fallback.html")); |
2215 | 2219 |
2216 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2220 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2217 m_baseURL + "long_press_object_fallback.html", true); | 2221 m_baseURL + "long_press_object_fallback.html", true); |
2218 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2222 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
2219 webView->resize(WebSize(500, 300)); | 2223 webView->resize(WebSize(500, 300)); |
2220 webView->updateAllLifecyclePhases(); | 2224 webView->updateAllLifecyclePhases(); |
2221 runPendingTasks(); | 2225 runPendingTasks(); |
2222 | 2226 |
2223 WebGestureEvent event; | 2227 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2224 event.type = WebInputEvent::GestureLongPress; | 2228 WebInputEvent::NoModifiers, |
| 2229 WebInputEvent::TimeStampForTesting); |
2225 event.sourceDevice = WebGestureDeviceTouchscreen; | 2230 event.sourceDevice = WebGestureDeviceTouchscreen; |
2226 event.x = 10; | 2231 event.x = 10; |
2227 event.y = 10; | 2232 event.y = 10; |
2228 | 2233 |
2229 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2234 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2230 webView->handleInputEvent(event)); | 2235 webView->handleInputEvent(event)); |
2231 | 2236 |
2232 HTMLElement* element = | 2237 HTMLElement* element = |
2233 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); | 2238 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); |
2234 EXPECT_TRUE(element->canStartSelection()); | 2239 EXPECT_TRUE(element->canStartSelection()); |
2235 } | 2240 } |
2236 | 2241 |
2237 TEST_P(WebViewTest, LongPressImage) { | 2242 TEST_P(WebViewTest, LongPressImage) { |
2238 URLTestHelpers::registerMockedURLFromBaseURL( | 2243 URLTestHelpers::registerMockedURLFromBaseURL( |
2239 WebString::fromUTF8(m_baseURL.c_str()), | 2244 WebString::fromUTF8(m_baseURL.c_str()), |
2240 WebString::fromUTF8("long_press_image.html")); | 2245 WebString::fromUTF8("long_press_image.html")); |
2241 | 2246 |
2242 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2247 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2243 m_baseURL + "long_press_image.html", true); | 2248 m_baseURL + "long_press_image.html", true); |
2244 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2249 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2245 webView->resize(WebSize(500, 300)); | 2250 webView->resize(WebSize(500, 300)); |
2246 webView->updateAllLifecyclePhases(); | 2251 webView->updateAllLifecyclePhases(); |
2247 runPendingTasks(); | 2252 runPendingTasks(); |
2248 | 2253 |
2249 WebGestureEvent event; | 2254 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2250 event.type = WebInputEvent::GestureLongPress; | 2255 WebInputEvent::NoModifiers, |
| 2256 WebInputEvent::TimeStampForTesting); |
2251 event.sourceDevice = WebGestureDeviceTouchscreen; | 2257 event.sourceDevice = WebGestureDeviceTouchscreen; |
2252 event.x = 10; | 2258 event.x = 10; |
2253 event.y = 10; | 2259 event.y = 10; |
2254 | 2260 |
2255 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2261 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2256 webView->handleInputEvent(event)); | 2262 webView->handleInputEvent(event)); |
2257 } | 2263 } |
2258 | 2264 |
2259 TEST_P(WebViewTest, LongPressVideo) { | 2265 TEST_P(WebViewTest, LongPressVideo) { |
2260 URLTestHelpers::registerMockedURLFromBaseURL( | 2266 URLTestHelpers::registerMockedURLFromBaseURL( |
2261 WebString::fromUTF8(m_baseURL.c_str()), | 2267 WebString::fromUTF8(m_baseURL.c_str()), |
2262 WebString::fromUTF8("long_press_video.html")); | 2268 WebString::fromUTF8("long_press_video.html")); |
2263 | 2269 |
2264 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2270 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2265 m_baseURL + "long_press_video.html", true); | 2271 m_baseURL + "long_press_video.html", true); |
2266 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2272 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2267 webView->resize(WebSize(500, 300)); | 2273 webView->resize(WebSize(500, 300)); |
2268 webView->updateAllLifecyclePhases(); | 2274 webView->updateAllLifecyclePhases(); |
2269 runPendingTasks(); | 2275 runPendingTasks(); |
2270 | 2276 |
2271 WebGestureEvent event; | 2277 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2272 event.type = WebInputEvent::GestureLongPress; | 2278 WebInputEvent::NoModifiers, |
| 2279 WebInputEvent::TimeStampForTesting); |
2273 event.sourceDevice = WebGestureDeviceTouchscreen; | 2280 event.sourceDevice = WebGestureDeviceTouchscreen; |
2274 event.x = 10; | 2281 event.x = 10; |
2275 event.y = 10; | 2282 event.y = 10; |
2276 | 2283 |
2277 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2284 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2278 webView->handleInputEvent(event)); | 2285 webView->handleInputEvent(event)); |
2279 } | 2286 } |
2280 | 2287 |
2281 TEST_P(WebViewTest, LongPressLink) { | 2288 TEST_P(WebViewTest, LongPressLink) { |
2282 URLTestHelpers::registerMockedURLFromBaseURL( | 2289 URLTestHelpers::registerMockedURLFromBaseURL( |
2283 WebString::fromUTF8(m_baseURL.c_str()), | 2290 WebString::fromUTF8(m_baseURL.c_str()), |
2284 WebString::fromUTF8("long_press_link.html")); | 2291 WebString::fromUTF8("long_press_link.html")); |
2285 | 2292 |
2286 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2293 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2287 m_baseURL + "long_press_link.html", true); | 2294 m_baseURL + "long_press_link.html", true); |
2288 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2295 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2289 webView->resize(WebSize(500, 300)); | 2296 webView->resize(WebSize(500, 300)); |
2290 webView->updateAllLifecyclePhases(); | 2297 webView->updateAllLifecyclePhases(); |
2291 runPendingTasks(); | 2298 runPendingTasks(); |
2292 | 2299 |
2293 WebGestureEvent event; | 2300 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2294 event.type = WebInputEvent::GestureLongPress; | 2301 WebInputEvent::NoModifiers, |
| 2302 WebInputEvent::TimeStampForTesting); |
2295 event.sourceDevice = WebGestureDeviceTouchscreen; | 2303 event.sourceDevice = WebGestureDeviceTouchscreen; |
2296 event.x = 500; | 2304 event.x = 500; |
2297 event.y = 300; | 2305 event.y = 300; |
2298 | 2306 |
2299 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2307 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2300 webView->handleInputEvent(event)); | 2308 webView->handleInputEvent(event)); |
2301 } | 2309 } |
2302 | 2310 |
2303 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { | 2311 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { |
2304 URLTestHelpers::registerMockedURLFromBaseURL( | 2312 URLTestHelpers::registerMockedURLFromBaseURL( |
(...skipping 27 matching lines...) Expand all Loading... |
2332 WebString::fromUTF8(m_baseURL.c_str()), | 2340 WebString::fromUTF8(m_baseURL.c_str()), |
2333 WebString::fromUTF8("long_press_empty_editable_selection.html")); | 2341 WebString::fromUTF8("long_press_empty_editable_selection.html")); |
2334 | 2342 |
2335 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2343 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2336 m_baseURL + "long_press_empty_editable_selection.html", true); | 2344 m_baseURL + "long_press_empty_editable_selection.html", true); |
2337 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2345 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2338 webView->resize(WebSize(500, 300)); | 2346 webView->resize(WebSize(500, 300)); |
2339 webView->updateAllLifecyclePhases(); | 2347 webView->updateAllLifecyclePhases(); |
2340 runPendingTasks(); | 2348 runPendingTasks(); |
2341 | 2349 |
2342 WebGestureEvent event; | 2350 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2343 event.type = WebInputEvent::GestureLongPress; | 2351 WebInputEvent::NoModifiers, |
| 2352 WebInputEvent::TimeStampForTesting); |
2344 event.sourceDevice = WebGestureDeviceTouchscreen; | 2353 event.sourceDevice = WebGestureDeviceTouchscreen; |
2345 event.x = 10; | 2354 event.x = 10; |
2346 event.y = 10; | 2355 event.y = 10; |
2347 | 2356 |
2348 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2357 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2349 webView->handleInputEvent(event)); | 2358 webView->handleInputEvent(event)); |
2350 } | 2359 } |
2351 | 2360 |
2352 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { | 2361 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { |
2353 URLTestHelpers::registerMockedURLFromBaseURL( | 2362 URLTestHelpers::registerMockedURLFromBaseURL( |
2354 WebString::fromUTF8(m_baseURL.c_str()), | 2363 WebString::fromUTF8(m_baseURL.c_str()), |
2355 WebString::fromUTF8("long_press_image.html")); | 2364 WebString::fromUTF8("long_press_image.html")); |
2356 | 2365 |
2357 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2366 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2358 m_baseURL + "long_press_image.html", true); | 2367 m_baseURL + "long_press_image.html", true); |
2359 webView->resize(WebSize(500, 500)); | 2368 webView->resize(WebSize(500, 500)); |
2360 webView->updateAllLifecyclePhases(); | 2369 webView->updateAllLifecyclePhases(); |
2361 runPendingTasks(); | 2370 runPendingTasks(); |
2362 | 2371 |
2363 WebGestureEvent event; | 2372 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2364 event.type = WebInputEvent::GestureLongPress; | 2373 WebInputEvent::NoModifiers, |
| 2374 WebInputEvent::TimeStampForTesting); |
2365 event.sourceDevice = WebGestureDeviceTouchscreen; | 2375 event.sourceDevice = WebGestureDeviceTouchscreen; |
2366 event.x = 300; | 2376 event.x = 300; |
2367 event.y = 300; | 2377 event.y = 300; |
2368 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2378 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2369 | 2379 |
2370 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2380 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2371 webView->handleInputEvent(event)); | 2381 webView->handleInputEvent(event)); |
2372 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2382 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
2373 } | 2383 } |
2374 | 2384 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2408 | 2418 |
2409 WebString blanklinestextbox = WebString::fromUTF8("blanklinestextbox"); | 2419 WebString blanklinestextbox = WebString::fromUTF8("blanklinestextbox"); |
2410 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2420 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2411 | 2421 |
2412 // Long-press on carriage returns. | 2422 // Long-press on carriage returns. |
2413 EXPECT_TRUE( | 2423 EXPECT_TRUE( |
2414 tapElementById(WebInputEvent::GestureLongPress, blanklinestextbox)); | 2424 tapElementById(WebInputEvent::GestureLongPress, blanklinestextbox)); |
2415 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2425 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
2416 | 2426 |
2417 // Double-tap on carriage returns. | 2427 // Double-tap on carriage returns. |
2418 WebGestureEvent event; | 2428 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
2419 event.type = WebInputEvent::GestureTap; | 2429 WebInputEvent::TimeStampForTesting); |
2420 event.sourceDevice = WebGestureDeviceTouchscreen; | 2430 event.sourceDevice = WebGestureDeviceTouchscreen; |
2421 event.x = 100; | 2431 event.x = 100; |
2422 event.y = 25; | 2432 event.y = 25; |
2423 event.data.tap.tapCount = 2; | 2433 event.data.tap.tapCount = 2; |
2424 | 2434 |
2425 webView->handleInputEvent(event); | 2435 webView->handleInputEvent(event); |
2426 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2436 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
2427 | 2437 |
2428 HTMLTextAreaElement* textAreaElement = toHTMLTextAreaElement( | 2438 HTMLTextAreaElement* textAreaElement = toHTMLTextAreaElement( |
2429 webView->mainFrame()->document().getElementById(blanklinestextbox)); | 2439 webView->mainFrame()->document().getElementById(blanklinestextbox)); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2483 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | 2493 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); |
2484 WebViewImpl* webView = | 2494 WebViewImpl* webView = |
2485 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 2495 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
2486 | 2496 |
2487 webView->setInitialFocus(false); | 2497 webView->setInitialFocus(false); |
2488 runPendingTasks(); | 2498 runPendingTasks(); |
2489 | 2499 |
2490 // We suspend caret blinking when pressing with mouse right button. | 2500 // We suspend caret blinking when pressing with mouse right button. |
2491 // Note that we do not send MouseUp event here since it will be consumed | 2501 // Note that we do not send MouseUp event here since it will be consumed |
2492 // by the context menu once it shows up. | 2502 // by the context menu once it shows up. |
2493 WebMouseEvent mouseEvent; | 2503 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, |
| 2504 WebInputEvent::TimeStampForTesting); |
| 2505 |
2494 mouseEvent.button = WebMouseEvent::Button::Right; | 2506 mouseEvent.button = WebMouseEvent::Button::Right; |
2495 mouseEvent.x = 1; | 2507 mouseEvent.x = 1; |
2496 mouseEvent.y = 1; | 2508 mouseEvent.y = 1; |
2497 mouseEvent.clickCount = 1; | 2509 mouseEvent.clickCount = 1; |
2498 mouseEvent.type = WebInputEvent::MouseDown; | |
2499 webView->handleInputEvent(mouseEvent); | 2510 webView->handleInputEvent(mouseEvent); |
2500 runPendingTasks(); | 2511 runPendingTasks(); |
2501 | 2512 |
2502 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); | 2513 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); |
2503 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); | 2514 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); |
2504 | 2515 |
2505 // Caret blinking is still suspended after showing context menu. | 2516 // Caret blinking is still suspended after showing context menu. |
2506 webView->showContextMenu(); | 2517 webView->showContextMenu(); |
2507 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); | 2518 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); |
2508 | 2519 |
(...skipping 28 matching lines...) Expand all Loading... |
2537 URLTestHelpers::registerMockedURLFromBaseURL( | 2548 URLTestHelpers::registerMockedURLFromBaseURL( |
2538 WebString::fromUTF8(m_baseURL.c_str()), | 2549 WebString::fromUTF8(m_baseURL.c_str()), |
2539 WebString::fromUTF8("content-width-1000.html")); | 2550 WebString::fromUTF8("content-width-1000.html")); |
2540 | 2551 |
2541 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2552 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2542 m_baseURL + "content-width-1000.html", true); | 2553 m_baseURL + "content-width-1000.html", true); |
2543 webView->resize(WebSize(100, 100)); | 2554 webView->resize(WebSize(100, 100)); |
2544 webView->updateAllLifecyclePhases(); | 2555 webView->updateAllLifecyclePhases(); |
2545 runPendingTasks(); | 2556 runPendingTasks(); |
2546 | 2557 |
2547 WebKeyboardEvent keyEvent; | 2558 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 2559 WebInputEvent::NoModifiers, |
| 2560 WebInputEvent::TimeStampForTesting); |
2548 | 2561 |
2549 // RawKeyDown pagedown should be handled. | 2562 // RawKeyDown pagedown should be handled. |
2550 keyEvent.windowsKeyCode = VKEY_NEXT; | 2563 keyEvent.windowsKeyCode = VKEY_NEXT; |
2551 keyEvent.type = WebInputEvent::RawKeyDown; | |
2552 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2564 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2553 webView->handleInputEvent(keyEvent)); | 2565 webView->handleInputEvent(keyEvent)); |
2554 keyEvent.type = WebInputEvent::KeyUp; | 2566 keyEvent.setType(WebInputEvent::KeyUp); |
2555 webView->handleInputEvent(keyEvent); | 2567 webView->handleInputEvent(keyEvent); |
2556 | 2568 |
2557 // Coalesced KeyDown arrow-down should be handled. | 2569 // Coalesced KeyDown arrow-down should be handled. |
2558 keyEvent.windowsKeyCode = VKEY_DOWN; | 2570 keyEvent.windowsKeyCode = VKEY_DOWN; |
2559 keyEvent.type = WebInputEvent::KeyDown; | 2571 keyEvent.setType(WebInputEvent::KeyDown); |
2560 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2572 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2561 webView->handleInputEvent(keyEvent)); | 2573 webView->handleInputEvent(keyEvent)); |
2562 keyEvent.type = WebInputEvent::KeyUp; | 2574 keyEvent.setType(WebInputEvent::KeyUp); |
2563 webView->handleInputEvent(keyEvent); | 2575 webView->handleInputEvent(keyEvent); |
2564 | 2576 |
2565 // Ctrl-Home should be handled... | 2577 // Ctrl-Home should be handled... |
2566 keyEvent.windowsKeyCode = VKEY_HOME; | 2578 keyEvent.windowsKeyCode = VKEY_HOME; |
2567 keyEvent.modifiers = WebInputEvent::ControlKey; | 2579 keyEvent.setModifiers(WebInputEvent::ControlKey); |
2568 keyEvent.type = WebInputEvent::RawKeyDown; | 2580 keyEvent.setType(WebInputEvent::RawKeyDown); |
2569 EXPECT_EQ(WebInputEventResult::NotHandled, | 2581 EXPECT_EQ(WebInputEventResult::NotHandled, |
2570 webView->handleInputEvent(keyEvent)); | 2582 webView->handleInputEvent(keyEvent)); |
2571 keyEvent.type = WebInputEvent::KeyUp; | 2583 keyEvent.setType(WebInputEvent::KeyUp); |
2572 webView->handleInputEvent(keyEvent); | 2584 webView->handleInputEvent(keyEvent); |
2573 | 2585 |
2574 // But Ctrl-Down should not. | 2586 // But Ctrl-Down should not. |
2575 keyEvent.windowsKeyCode = VKEY_DOWN; | 2587 keyEvent.windowsKeyCode = VKEY_DOWN; |
2576 keyEvent.modifiers = WebInputEvent::ControlKey; | 2588 keyEvent.setModifiers(WebInputEvent::ControlKey); |
2577 keyEvent.type = WebInputEvent::RawKeyDown; | 2589 keyEvent.setType(WebInputEvent::RawKeyDown); |
2578 EXPECT_EQ(WebInputEventResult::NotHandled, | 2590 EXPECT_EQ(WebInputEventResult::NotHandled, |
2579 webView->handleInputEvent(keyEvent)); | 2591 webView->handleInputEvent(keyEvent)); |
2580 keyEvent.type = WebInputEvent::KeyUp; | 2592 keyEvent.setType(WebInputEvent::KeyUp); |
2581 webView->handleInputEvent(keyEvent); | 2593 webView->handleInputEvent(keyEvent); |
2582 | 2594 |
2583 // Shift, meta, and alt should not be handled. | 2595 // Shift, meta, and alt should not be handled. |
2584 keyEvent.windowsKeyCode = VKEY_NEXT; | 2596 keyEvent.windowsKeyCode = VKEY_NEXT; |
2585 keyEvent.modifiers = WebInputEvent::ShiftKey; | 2597 keyEvent.setModifiers(WebInputEvent::ShiftKey); |
2586 keyEvent.type = WebInputEvent::RawKeyDown; | 2598 keyEvent.setType(WebInputEvent::RawKeyDown); |
2587 EXPECT_EQ(WebInputEventResult::NotHandled, | 2599 EXPECT_EQ(WebInputEventResult::NotHandled, |
2588 webView->handleInputEvent(keyEvent)); | 2600 webView->handleInputEvent(keyEvent)); |
2589 keyEvent.type = WebInputEvent::KeyUp; | 2601 keyEvent.setType(WebInputEvent::KeyUp); |
2590 webView->handleInputEvent(keyEvent); | 2602 webView->handleInputEvent(keyEvent); |
2591 | 2603 |
2592 keyEvent.windowsKeyCode = VKEY_NEXT; | 2604 keyEvent.windowsKeyCode = VKEY_NEXT; |
2593 keyEvent.modifiers = WebInputEvent::MetaKey; | 2605 keyEvent.setModifiers(WebInputEvent::MetaKey); |
2594 keyEvent.type = WebInputEvent::RawKeyDown; | 2606 keyEvent.setType(WebInputEvent::RawKeyDown); |
2595 EXPECT_EQ(WebInputEventResult::NotHandled, | 2607 EXPECT_EQ(WebInputEventResult::NotHandled, |
2596 webView->handleInputEvent(keyEvent)); | 2608 webView->handleInputEvent(keyEvent)); |
2597 keyEvent.type = WebInputEvent::KeyUp; | 2609 keyEvent.setType(WebInputEvent::KeyUp); |
2598 webView->handleInputEvent(keyEvent); | 2610 webView->handleInputEvent(keyEvent); |
2599 | 2611 |
2600 keyEvent.windowsKeyCode = VKEY_NEXT; | 2612 keyEvent.windowsKeyCode = VKEY_NEXT; |
2601 keyEvent.modifiers = WebInputEvent::AltKey; | 2613 keyEvent.setModifiers(WebInputEvent::AltKey); |
2602 keyEvent.type = WebInputEvent::RawKeyDown; | 2614 keyEvent.setType(WebInputEvent::RawKeyDown); |
2603 EXPECT_EQ(WebInputEventResult::NotHandled, | 2615 EXPECT_EQ(WebInputEventResult::NotHandled, |
2604 webView->handleInputEvent(keyEvent)); | 2616 webView->handleInputEvent(keyEvent)); |
2605 keyEvent.type = WebInputEvent::KeyUp; | 2617 keyEvent.setType(WebInputEvent::KeyUp); |
2606 webView->handleInputEvent(keyEvent); | 2618 webView->handleInputEvent(keyEvent); |
2607 | 2619 |
2608 // System-key labeled Alt-Down (as in Windows) should do nothing, | 2620 // System-key labeled Alt-Down (as in Windows) should do nothing, |
2609 // but non-system-key labeled Alt-Down (as in Mac) should be handled | 2621 // but non-system-key labeled Alt-Down (as in Mac) should be handled |
2610 // as a page-down. | 2622 // as a page-down. |
2611 keyEvent.windowsKeyCode = VKEY_DOWN; | 2623 keyEvent.windowsKeyCode = VKEY_DOWN; |
2612 keyEvent.modifiers = WebInputEvent::AltKey; | 2624 keyEvent.setModifiers(WebInputEvent::AltKey); |
2613 keyEvent.isSystemKey = true; | 2625 keyEvent.isSystemKey = true; |
2614 keyEvent.type = WebInputEvent::RawKeyDown; | 2626 keyEvent.setType(WebInputEvent::RawKeyDown); |
2615 EXPECT_EQ(WebInputEventResult::NotHandled, | 2627 EXPECT_EQ(WebInputEventResult::NotHandled, |
2616 webView->handleInputEvent(keyEvent)); | 2628 webView->handleInputEvent(keyEvent)); |
2617 keyEvent.type = WebInputEvent::KeyUp; | 2629 keyEvent.setType(WebInputEvent::KeyUp); |
2618 webView->handleInputEvent(keyEvent); | 2630 webView->handleInputEvent(keyEvent); |
2619 | 2631 |
2620 keyEvent.windowsKeyCode = VKEY_DOWN; | 2632 keyEvent.windowsKeyCode = VKEY_DOWN; |
2621 keyEvent.modifiers = WebInputEvent::AltKey; | 2633 keyEvent.setModifiers(WebInputEvent::AltKey); |
2622 keyEvent.isSystemKey = false; | 2634 keyEvent.isSystemKey = false; |
2623 keyEvent.type = WebInputEvent::RawKeyDown; | 2635 keyEvent.setType(WebInputEvent::RawKeyDown); |
2624 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2636 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2625 webView->handleInputEvent(keyEvent)); | 2637 webView->handleInputEvent(keyEvent)); |
2626 keyEvent.type = WebInputEvent::KeyUp; | 2638 keyEvent.setType(WebInputEvent::KeyUp); |
2627 webView->handleInputEvent(keyEvent); | 2639 webView->handleInputEvent(keyEvent); |
2628 } | 2640 } |
2629 | 2641 |
2630 static void configueCompositingWebView(WebSettings* settings) { | 2642 static void configueCompositingWebView(WebSettings* settings) { |
2631 settings->setAcceleratedCompositingEnabled(true); | 2643 settings->setAcceleratedCompositingEnabled(true); |
2632 settings->setPreferCompositingToLCDTextEnabled(true); | 2644 settings->setPreferCompositingToLCDTextEnabled(true); |
2633 } | 2645 } |
2634 | 2646 |
2635 TEST_P(WebViewTest, ShowPressOnTransformedLink) { | 2647 TEST_P(WebViewTest, ShowPressOnTransformedLink) { |
2636 std::unique_ptr<FrameTestHelpers::TestWebViewClient> | 2648 std::unique_ptr<FrameTestHelpers::TestWebViewClient> |
2637 fakeCompositingWebViewClient = | 2649 fakeCompositingWebViewClient = |
2638 WTF::makeUnique<FrameTestHelpers::TestWebViewClient>(); | 2650 WTF::makeUnique<FrameTestHelpers::TestWebViewClient>(); |
2639 FrameTestHelpers::WebViewHelper webViewHelper; | 2651 FrameTestHelpers::WebViewHelper webViewHelper; |
2640 WebViewImpl* webViewImpl = webViewHelper.initialize( | 2652 WebViewImpl* webViewImpl = webViewHelper.initialize( |
2641 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, | 2653 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, |
2642 &configueCompositingWebView); | 2654 &configueCompositingWebView); |
2643 | 2655 |
2644 int pageWidth = 640; | 2656 int pageWidth = 640; |
2645 int pageHeight = 480; | 2657 int pageHeight = 480; |
2646 webViewImpl->resize(WebSize(pageWidth, pageHeight)); | 2658 webViewImpl->resize(WebSize(pageWidth, pageHeight)); |
2647 | 2659 |
2648 WebURL baseURL = URLTestHelpers::toKURL("http://example.com/"); | 2660 WebURL baseURL = URLTestHelpers::toKURL("http://example.com/"); |
2649 FrameTestHelpers::loadHTMLString( | 2661 FrameTestHelpers::loadHTMLString( |
2650 webViewImpl->mainFrame(), | 2662 webViewImpl->mainFrame(), |
2651 "<a href='http://www.test.com' style='position: absolute; left: 20px; " | 2663 "<a href='http://www.test.com' style='position: absolute; left: 20px; " |
2652 "top: 20px; width: 200px; transform:translateZ(0);'>A link to " | 2664 "top: 20px; width: 200px; transform:translateZ(0);'>A link to " |
2653 "highlight</a>", | 2665 "highlight</a>", |
2654 baseURL); | 2666 baseURL); |
2655 | 2667 |
2656 WebGestureEvent event; | 2668 WebGestureEvent event(WebInputEvent::GestureShowPress, |
2657 event.type = WebInputEvent::GestureShowPress; | 2669 WebInputEvent::NoModifiers, |
| 2670 WebInputEvent::TimeStampForTesting); |
2658 event.sourceDevice = WebGestureDeviceTouchscreen; | 2671 event.sourceDevice = WebGestureDeviceTouchscreen; |
2659 event.x = 20; | 2672 event.x = 20; |
2660 event.y = 20; | 2673 event.y = 20; |
2661 | 2674 |
2662 // Just make sure we don't hit any asserts. | 2675 // Just make sure we don't hit any asserts. |
2663 webViewImpl->handleInputEvent(event); | 2676 webViewImpl->handleInputEvent(event); |
2664 } | 2677 } |
2665 | 2678 |
2666 class MockAutofillClient : public WebAutofillClient { | 2679 class MockAutofillClient : public WebAutofillClient { |
2667 public: | 2680 public: |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2771 frame->setEditableSelectionOffsets(6, 6); | 2784 frame->setEditableSelectionOffsets(6, 6); |
2772 WebInputMethodController* activeInputMethodController = | 2785 WebInputMethodController* activeInputMethodController = |
2773 frame->frameWidget()->getActiveWebInputMethodController(); | 2786 frame->frameWidget()->getActiveWebInputMethodController(); |
2774 EXPECT_TRUE(activeInputMethodController->setComposition( | 2787 EXPECT_TRUE(activeInputMethodController->setComposition( |
2775 "fghij", emptyUnderlines, 0, 5)); | 2788 "fghij", emptyUnderlines, 0, 5)); |
2776 frame->setEditableSelectionOffsets(11, 11); | 2789 frame->setEditableSelectionOffsets(11, 11); |
2777 verifySelectionAndComposition(webView, 11, 11, 6, 11, "initial case"); | 2790 verifySelectionAndComposition(webView, 11, 11, 6, 11, "initial case"); |
2778 | 2791 |
2779 // Press Backspace and verify composition didn't get cancelled. This is to | 2792 // Press Backspace and verify composition didn't get cancelled. This is to |
2780 // verify the fix for crbug.com/429916. | 2793 // verify the fix for crbug.com/429916. |
2781 WebKeyboardEvent keyEvent; | 2794 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 2795 WebInputEvent::NoModifiers, |
| 2796 WebInputEvent::TimeStampForTesting); |
2782 keyEvent.domKey = Platform::current()->domKeyEnumFromString("\b"); | 2797 keyEvent.domKey = Platform::current()->domKeyEnumFromString("\b"); |
2783 keyEvent.windowsKeyCode = VKEY_BACK; | 2798 keyEvent.windowsKeyCode = VKEY_BACK; |
2784 keyEvent.type = WebInputEvent::RawKeyDown; | |
2785 webView->handleInputEvent(keyEvent); | 2799 webView->handleInputEvent(keyEvent); |
2786 | 2800 |
2787 frame->setEditableSelectionOffsets(6, 6); | 2801 frame->setEditableSelectionOffsets(6, 6); |
2788 EXPECT_TRUE(activeInputMethodController->setComposition( | 2802 EXPECT_TRUE(activeInputMethodController->setComposition( |
2789 "fghi", emptyUnderlines, 0, 4)); | 2803 "fghi", emptyUnderlines, 0, 4)); |
2790 frame->setEditableSelectionOffsets(10, 10); | 2804 frame->setEditableSelectionOffsets(10, 10); |
2791 verifySelectionAndComposition(webView, 10, 10, 6, 10, | 2805 verifySelectionAndComposition(webView, 10, 10, 6, 10, |
2792 "after pressing Backspace"); | 2806 "after pressing Backspace"); |
2793 | 2807 |
2794 keyEvent.type = WebInputEvent::KeyUp; | 2808 keyEvent.setType(WebInputEvent::KeyUp); |
2795 webView->handleInputEvent(keyEvent); | 2809 webView->handleInputEvent(keyEvent); |
2796 | 2810 |
2797 webView->advanceFocus(false); | 2811 webView->advanceFocus(false); |
2798 } | 2812 } |
2799 | 2813 |
2800 frame->setAutofillClient(0); | 2814 frame->setAutofillClient(0); |
2801 } | 2815 } |
2802 | 2816 |
2803 TEST_P(WebViewTest, FinishComposingTextTriggersAutofillTextChange) { | 2817 TEST_P(WebViewTest, FinishComposingTextTriggersAutofillTextChange) { |
2804 URLTestHelpers::registerMockedURLFromBaseURL( | 2818 URLTestHelpers::registerMockedURLFromBaseURL( |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2975 | 2989 |
2976 WebElement element = | 2990 WebElement element = |
2977 webView->mainFrame()->document().getElementById("message"); | 2991 webView->mainFrame()->document().getElementById("message"); |
2978 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.textContent().utf8().data()); | 2992 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.textContent().utf8().data()); |
2979 } | 2993 } |
2980 | 2994 |
2981 static void openDateTimeChooser(WebView* webView, | 2995 static void openDateTimeChooser(WebView* webView, |
2982 HTMLInputElement* inputElement) { | 2996 HTMLInputElement* inputElement) { |
2983 inputElement->focus(); | 2997 inputElement->focus(); |
2984 | 2998 |
2985 WebKeyboardEvent keyEvent; | 2999 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 3000 WebInputEvent::NoModifiers, |
| 3001 WebInputEvent::TimeStampForTesting); |
2986 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); | 3002 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); |
2987 keyEvent.windowsKeyCode = VKEY_SPACE; | 3003 keyEvent.windowsKeyCode = VKEY_SPACE; |
2988 keyEvent.type = WebInputEvent::RawKeyDown; | |
2989 webView->handleInputEvent(keyEvent); | 3004 webView->handleInputEvent(keyEvent); |
2990 | 3005 |
2991 keyEvent.type = WebInputEvent::KeyUp; | 3006 keyEvent.setType(WebInputEvent::KeyUp); |
2992 webView->handleInputEvent(keyEvent); | 3007 webView->handleInputEvent(keyEvent); |
2993 } | 3008 } |
2994 | 3009 |
2995 // TODO(crbug.com/605112) This test is crashing on Android (Nexus 4) bot. | 3010 // TODO(crbug.com/605112) This test is crashing on Android (Nexus 4) bot. |
2996 #if OS(ANDROID) | 3011 #if OS(ANDROID) |
2997 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { | 3012 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { |
2998 #else | 3013 #else |
2999 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { | 3014 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { |
3000 #endif | 3015 #endif |
3001 bool originalMultipleFieldsFlag = | 3016 bool originalMultipleFieldsFlag = |
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3556 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | 3571 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); |
3557 MockAutofillClient client; | 3572 MockAutofillClient client; |
3558 WebViewImpl* webView = | 3573 WebViewImpl* webView = |
3559 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 3574 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
3560 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3575 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3561 frame->setAutofillClient(&client); | 3576 frame->setAutofillClient(&client); |
3562 webView->setInitialFocus(false); | 3577 webView->setInitialFocus(false); |
3563 | 3578 |
3564 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); | 3579 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
3565 | 3580 |
3566 WebKeyboardEvent keyEvent; | 3581 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 3582 WebInputEvent::NoModifiers, |
| 3583 WebInputEvent::TimeStampForTesting); |
3567 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); | 3584 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); |
3568 keyEvent.windowsKeyCode = VKEY_SPACE; | 3585 keyEvent.windowsKeyCode = VKEY_SPACE; |
3569 keyEvent.type = WebInputEvent::RawKeyDown; | |
3570 webView->handleInputEvent(keyEvent); | 3586 webView->handleInputEvent(keyEvent); |
3571 keyEvent.type = WebInputEvent::KeyUp; | 3587 keyEvent.setType(WebInputEvent::KeyUp); |
3572 webView->handleInputEvent(keyEvent); | 3588 webView->handleInputEvent(keyEvent); |
3573 | 3589 |
3574 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); | 3590 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
3575 frame->setAutofillClient(0); | 3591 frame->setAutofillClient(0); |
3576 } | 3592 } |
3577 | 3593 |
3578 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { | 3594 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { |
3579 URLTestHelpers::registerMockedURLFromBaseURL( | 3595 URLTestHelpers::registerMockedURLFromBaseURL( |
3580 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | 3596 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); |
3581 MockAutofillClient client; | 3597 MockAutofillClient client; |
3582 WebViewImpl* webView = | 3598 WebViewImpl* webView = |
3583 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 3599 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
3584 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3600 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3585 frame->setAutofillClient(&client); | 3601 frame->setAutofillClient(&client); |
3586 webView->setInitialFocus(false); | 3602 webView->setInitialFocus(false); |
3587 | 3603 |
3588 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); | 3604 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
3589 | 3605 |
3590 WebMouseEvent mouseEvent; | 3606 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, |
| 3607 WebInputEvent::TimeStampForTesting); |
3591 mouseEvent.button = WebMouseEvent::Button::Left; | 3608 mouseEvent.button = WebMouseEvent::Button::Left; |
3592 mouseEvent.x = 1; | 3609 mouseEvent.x = 1; |
3593 mouseEvent.y = 1; | 3610 mouseEvent.y = 1; |
3594 mouseEvent.clickCount = 1; | 3611 mouseEvent.clickCount = 1; |
3595 mouseEvent.type = WebInputEvent::MouseDown; | |
3596 webView->handleInputEvent(mouseEvent); | 3612 webView->handleInputEvent(mouseEvent); |
3597 mouseEvent.type = WebInputEvent::MouseUp; | 3613 mouseEvent.setType(WebInputEvent::MouseUp); |
3598 webView->handleInputEvent(mouseEvent); | 3614 webView->handleInputEvent(mouseEvent); |
3599 | 3615 |
3600 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); | 3616 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
3601 frame->setAutofillClient(0); | 3617 frame->setAutofillClient(0); |
3602 } | 3618 } |
3603 | 3619 |
3604 TEST_P(WebViewTest, FirstUserGestureObservedGestureTap) { | 3620 TEST_P(WebViewTest, FirstUserGestureObservedGestureTap) { |
3605 URLTestHelpers::registerMockedURLFromBaseURL( | 3621 URLTestHelpers::registerMockedURLFromBaseURL( |
3606 WebString::fromUTF8(m_baseURL.c_str()), | 3622 WebString::fromUTF8(m_baseURL.c_str()), |
3607 WebString::fromUTF8("longpress_selection.html")); | 3623 WebString::fromUTF8("longpress_selection.html")); |
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4277 .translate(50, 55) | 4293 .translate(50, 55) |
4278 .scale(1. / 2.f); | 4294 .scale(1. / 2.f); |
4279 EXPECT_EQ(expectedMatrix, | 4295 EXPECT_EQ(expectedMatrix, |
4280 webViewImpl->getDeviceEmulationTransformForTesting()); | 4296 webViewImpl->getDeviceEmulationTransformForTesting()); |
4281 // visibleContentRect doesn't change. | 4297 // visibleContentRect doesn't change. |
4282 EXPECT_EQ(IntRect(50, 55, 50, 75), | 4298 EXPECT_EQ(IntRect(50, 55, 50, 75), |
4283 *devToolsEmulator->visibleContentRectForPainting()); | 4299 *devToolsEmulator->visibleContentRectForPainting()); |
4284 } | 4300 } |
4285 | 4301 |
4286 } // namespace blink | 4302 } // namespace blink |
OLD | NEW |