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