| 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 2003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2014 ->contentsToScreen(element->layoutObject()->absoluteBoundingBoxRect()) | 2014 ->contentsToScreen(element->layoutObject()->absoluteBoundingBoxRect()) |
| 2015 .center(); | 2015 .center(); |
| 2016 | 2016 |
| 2017 WebGestureEvent event(type, WebInputEvent::NoModifiers, | 2017 WebGestureEvent event(type, WebInputEvent::NoModifiers, |
| 2018 WebInputEvent::TimeStampForTesting); | 2018 WebInputEvent::TimeStampForTesting); |
| 2019 | 2019 |
| 2020 event.sourceDevice = WebGestureDeviceTouchscreen; | 2020 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2021 event.x = center.x(); | 2021 event.x = center.x(); |
| 2022 event.y = center.y(); | 2022 event.y = center.y(); |
| 2023 | 2023 |
| 2024 m_webViewHelper.webView()->handleInputEvent(event); | 2024 m_webViewHelper.webView()->handleInputEvent(WebCoalescedInputEvent(event)); |
| 2025 runPendingTasks(); | 2025 runPendingTasks(); |
| 2026 return true; | 2026 return true; |
| 2027 } | 2027 } |
| 2028 | 2028 |
| 2029 bool WebViewTest::tapElementById(WebInputEvent::Type type, | 2029 bool WebViewTest::tapElementById(WebInputEvent::Type type, |
| 2030 const WebString& id) { | 2030 const WebString& id) { |
| 2031 DCHECK(m_webViewHelper.webView()); | 2031 DCHECK(m_webViewHelper.webView()); |
| 2032 Element* element = static_cast<Element*>( | 2032 Element* element = static_cast<Element*>( |
| 2033 m_webViewHelper.webView()->mainFrame()->document().getElementById(id)); | 2033 m_webViewHelper.webView()->mainFrame()->document().getElementById(id)); |
| 2034 return tapElement(type, element); | 2034 return tapElement(type, element); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2075 WebURL intentURL = toKURL(m_baseURL); | 2075 WebURL intentURL = toKURL(m_baseURL); |
| 2076 client.setContentDetectionResult(intentURL); | 2076 client.setContentDetectionResult(intentURL); |
| 2077 EXPECT_TRUE(tapElementById(WebInputEvent::GestureTap, noListener)); | 2077 EXPECT_TRUE(tapElementById(WebInputEvent::GestureTap, noListener)); |
| 2078 EXPECT_TRUE(client.scheduledIntentURL() == intentURL); | 2078 EXPECT_TRUE(client.scheduledIntentURL() == intentURL); |
| 2079 EXPECT_TRUE(client.wasInMainFrame()); | 2079 EXPECT_TRUE(client.wasInMainFrame()); |
| 2080 | 2080 |
| 2081 // Tapping elsewhere should cancel the scheduled intent. | 2081 // Tapping elsewhere should cancel the scheduled intent. |
| 2082 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, | 2082 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
| 2083 WebInputEvent::TimeStampForTesting); | 2083 WebInputEvent::TimeStampForTesting); |
| 2084 event.sourceDevice = WebGestureDeviceTouchscreen; | 2084 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2085 webView->handleInputEvent(event); | 2085 webView->handleInputEvent(WebCoalescedInputEvent(event)); |
| 2086 runPendingTasks(); | 2086 runPendingTasks(); |
| 2087 EXPECT_TRUE(client.pendingIntentsCancelled()); | 2087 EXPECT_TRUE(client.pendingIntentsCancelled()); |
| 2088 | 2088 |
| 2089 // Explicitly reset to break dependency on locally scoped client. | 2089 // Explicitly reset to break dependency on locally scoped client. |
| 2090 m_webViewHelper.reset(); | 2090 m_webViewHelper.reset(); |
| 2091 } | 2091 } |
| 2092 | 2092 |
| 2093 TEST_P(WebViewTest, ContentDetectionInIframe) { | 2093 TEST_P(WebViewTest, ContentDetectionInIframe) { |
| 2094 URLTestHelpers::registerMockedURLFromBaseURL( | 2094 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2095 WebString::fromUTF8(m_baseURL.c_str()), | 2095 WebString::fromUTF8(m_baseURL.c_str()), |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2121 TEST_P(WebViewTest, ClientTapHandling) { | 2121 TEST_P(WebViewTest, ClientTapHandling) { |
| 2122 TapHandlingWebViewClient client; | 2122 TapHandlingWebViewClient client; |
| 2123 client.reset(); | 2123 client.reset(); |
| 2124 WebView* webView = | 2124 WebView* webView = |
| 2125 m_webViewHelper.initializeAndLoad("about:blank", true, 0, &client); | 2125 m_webViewHelper.initializeAndLoad("about:blank", true, 0, &client); |
| 2126 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, | 2126 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
| 2127 WebInputEvent::TimeStampForTesting); | 2127 WebInputEvent::TimeStampForTesting); |
| 2128 event.sourceDevice = WebGestureDeviceTouchscreen; | 2128 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2129 event.x = 3; | 2129 event.x = 3; |
| 2130 event.y = 8; | 2130 event.y = 8; |
| 2131 webView->handleInputEvent(event); | 2131 webView->handleInputEvent(WebCoalescedInputEvent(event)); |
| 2132 runPendingTasks(); | 2132 runPendingTasks(); |
| 2133 EXPECT_EQ(3, client.tapX()); | 2133 EXPECT_EQ(3, client.tapX()); |
| 2134 EXPECT_EQ(8, client.tapY()); | 2134 EXPECT_EQ(8, client.tapY()); |
| 2135 client.reset(); | 2135 client.reset(); |
| 2136 event.setType(WebInputEvent::GestureLongPress); | 2136 event.setType(WebInputEvent::GestureLongPress); |
| 2137 event.x = 25; | 2137 event.x = 25; |
| 2138 event.y = 7; | 2138 event.y = 7; |
| 2139 webView->handleInputEvent(event); | 2139 webView->handleInputEvent(WebCoalescedInputEvent(event)); |
| 2140 runPendingTasks(); | 2140 runPendingTasks(); |
| 2141 EXPECT_EQ(25, client.longpressX()); | 2141 EXPECT_EQ(25, client.longpressX()); |
| 2142 EXPECT_EQ(7, client.longpressY()); | 2142 EXPECT_EQ(7, client.longpressY()); |
| 2143 | 2143 |
| 2144 // Explicitly reset to break dependency on locally scoped client. | 2144 // Explicitly reset to break dependency on locally scoped client. |
| 2145 m_webViewHelper.reset(); | 2145 m_webViewHelper.reset(); |
| 2146 } | 2146 } |
| 2147 | 2147 |
| 2148 TEST_P(WebViewTest, ClientTapHandlingNullWebViewClient) { | 2148 TEST_P(WebViewTest, ClientTapHandlingNullWebViewClient) { |
| 2149 WebViewImpl* webView = | 2149 WebViewImpl* webView = |
| 2150 WebViewImpl::create(nullptr, WebPageVisibilityStateVisible); | 2150 WebViewImpl::create(nullptr, WebPageVisibilityStateVisible); |
| 2151 FrameTestHelpers::TestWebFrameClient webFrameClient; | 2151 FrameTestHelpers::TestWebFrameClient webFrameClient; |
| 2152 FrameTestHelpers::TestWebWidgetClient webWidgetClient; | 2152 FrameTestHelpers::TestWebWidgetClient webWidgetClient; |
| 2153 WebLocalFrame* localFrame = | 2153 WebLocalFrame* localFrame = |
| 2154 WebLocalFrame::create(WebTreeScopeType::Document, &webFrameClient); | 2154 WebLocalFrame::create(WebTreeScopeType::Document, &webFrameClient); |
| 2155 webView->setMainFrame(localFrame); | 2155 webView->setMainFrame(localFrame); |
| 2156 | 2156 |
| 2157 // TODO(dcheng): The main frame widget currently has a special case. | 2157 // TODO(dcheng): The main frame widget currently has a special case. |
| 2158 // Eliminate this once WebView is no longer a WebWidget. | 2158 // Eliminate this once WebView is no longer a WebWidget. |
| 2159 blink::WebFrameWidget::create(&webWidgetClient, webView, localFrame); | 2159 blink::WebFrameWidget::create(&webWidgetClient, webView, localFrame); |
| 2160 | 2160 |
| 2161 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, | 2161 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
| 2162 WebInputEvent::TimeStampForTesting); | 2162 WebInputEvent::TimeStampForTesting); |
| 2163 event.sourceDevice = WebGestureDeviceTouchscreen; | 2163 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2164 event.x = 3; | 2164 event.x = 3; |
| 2165 event.y = 8; | 2165 event.y = 8; |
| 2166 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); | 2166 EXPECT_EQ(WebInputEventResult::NotHandled, |
| 2167 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2167 webView->close(); | 2168 webView->close(); |
| 2168 } | 2169 } |
| 2169 | 2170 |
| 2170 TEST_P(WebViewTest, LongPressEmptyDiv) { | 2171 TEST_P(WebViewTest, LongPressEmptyDiv) { |
| 2171 URLTestHelpers::registerMockedURLFromBaseURL( | 2172 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2172 WebString::fromUTF8(m_baseURL.c_str()), | 2173 WebString::fromUTF8(m_baseURL.c_str()), |
| 2173 WebString::fromUTF8("long_press_empty_div.html")); | 2174 WebString::fromUTF8("long_press_empty_div.html")); |
| 2174 | 2175 |
| 2175 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2176 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| 2176 m_baseURL + "long_press_empty_div.html", true); | 2177 m_baseURL + "long_press_empty_div.html", true); |
| 2177 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2178 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
| 2178 webView->resize(WebSize(500, 300)); | 2179 webView->resize(WebSize(500, 300)); |
| 2179 webView->updateAllLifecyclePhases(); | 2180 webView->updateAllLifecyclePhases(); |
| 2180 runPendingTasks(); | 2181 runPendingTasks(); |
| 2181 | 2182 |
| 2182 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2183 WebGestureEvent event(WebInputEvent::GestureLongPress, |
| 2183 WebInputEvent::NoModifiers, | 2184 WebInputEvent::NoModifiers, |
| 2184 WebInputEvent::TimeStampForTesting); | 2185 WebInputEvent::TimeStampForTesting); |
| 2185 event.sourceDevice = WebGestureDeviceTouchscreen; | 2186 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2186 event.x = 250; | 2187 event.x = 250; |
| 2187 event.y = 150; | 2188 event.y = 150; |
| 2188 | 2189 |
| 2189 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); | 2190 EXPECT_EQ(WebInputEventResult::NotHandled, |
| 2191 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2190 } | 2192 } |
| 2191 | 2193 |
| 2192 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { | 2194 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { |
| 2193 URLTestHelpers::registerMockedURLFromBaseURL( | 2195 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2194 WebString::fromUTF8(m_baseURL.c_str()), | 2196 WebString::fromUTF8(m_baseURL.c_str()), |
| 2195 WebString::fromUTF8("long_press_empty_div.html")); | 2197 WebString::fromUTF8("long_press_empty_div.html")); |
| 2196 | 2198 |
| 2197 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2199 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| 2198 m_baseURL + "long_press_empty_div.html", true); | 2200 m_baseURL + "long_press_empty_div.html", true); |
| 2199 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2201 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
| 2200 webView->resize(WebSize(500, 300)); | 2202 webView->resize(WebSize(500, 300)); |
| 2201 webView->updateAllLifecyclePhases(); | 2203 webView->updateAllLifecyclePhases(); |
| 2202 runPendingTasks(); | 2204 runPendingTasks(); |
| 2203 | 2205 |
| 2204 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2206 WebGestureEvent event(WebInputEvent::GestureLongPress, |
| 2205 WebInputEvent::NoModifiers, | 2207 WebInputEvent::NoModifiers, |
| 2206 WebInputEvent::TimeStampForTesting); | 2208 WebInputEvent::TimeStampForTesting); |
| 2207 event.sourceDevice = WebGestureDeviceTouchscreen; | 2209 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2208 event.x = 250; | 2210 event.x = 250; |
| 2209 event.y = 150; | 2211 event.y = 150; |
| 2210 | 2212 |
| 2211 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2213 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2212 webView->handleInputEvent(event)); | 2214 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2213 } | 2215 } |
| 2214 | 2216 |
| 2215 TEST_P(WebViewTest, LongPressObject) { | 2217 TEST_P(WebViewTest, LongPressObject) { |
| 2216 URLTestHelpers::registerMockedURLFromBaseURL( | 2218 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2217 WebString::fromUTF8(m_baseURL.c_str()), | 2219 WebString::fromUTF8(m_baseURL.c_str()), |
| 2218 WebString::fromUTF8("long_press_object.html")); | 2220 WebString::fromUTF8("long_press_object.html")); |
| 2219 | 2221 |
| 2220 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2222 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| 2221 m_baseURL + "long_press_object.html", true); | 2223 m_baseURL + "long_press_object.html", true); |
| 2222 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2224 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
| 2223 webView->resize(WebSize(500, 300)); | 2225 webView->resize(WebSize(500, 300)); |
| 2224 webView->updateAllLifecyclePhases(); | 2226 webView->updateAllLifecyclePhases(); |
| 2225 runPendingTasks(); | 2227 runPendingTasks(); |
| 2226 | 2228 |
| 2227 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2229 WebGestureEvent event(WebInputEvent::GestureLongPress, |
| 2228 WebInputEvent::NoModifiers, | 2230 WebInputEvent::NoModifiers, |
| 2229 WebInputEvent::TimeStampForTesting); | 2231 WebInputEvent::TimeStampForTesting); |
| 2230 event.sourceDevice = WebGestureDeviceTouchscreen; | 2232 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2231 event.x = 10; | 2233 event.x = 10; |
| 2232 event.y = 10; | 2234 event.y = 10; |
| 2233 | 2235 |
| 2234 EXPECT_NE(WebInputEventResult::HandledSystem, | 2236 EXPECT_NE(WebInputEventResult::HandledSystem, |
| 2235 webView->handleInputEvent(event)); | 2237 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2236 | 2238 |
| 2237 HTMLElement* element = | 2239 HTMLElement* element = |
| 2238 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); | 2240 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); |
| 2239 EXPECT_FALSE(element->canStartSelection()); | 2241 EXPECT_FALSE(element->canStartSelection()); |
| 2240 } | 2242 } |
| 2241 | 2243 |
| 2242 TEST_P(WebViewTest, LongPressObjectFallback) { | 2244 TEST_P(WebViewTest, LongPressObjectFallback) { |
| 2243 URLTestHelpers::registerMockedURLFromBaseURL( | 2245 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2244 WebString::fromUTF8(m_baseURL.c_str()), | 2246 WebString::fromUTF8(m_baseURL.c_str()), |
| 2245 WebString::fromUTF8("long_press_object_fallback.html")); | 2247 WebString::fromUTF8("long_press_object_fallback.html")); |
| 2246 | 2248 |
| 2247 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2249 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| 2248 m_baseURL + "long_press_object_fallback.html", true); | 2250 m_baseURL + "long_press_object_fallback.html", true); |
| 2249 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2251 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
| 2250 webView->resize(WebSize(500, 300)); | 2252 webView->resize(WebSize(500, 300)); |
| 2251 webView->updateAllLifecyclePhases(); | 2253 webView->updateAllLifecyclePhases(); |
| 2252 runPendingTasks(); | 2254 runPendingTasks(); |
| 2253 | 2255 |
| 2254 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2256 WebGestureEvent event(WebInputEvent::GestureLongPress, |
| 2255 WebInputEvent::NoModifiers, | 2257 WebInputEvent::NoModifiers, |
| 2256 WebInputEvent::TimeStampForTesting); | 2258 WebInputEvent::TimeStampForTesting); |
| 2257 event.sourceDevice = WebGestureDeviceTouchscreen; | 2259 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2258 event.x = 10; | 2260 event.x = 10; |
| 2259 event.y = 10; | 2261 event.y = 10; |
| 2260 | 2262 |
| 2261 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2263 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2262 webView->handleInputEvent(event)); | 2264 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2263 | 2265 |
| 2264 HTMLElement* element = | 2266 HTMLElement* element = |
| 2265 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); | 2267 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); |
| 2266 EXPECT_TRUE(element->canStartSelection()); | 2268 EXPECT_TRUE(element->canStartSelection()); |
| 2267 } | 2269 } |
| 2268 | 2270 |
| 2269 TEST_P(WebViewTest, LongPressImage) { | 2271 TEST_P(WebViewTest, LongPressImage) { |
| 2270 URLTestHelpers::registerMockedURLFromBaseURL( | 2272 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2271 WebString::fromUTF8(m_baseURL.c_str()), | 2273 WebString::fromUTF8(m_baseURL.c_str()), |
| 2272 WebString::fromUTF8("long_press_image.html")); | 2274 WebString::fromUTF8("long_press_image.html")); |
| 2273 | 2275 |
| 2274 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2276 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| 2275 m_baseURL + "long_press_image.html", true); | 2277 m_baseURL + "long_press_image.html", true); |
| 2276 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2278 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
| 2277 webView->resize(WebSize(500, 300)); | 2279 webView->resize(WebSize(500, 300)); |
| 2278 webView->updateAllLifecyclePhases(); | 2280 webView->updateAllLifecyclePhases(); |
| 2279 runPendingTasks(); | 2281 runPendingTasks(); |
| 2280 | 2282 |
| 2281 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2283 WebGestureEvent event(WebInputEvent::GestureLongPress, |
| 2282 WebInputEvent::NoModifiers, | 2284 WebInputEvent::NoModifiers, |
| 2283 WebInputEvent::TimeStampForTesting); | 2285 WebInputEvent::TimeStampForTesting); |
| 2284 event.sourceDevice = WebGestureDeviceTouchscreen; | 2286 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2285 event.x = 10; | 2287 event.x = 10; |
| 2286 event.y = 10; | 2288 event.y = 10; |
| 2287 | 2289 |
| 2288 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2290 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2289 webView->handleInputEvent(event)); | 2291 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2290 } | 2292 } |
| 2291 | 2293 |
| 2292 TEST_P(WebViewTest, LongPressVideo) { | 2294 TEST_P(WebViewTest, LongPressVideo) { |
| 2293 URLTestHelpers::registerMockedURLFromBaseURL( | 2295 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2294 WebString::fromUTF8(m_baseURL.c_str()), | 2296 WebString::fromUTF8(m_baseURL.c_str()), |
| 2295 WebString::fromUTF8("long_press_video.html")); | 2297 WebString::fromUTF8("long_press_video.html")); |
| 2296 | 2298 |
| 2297 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2299 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| 2298 m_baseURL + "long_press_video.html", true); | 2300 m_baseURL + "long_press_video.html", true); |
| 2299 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2301 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
| 2300 webView->resize(WebSize(500, 300)); | 2302 webView->resize(WebSize(500, 300)); |
| 2301 webView->updateAllLifecyclePhases(); | 2303 webView->updateAllLifecyclePhases(); |
| 2302 runPendingTasks(); | 2304 runPendingTasks(); |
| 2303 | 2305 |
| 2304 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2306 WebGestureEvent event(WebInputEvent::GestureLongPress, |
| 2305 WebInputEvent::NoModifiers, | 2307 WebInputEvent::NoModifiers, |
| 2306 WebInputEvent::TimeStampForTesting); | 2308 WebInputEvent::TimeStampForTesting); |
| 2307 event.sourceDevice = WebGestureDeviceTouchscreen; | 2309 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2308 event.x = 10; | 2310 event.x = 10; |
| 2309 event.y = 10; | 2311 event.y = 10; |
| 2310 | 2312 |
| 2311 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2313 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2312 webView->handleInputEvent(event)); | 2314 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2313 } | 2315 } |
| 2314 | 2316 |
| 2315 TEST_P(WebViewTest, LongPressLink) { | 2317 TEST_P(WebViewTest, LongPressLink) { |
| 2316 URLTestHelpers::registerMockedURLFromBaseURL( | 2318 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2317 WebString::fromUTF8(m_baseURL.c_str()), | 2319 WebString::fromUTF8(m_baseURL.c_str()), |
| 2318 WebString::fromUTF8("long_press_link.html")); | 2320 WebString::fromUTF8("long_press_link.html")); |
| 2319 | 2321 |
| 2320 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2322 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| 2321 m_baseURL + "long_press_link.html", true); | 2323 m_baseURL + "long_press_link.html", true); |
| 2322 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2324 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
| 2323 webView->resize(WebSize(500, 300)); | 2325 webView->resize(WebSize(500, 300)); |
| 2324 webView->updateAllLifecyclePhases(); | 2326 webView->updateAllLifecyclePhases(); |
| 2325 runPendingTasks(); | 2327 runPendingTasks(); |
| 2326 | 2328 |
| 2327 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2329 WebGestureEvent event(WebInputEvent::GestureLongPress, |
| 2328 WebInputEvent::NoModifiers, | 2330 WebInputEvent::NoModifiers, |
| 2329 WebInputEvent::TimeStampForTesting); | 2331 WebInputEvent::TimeStampForTesting); |
| 2330 event.sourceDevice = WebGestureDeviceTouchscreen; | 2332 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2331 event.x = 500; | 2333 event.x = 500; |
| 2332 event.y = 300; | 2334 event.y = 300; |
| 2333 | 2335 |
| 2334 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2336 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2335 webView->handleInputEvent(event)); | 2337 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2336 } | 2338 } |
| 2337 | 2339 |
| 2338 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { | 2340 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { |
| 2339 URLTestHelpers::registerMockedURLFromBaseURL( | 2341 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2340 WebString::fromUTF8(m_baseURL.c_str()), | 2342 WebString::fromUTF8(m_baseURL.c_str()), |
| 2341 WebString::fromUTF8("long_press_links_and_images.html")); | 2343 WebString::fromUTF8("long_press_links_and_images.html")); |
| 2342 | 2344 |
| 2343 URLTestHelpers::registerMockedURLLoad(toKURL("http://www.test.com/foo.png"), | 2345 URLTestHelpers::registerMockedURLLoad(toKURL("http://www.test.com/foo.png"), |
| 2344 "white-1x1.png"); | 2346 "white-1x1.png"); |
| 2345 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2347 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| (...skipping 29 matching lines...) Expand all Loading... |
| 2375 runPendingTasks(); | 2377 runPendingTasks(); |
| 2376 | 2378 |
| 2377 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2379 WebGestureEvent event(WebInputEvent::GestureLongPress, |
| 2378 WebInputEvent::NoModifiers, | 2380 WebInputEvent::NoModifiers, |
| 2379 WebInputEvent::TimeStampForTesting); | 2381 WebInputEvent::TimeStampForTesting); |
| 2380 event.sourceDevice = WebGestureDeviceTouchscreen; | 2382 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2381 event.x = 10; | 2383 event.x = 10; |
| 2382 event.y = 10; | 2384 event.y = 10; |
| 2383 | 2385 |
| 2384 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2386 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2385 webView->handleInputEvent(event)); | 2387 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2386 } | 2388 } |
| 2387 | 2389 |
| 2388 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { | 2390 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { |
| 2389 URLTestHelpers::registerMockedURLFromBaseURL( | 2391 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2390 WebString::fromUTF8(m_baseURL.c_str()), | 2392 WebString::fromUTF8(m_baseURL.c_str()), |
| 2391 WebString::fromUTF8("long_press_image.html")); | 2393 WebString::fromUTF8("long_press_image.html")); |
| 2392 | 2394 |
| 2393 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2395 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| 2394 m_baseURL + "long_press_image.html", true); | 2396 m_baseURL + "long_press_image.html", true); |
| 2395 webView->resize(WebSize(500, 500)); | 2397 webView->resize(WebSize(500, 500)); |
| 2396 webView->updateAllLifecyclePhases(); | 2398 webView->updateAllLifecyclePhases(); |
| 2397 runPendingTasks(); | 2399 runPendingTasks(); |
| 2398 | 2400 |
| 2399 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2401 WebGestureEvent event(WebInputEvent::GestureLongPress, |
| 2400 WebInputEvent::NoModifiers, | 2402 WebInputEvent::NoModifiers, |
| 2401 WebInputEvent::TimeStampForTesting); | 2403 WebInputEvent::TimeStampForTesting); |
| 2402 event.sourceDevice = WebGestureDeviceTouchscreen; | 2404 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2403 event.x = 300; | 2405 event.x = 300; |
| 2404 event.y = 300; | 2406 event.y = 300; |
| 2405 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2407 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
| 2406 | 2408 |
| 2407 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2409 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2408 webView->handleInputEvent(event)); | 2410 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
| 2409 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2411 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
| 2410 } | 2412 } |
| 2411 | 2413 |
| 2412 TEST_P(WebViewTest, LongPressSelection) { | 2414 TEST_P(WebViewTest, LongPressSelection) { |
| 2413 URLTestHelpers::registerMockedURLFromBaseURL( | 2415 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2414 WebString::fromUTF8(m_baseURL.c_str()), | 2416 WebString::fromUTF8(m_baseURL.c_str()), |
| 2415 WebString::fromUTF8("longpress_selection.html")); | 2417 WebString::fromUTF8("longpress_selection.html")); |
| 2416 | 2418 |
| 2417 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2419 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| 2418 m_baseURL + "longpress_selection.html", true); | 2420 m_baseURL + "longpress_selection.html", true); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2452 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2454 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
| 2453 | 2455 |
| 2454 // Double-tap on carriage returns. | 2456 // Double-tap on carriage returns. |
| 2455 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, | 2457 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
| 2456 WebInputEvent::TimeStampForTesting); | 2458 WebInputEvent::TimeStampForTesting); |
| 2457 event.sourceDevice = WebGestureDeviceTouchscreen; | 2459 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2458 event.x = 100; | 2460 event.x = 100; |
| 2459 event.y = 25; | 2461 event.y = 25; |
| 2460 event.data.tap.tapCount = 2; | 2462 event.data.tap.tapCount = 2; |
| 2461 | 2463 |
| 2462 webView->handleInputEvent(event); | 2464 webView->handleInputEvent(WebCoalescedInputEvent(event)); |
| 2463 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2465 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
| 2464 | 2466 |
| 2465 HTMLTextAreaElement* textAreaElement = toHTMLTextAreaElement( | 2467 HTMLTextAreaElement* textAreaElement = toHTMLTextAreaElement( |
| 2466 webView->mainFrame()->document().getElementById(blanklinestextbox)); | 2468 webView->mainFrame()->document().getElementById(blanklinestextbox)); |
| 2467 textAreaElement->setValue("hello"); | 2469 textAreaElement->setValue("hello"); |
| 2468 | 2470 |
| 2469 // Long-press past last word of textbox. | 2471 // Long-press past last word of textbox. |
| 2470 EXPECT_TRUE( | 2472 EXPECT_TRUE( |
| 2471 tapElementById(WebInputEvent::GestureLongPress, blanklinestextbox)); | 2473 tapElementById(WebInputEvent::GestureLongPress, blanklinestextbox)); |
| 2472 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2474 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
| 2473 | 2475 |
| 2474 // Double-tap past last word of textbox. | 2476 // Double-tap past last word of textbox. |
| 2475 webView->handleInputEvent(event); | 2477 webView->handleInputEvent(WebCoalescedInputEvent(event)); |
| 2476 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2478 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
| 2477 } | 2479 } |
| 2478 #endif | 2480 #endif |
| 2479 | 2481 |
| 2480 TEST_P(WebViewTest, LongPressImageTextarea) { | 2482 TEST_P(WebViewTest, LongPressImageTextarea) { |
| 2481 URLTestHelpers::registerMockedURLFromBaseURL( | 2483 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2482 WebString::fromUTF8(m_baseURL.c_str()), | 2484 WebString::fromUTF8(m_baseURL.c_str()), |
| 2483 WebString::fromUTF8("longpress_image_contenteditable.html")); | 2485 WebString::fromUTF8("longpress_image_contenteditable.html")); |
| 2484 | 2486 |
| 2485 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2487 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2527 // We suspend caret blinking when pressing with mouse right button. | 2529 // We suspend caret blinking when pressing with mouse right button. |
| 2528 // Note that we do not send MouseUp event here since it will be consumed | 2530 // Note that we do not send MouseUp event here since it will be consumed |
| 2529 // by the context menu once it shows up. | 2531 // by the context menu once it shows up. |
| 2530 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, | 2532 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, |
| 2531 WebInputEvent::TimeStampForTesting); | 2533 WebInputEvent::TimeStampForTesting); |
| 2532 | 2534 |
| 2533 mouseEvent.button = WebMouseEvent::Button::Right; | 2535 mouseEvent.button = WebMouseEvent::Button::Right; |
| 2534 mouseEvent.x = 1; | 2536 mouseEvent.x = 1; |
| 2535 mouseEvent.y = 1; | 2537 mouseEvent.y = 1; |
| 2536 mouseEvent.clickCount = 1; | 2538 mouseEvent.clickCount = 1; |
| 2537 webView->handleInputEvent(mouseEvent); | 2539 webView->handleInputEvent(WebCoalescedInputEvent(mouseEvent)); |
| 2538 runPendingTasks(); | 2540 runPendingTasks(); |
| 2539 | 2541 |
| 2540 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); | 2542 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); |
| 2541 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); | 2543 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); |
| 2542 | 2544 |
| 2543 // Caret blinking is still suspended after showing context menu. | 2545 // Caret blinking is still suspended after showing context menu. |
| 2544 webView->showContextMenu(); | 2546 webView->showContextMenu(); |
| 2545 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); | 2547 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); |
| 2546 | 2548 |
| 2547 // Caret blinking will be resumed only after context menu is closed. | 2549 // Caret blinking will be resumed only after context menu is closed. |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2582 webView->updateAllLifecyclePhases(); | 2584 webView->updateAllLifecyclePhases(); |
| 2583 runPendingTasks(); | 2585 runPendingTasks(); |
| 2584 | 2586 |
| 2585 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, | 2587 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 2586 WebInputEvent::NoModifiers, | 2588 WebInputEvent::NoModifiers, |
| 2587 WebInputEvent::TimeStampForTesting); | 2589 WebInputEvent::TimeStampForTesting); |
| 2588 | 2590 |
| 2589 // RawKeyDown pagedown should be handled. | 2591 // RawKeyDown pagedown should be handled. |
| 2590 keyEvent.windowsKeyCode = VKEY_NEXT; | 2592 keyEvent.windowsKeyCode = VKEY_NEXT; |
| 2591 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2593 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2592 webView->handleInputEvent(keyEvent)); | 2594 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent))); |
| 2593 keyEvent.setType(WebInputEvent::KeyUp); | 2595 keyEvent.setType(WebInputEvent::KeyUp); |
| 2594 webView->handleInputEvent(keyEvent); | 2596 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2595 | 2597 |
| 2596 // Coalesced KeyDown arrow-down should be handled. | 2598 // Coalesced KeyDown arrow-down should be handled. |
| 2597 keyEvent.windowsKeyCode = VKEY_DOWN; | 2599 keyEvent.windowsKeyCode = VKEY_DOWN; |
| 2598 keyEvent.setType(WebInputEvent::KeyDown); | 2600 keyEvent.setType(WebInputEvent::KeyDown); |
| 2599 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2601 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2600 webView->handleInputEvent(keyEvent)); | 2602 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent))); |
| 2601 keyEvent.setType(WebInputEvent::KeyUp); | 2603 keyEvent.setType(WebInputEvent::KeyUp); |
| 2602 webView->handleInputEvent(keyEvent); | 2604 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2603 | 2605 |
| 2604 // Ctrl-Home should be handled... | 2606 // Ctrl-Home should be handled... |
| 2605 keyEvent.windowsKeyCode = VKEY_HOME; | 2607 keyEvent.windowsKeyCode = VKEY_HOME; |
| 2606 keyEvent.setModifiers(WebInputEvent::ControlKey); | 2608 keyEvent.setModifiers(WebInputEvent::ControlKey); |
| 2607 keyEvent.setType(WebInputEvent::RawKeyDown); | 2609 keyEvent.setType(WebInputEvent::RawKeyDown); |
| 2608 EXPECT_EQ(WebInputEventResult::NotHandled, | 2610 EXPECT_EQ(WebInputEventResult::NotHandled, |
| 2609 webView->handleInputEvent(keyEvent)); | 2611 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent))); |
| 2610 keyEvent.setType(WebInputEvent::KeyUp); | 2612 keyEvent.setType(WebInputEvent::KeyUp); |
| 2611 webView->handleInputEvent(keyEvent); | 2613 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2612 | 2614 |
| 2613 // But Ctrl-Down should not. | 2615 // But Ctrl-Down should not. |
| 2614 keyEvent.windowsKeyCode = VKEY_DOWN; | 2616 keyEvent.windowsKeyCode = VKEY_DOWN; |
| 2615 keyEvent.setModifiers(WebInputEvent::ControlKey); | 2617 keyEvent.setModifiers(WebInputEvent::ControlKey); |
| 2616 keyEvent.setType(WebInputEvent::RawKeyDown); | 2618 keyEvent.setType(WebInputEvent::RawKeyDown); |
| 2617 EXPECT_EQ(WebInputEventResult::NotHandled, | 2619 EXPECT_EQ(WebInputEventResult::NotHandled, |
| 2618 webView->handleInputEvent(keyEvent)); | 2620 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent))); |
| 2619 keyEvent.setType(WebInputEvent::KeyUp); | 2621 keyEvent.setType(WebInputEvent::KeyUp); |
| 2620 webView->handleInputEvent(keyEvent); | 2622 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2621 | 2623 |
| 2622 // Shift, meta, and alt should not be handled. | 2624 // Shift, meta, and alt should not be handled. |
| 2623 keyEvent.windowsKeyCode = VKEY_NEXT; | 2625 keyEvent.windowsKeyCode = VKEY_NEXT; |
| 2624 keyEvent.setModifiers(WebInputEvent::ShiftKey); | 2626 keyEvent.setModifiers(WebInputEvent::ShiftKey); |
| 2625 keyEvent.setType(WebInputEvent::RawKeyDown); | 2627 keyEvent.setType(WebInputEvent::RawKeyDown); |
| 2626 EXPECT_EQ(WebInputEventResult::NotHandled, | 2628 EXPECT_EQ(WebInputEventResult::NotHandled, |
| 2627 webView->handleInputEvent(keyEvent)); | 2629 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent))); |
| 2628 keyEvent.setType(WebInputEvent::KeyUp); | 2630 keyEvent.setType(WebInputEvent::KeyUp); |
| 2629 webView->handleInputEvent(keyEvent); | 2631 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2630 | 2632 |
| 2631 keyEvent.windowsKeyCode = VKEY_NEXT; | 2633 keyEvent.windowsKeyCode = VKEY_NEXT; |
| 2632 keyEvent.setModifiers(WebInputEvent::MetaKey); | 2634 keyEvent.setModifiers(WebInputEvent::MetaKey); |
| 2633 keyEvent.setType(WebInputEvent::RawKeyDown); | 2635 keyEvent.setType(WebInputEvent::RawKeyDown); |
| 2634 EXPECT_EQ(WebInputEventResult::NotHandled, | 2636 EXPECT_EQ(WebInputEventResult::NotHandled, |
| 2635 webView->handleInputEvent(keyEvent)); | 2637 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent))); |
| 2636 keyEvent.setType(WebInputEvent::KeyUp); | 2638 keyEvent.setType(WebInputEvent::KeyUp); |
| 2637 webView->handleInputEvent(keyEvent); | 2639 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2638 | 2640 |
| 2639 keyEvent.windowsKeyCode = VKEY_NEXT; | 2641 keyEvent.windowsKeyCode = VKEY_NEXT; |
| 2640 keyEvent.setModifiers(WebInputEvent::AltKey); | 2642 keyEvent.setModifiers(WebInputEvent::AltKey); |
| 2641 keyEvent.setType(WebInputEvent::RawKeyDown); | 2643 keyEvent.setType(WebInputEvent::RawKeyDown); |
| 2642 EXPECT_EQ(WebInputEventResult::NotHandled, | 2644 EXPECT_EQ(WebInputEventResult::NotHandled, |
| 2643 webView->handleInputEvent(keyEvent)); | 2645 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent))); |
| 2644 keyEvent.setType(WebInputEvent::KeyUp); | 2646 keyEvent.setType(WebInputEvent::KeyUp); |
| 2645 webView->handleInputEvent(keyEvent); | 2647 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2646 | 2648 |
| 2647 // System-key labeled Alt-Down (as in Windows) should do nothing, | 2649 // System-key labeled Alt-Down (as in Windows) should do nothing, |
| 2648 // but non-system-key labeled Alt-Down (as in Mac) should be handled | 2650 // but non-system-key labeled Alt-Down (as in Mac) should be handled |
| 2649 // as a page-down. | 2651 // as a page-down. |
| 2650 keyEvent.windowsKeyCode = VKEY_DOWN; | 2652 keyEvent.windowsKeyCode = VKEY_DOWN; |
| 2651 keyEvent.setModifiers(WebInputEvent::AltKey); | 2653 keyEvent.setModifiers(WebInputEvent::AltKey); |
| 2652 keyEvent.isSystemKey = true; | 2654 keyEvent.isSystemKey = true; |
| 2653 keyEvent.setType(WebInputEvent::RawKeyDown); | 2655 keyEvent.setType(WebInputEvent::RawKeyDown); |
| 2654 EXPECT_EQ(WebInputEventResult::NotHandled, | 2656 EXPECT_EQ(WebInputEventResult::NotHandled, |
| 2655 webView->handleInputEvent(keyEvent)); | 2657 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent))); |
| 2656 keyEvent.setType(WebInputEvent::KeyUp); | 2658 keyEvent.setType(WebInputEvent::KeyUp); |
| 2657 webView->handleInputEvent(keyEvent); | 2659 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2658 | 2660 |
| 2659 keyEvent.windowsKeyCode = VKEY_DOWN; | 2661 keyEvent.windowsKeyCode = VKEY_DOWN; |
| 2660 keyEvent.setModifiers(WebInputEvent::AltKey); | 2662 keyEvent.setModifiers(WebInputEvent::AltKey); |
| 2661 keyEvent.isSystemKey = false; | 2663 keyEvent.isSystemKey = false; |
| 2662 keyEvent.setType(WebInputEvent::RawKeyDown); | 2664 keyEvent.setType(WebInputEvent::RawKeyDown); |
| 2663 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2665 EXPECT_EQ(WebInputEventResult::HandledSystem, |
| 2664 webView->handleInputEvent(keyEvent)); | 2666 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent))); |
| 2665 keyEvent.setType(WebInputEvent::KeyUp); | 2667 keyEvent.setType(WebInputEvent::KeyUp); |
| 2666 webView->handleInputEvent(keyEvent); | 2668 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2667 } | 2669 } |
| 2668 | 2670 |
| 2669 static void configueCompositingWebView(WebSettings* settings) { | 2671 static void configueCompositingWebView(WebSettings* settings) { |
| 2670 settings->setAcceleratedCompositingEnabled(true); | 2672 settings->setAcceleratedCompositingEnabled(true); |
| 2671 settings->setPreferCompositingToLCDTextEnabled(true); | 2673 settings->setPreferCompositingToLCDTextEnabled(true); |
| 2672 } | 2674 } |
| 2673 | 2675 |
| 2674 TEST_P(WebViewTest, ShowPressOnTransformedLink) { | 2676 TEST_P(WebViewTest, ShowPressOnTransformedLink) { |
| 2675 std::unique_ptr<FrameTestHelpers::TestWebViewClient> | 2677 std::unique_ptr<FrameTestHelpers::TestWebViewClient> |
| 2676 fakeCompositingWebViewClient = | 2678 fakeCompositingWebViewClient = |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2693 baseURL); | 2695 baseURL); |
| 2694 | 2696 |
| 2695 WebGestureEvent event(WebInputEvent::GestureShowPress, | 2697 WebGestureEvent event(WebInputEvent::GestureShowPress, |
| 2696 WebInputEvent::NoModifiers, | 2698 WebInputEvent::NoModifiers, |
| 2697 WebInputEvent::TimeStampForTesting); | 2699 WebInputEvent::TimeStampForTesting); |
| 2698 event.sourceDevice = WebGestureDeviceTouchscreen; | 2700 event.sourceDevice = WebGestureDeviceTouchscreen; |
| 2699 event.x = 20; | 2701 event.x = 20; |
| 2700 event.y = 20; | 2702 event.y = 20; |
| 2701 | 2703 |
| 2702 // Just make sure we don't hit any asserts. | 2704 // Just make sure we don't hit any asserts. |
| 2703 webViewImpl->handleInputEvent(event); | 2705 webViewImpl->handleInputEvent(WebCoalescedInputEvent(event)); |
| 2704 } | 2706 } |
| 2705 | 2707 |
| 2706 class MockAutofillClient : public WebAutofillClient { | 2708 class MockAutofillClient : public WebAutofillClient { |
| 2707 public: | 2709 public: |
| 2708 MockAutofillClient() | 2710 MockAutofillClient() |
| 2709 : m_ignoreTextChanges(false), | 2711 : m_ignoreTextChanges(false), |
| 2710 m_textChangesFromUserGesture(0), | 2712 m_textChangesFromUserGesture(0), |
| 2711 m_textChangesWhileIgnored(0), | 2713 m_textChangesWhileIgnored(0), |
| 2712 m_textChangesWhileNotIgnored(0), | 2714 m_textChangesWhileNotIgnored(0), |
| 2713 m_userGestureNotificationsCount(0) {} | 2715 m_userGestureNotificationsCount(0) {} |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2817 frame->setEditableSelectionOffsets(11, 11); | 2819 frame->setEditableSelectionOffsets(11, 11); |
| 2818 verifySelectionAndComposition(webView, 11, 11, 6, 11, "initial case"); | 2820 verifySelectionAndComposition(webView, 11, 11, 6, 11, "initial case"); |
| 2819 | 2821 |
| 2820 // Press Backspace and verify composition didn't get cancelled. This is to | 2822 // Press Backspace and verify composition didn't get cancelled. This is to |
| 2821 // verify the fix for crbug.com/429916. | 2823 // verify the fix for crbug.com/429916. |
| 2822 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, | 2824 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 2823 WebInputEvent::NoModifiers, | 2825 WebInputEvent::NoModifiers, |
| 2824 WebInputEvent::TimeStampForTesting); | 2826 WebInputEvent::TimeStampForTesting); |
| 2825 keyEvent.domKey = Platform::current()->domKeyEnumFromString("\b"); | 2827 keyEvent.domKey = Platform::current()->domKeyEnumFromString("\b"); |
| 2826 keyEvent.windowsKeyCode = VKEY_BACK; | 2828 keyEvent.windowsKeyCode = VKEY_BACK; |
| 2827 webView->handleInputEvent(keyEvent); | 2829 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2828 | 2830 |
| 2829 frame->setEditableSelectionOffsets(6, 6); | 2831 frame->setEditableSelectionOffsets(6, 6); |
| 2830 EXPECT_TRUE(activeInputMethodController->setComposition( | 2832 EXPECT_TRUE(activeInputMethodController->setComposition( |
| 2831 "fghi", emptyUnderlines, 0, 4)); | 2833 "fghi", emptyUnderlines, 0, 4)); |
| 2832 frame->setEditableSelectionOffsets(10, 10); | 2834 frame->setEditableSelectionOffsets(10, 10); |
| 2833 verifySelectionAndComposition(webView, 10, 10, 6, 10, | 2835 verifySelectionAndComposition(webView, 10, 10, 6, 10, |
| 2834 "after pressing Backspace"); | 2836 "after pressing Backspace"); |
| 2835 | 2837 |
| 2836 keyEvent.setType(WebInputEvent::KeyUp); | 2838 keyEvent.setType(WebInputEvent::KeyUp); |
| 2837 webView->handleInputEvent(keyEvent); | 2839 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 2838 | 2840 |
| 2839 webView->advanceFocus(false); | 2841 webView->advanceFocus(false); |
| 2840 } | 2842 } |
| 2841 | 2843 |
| 2842 frame->setAutofillClient(0); | 2844 frame->setAutofillClient(0); |
| 2843 } | 2845 } |
| 2844 | 2846 |
| 2845 TEST_P(WebViewTest, FinishComposingTextTriggersAutofillTextChange) { | 2847 TEST_P(WebViewTest, FinishComposingTextTriggersAutofillTextChange) { |
| 2846 URLTestHelpers::registerMockedURLFromBaseURL( | 2848 URLTestHelpers::registerMockedURLFromBaseURL( |
| 2847 WebString::fromUTF8(m_baseURL.c_str()), | 2849 WebString::fromUTF8(m_baseURL.c_str()), |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3022 | 3024 |
| 3023 static void openDateTimeChooser(WebView* webView, | 3025 static void openDateTimeChooser(WebView* webView, |
| 3024 HTMLInputElement* inputElement) { | 3026 HTMLInputElement* inputElement) { |
| 3025 inputElement->focus(); | 3027 inputElement->focus(); |
| 3026 | 3028 |
| 3027 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, | 3029 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 3028 WebInputEvent::NoModifiers, | 3030 WebInputEvent::NoModifiers, |
| 3029 WebInputEvent::TimeStampForTesting); | 3031 WebInputEvent::TimeStampForTesting); |
| 3030 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); | 3032 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); |
| 3031 keyEvent.windowsKeyCode = VKEY_SPACE; | 3033 keyEvent.windowsKeyCode = VKEY_SPACE; |
| 3032 webView->handleInputEvent(keyEvent); | 3034 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 3033 | 3035 |
| 3034 keyEvent.setType(WebInputEvent::KeyUp); | 3036 keyEvent.setType(WebInputEvent::KeyUp); |
| 3035 webView->handleInputEvent(keyEvent); | 3037 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 3036 } | 3038 } |
| 3037 | 3039 |
| 3038 // TODO(crbug.com/605112) This test is crashing on Android (Nexus 4) bot. | 3040 // TODO(crbug.com/605112) This test is crashing on Android (Nexus 4) bot. |
| 3039 #if OS(ANDROID) | 3041 #if OS(ANDROID) |
| 3040 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { | 3042 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { |
| 3041 #else | 3043 #else |
| 3042 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { | 3044 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { |
| 3043 #endif | 3045 #endif |
| 3044 bool originalMultipleFieldsFlag = | 3046 bool originalMultipleFieldsFlag = |
| 3045 RuntimeEnabledFeatures::inputMultipleFieldsUIEnabled(); | 3047 RuntimeEnabledFeatures::inputMultipleFieldsUIEnabled(); |
| (...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3603 frame->setAutofillClient(&client); | 3605 frame->setAutofillClient(&client); |
| 3604 webView->setInitialFocus(false); | 3606 webView->setInitialFocus(false); |
| 3605 | 3607 |
| 3606 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); | 3608 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
| 3607 | 3609 |
| 3608 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, | 3610 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 3609 WebInputEvent::NoModifiers, | 3611 WebInputEvent::NoModifiers, |
| 3610 WebInputEvent::TimeStampForTesting); | 3612 WebInputEvent::TimeStampForTesting); |
| 3611 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); | 3613 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); |
| 3612 keyEvent.windowsKeyCode = VKEY_SPACE; | 3614 keyEvent.windowsKeyCode = VKEY_SPACE; |
| 3613 webView->handleInputEvent(keyEvent); | 3615 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 3614 keyEvent.setType(WebInputEvent::KeyUp); | 3616 keyEvent.setType(WebInputEvent::KeyUp); |
| 3615 webView->handleInputEvent(keyEvent); | 3617 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
| 3616 | 3618 |
| 3617 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); | 3619 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
| 3618 frame->setAutofillClient(0); | 3620 frame->setAutofillClient(0); |
| 3619 } | 3621 } |
| 3620 | 3622 |
| 3621 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { | 3623 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { |
| 3622 URLTestHelpers::registerMockedURLFromBaseURL( | 3624 URLTestHelpers::registerMockedURLFromBaseURL( |
| 3623 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | 3625 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); |
| 3624 MockAutofillClient client; | 3626 MockAutofillClient client; |
| 3625 WebViewImpl* webView = | 3627 WebViewImpl* webView = |
| 3626 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 3628 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
| 3627 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3629 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
| 3628 frame->setAutofillClient(&client); | 3630 frame->setAutofillClient(&client); |
| 3629 webView->setInitialFocus(false); | 3631 webView->setInitialFocus(false); |
| 3630 | 3632 |
| 3631 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); | 3633 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
| 3632 | 3634 |
| 3633 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, | 3635 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, |
| 3634 WebInputEvent::TimeStampForTesting); | 3636 WebInputEvent::TimeStampForTesting); |
| 3635 mouseEvent.button = WebMouseEvent::Button::Left; | 3637 mouseEvent.button = WebMouseEvent::Button::Left; |
| 3636 mouseEvent.x = 1; | 3638 mouseEvent.x = 1; |
| 3637 mouseEvent.y = 1; | 3639 mouseEvent.y = 1; |
| 3638 mouseEvent.clickCount = 1; | 3640 mouseEvent.clickCount = 1; |
| 3639 webView->handleInputEvent(mouseEvent); | 3641 webView->handleInputEvent(WebCoalescedInputEvent(mouseEvent)); |
| 3640 mouseEvent.setType(WebInputEvent::MouseUp); | 3642 mouseEvent.setType(WebInputEvent::MouseUp); |
| 3641 webView->handleInputEvent(mouseEvent); | 3643 webView->handleInputEvent(WebCoalescedInputEvent(mouseEvent)); |
| 3642 | 3644 |
| 3643 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); | 3645 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
| 3644 frame->setAutofillClient(0); | 3646 frame->setAutofillClient(0); |
| 3645 } | 3647 } |
| 3646 | 3648 |
| 3647 TEST_P(WebViewTest, FirstUserGestureObservedGestureTap) { | 3649 TEST_P(WebViewTest, FirstUserGestureObservedGestureTap) { |
| 3648 URLTestHelpers::registerMockedURLFromBaseURL( | 3650 URLTestHelpers::registerMockedURLFromBaseURL( |
| 3649 WebString::fromUTF8(m_baseURL.c_str()), | 3651 WebString::fromUTF8(m_baseURL.c_str()), |
| 3650 WebString::fromUTF8("longpress_selection.html")); | 3652 WebString::fromUTF8("longpress_selection.html")); |
| 3651 MockAutofillClient client; | 3653 MockAutofillClient client; |
| (...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4352 frame->printBegin(printParams, WebNode()); | 4354 frame->printBegin(printParams, WebNode()); |
| 4353 webView->resize(WebSize(500, 500)); | 4355 webView->resize(WebSize(500, 500)); |
| 4354 EXPECT_EQ(500, vwElement->offsetWidth()); | 4356 EXPECT_EQ(500, vwElement->offsetWidth()); |
| 4355 | 4357 |
| 4356 webView->resize(WebSize(800, 600)); | 4358 webView->resize(WebSize(800, 600)); |
| 4357 frame->printEnd(); | 4359 frame->printEnd(); |
| 4358 EXPECT_EQ(800, vwElement->offsetWidth()); | 4360 EXPECT_EQ(800, vwElement->offsetWidth()); |
| 4359 } | 4361 } |
| 4360 | 4362 |
| 4361 } // namespace blink | 4363 } // namespace blink |
| OLD | NEW |