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

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

Powered by Google App Engine
This is Rietveld 408576698