Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(417)

Side by Side Diff: third_party/WebKit/Source/web/tests/WebViewTest.cpp

Issue 2621303004: Keep track of coalesced events in main thread event queue (Closed)
Patch Set: Rebase Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698