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