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 1960 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1971 | 1971 |
1972 // TODO(bokan): Technically incorrect, event positions should be in viewport | 1972 // TODO(bokan): Technically incorrect, event positions should be in viewport |
1973 // space. crbug.com/371902. | 1973 // space. crbug.com/371902. |
1974 IntPoint center = | 1974 IntPoint center = |
1975 m_webViewHelper.webView() | 1975 m_webViewHelper.webView() |
1976 ->mainFrameImpl() | 1976 ->mainFrameImpl() |
1977 ->frameView() | 1977 ->frameView() |
1978 ->contentsToScreen(element->layoutObject()->absoluteBoundingBoxRect()) | 1978 ->contentsToScreen(element->layoutObject()->absoluteBoundingBoxRect()) |
1979 .center(); | 1979 .center(); |
1980 | 1980 |
1981 WebGestureEvent event; | 1981 WebGestureEvent event(type, WebInputEvent::NoModifiers, |
1982 event.type = type; | 1982 WebInputEvent::TimeStampForTesting); |
| 1983 |
1983 event.sourceDevice = WebGestureDeviceTouchscreen; | 1984 event.sourceDevice = WebGestureDeviceTouchscreen; |
1984 event.x = center.x(); | 1985 event.x = center.x(); |
1985 event.y = center.y(); | 1986 event.y = center.y(); |
1986 | 1987 |
1987 m_webViewHelper.webView()->handleInputEvent(event); | 1988 m_webViewHelper.webView()->handleInputEvent(event); |
1988 runPendingTasks(); | 1989 runPendingTasks(); |
1989 return true; | 1990 return true; |
1990 } | 1991 } |
1991 | 1992 |
1992 bool WebViewTest::tapElementById(WebInputEvent::Type type, | 1993 bool WebViewTest::tapElementById(WebInputEvent::Type type, |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2035 EXPECT_TRUE(client.contentDetectionRequested()); | 2036 EXPECT_TRUE(client.contentDetectionRequested()); |
2036 EXPECT_FALSE(client.scheduledIntentURL().isValid()); | 2037 EXPECT_FALSE(client.scheduledIntentURL().isValid()); |
2037 | 2038 |
2038 WebURL intentURL = toKURL(m_baseURL); | 2039 WebURL intentURL = toKURL(m_baseURL); |
2039 client.setContentDetectionResult(intentURL); | 2040 client.setContentDetectionResult(intentURL); |
2040 EXPECT_TRUE(tapElementById(WebInputEvent::GestureTap, noListener)); | 2041 EXPECT_TRUE(tapElementById(WebInputEvent::GestureTap, noListener)); |
2041 EXPECT_TRUE(client.scheduledIntentURL() == intentURL); | 2042 EXPECT_TRUE(client.scheduledIntentURL() == intentURL); |
2042 EXPECT_TRUE(client.wasInMainFrame()); | 2043 EXPECT_TRUE(client.wasInMainFrame()); |
2043 | 2044 |
2044 // Tapping elsewhere should cancel the scheduled intent. | 2045 // Tapping elsewhere should cancel the scheduled intent. |
2045 WebGestureEvent event; | 2046 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
2046 event.type = WebInputEvent::GestureTap; | 2047 WebInputEvent::TimeStampForTesting); |
2047 event.sourceDevice = WebGestureDeviceTouchscreen; | 2048 event.sourceDevice = WebGestureDeviceTouchscreen; |
2048 webView->handleInputEvent(event); | 2049 webView->handleInputEvent(event); |
2049 runPendingTasks(); | 2050 runPendingTasks(); |
2050 EXPECT_TRUE(client.pendingIntentsCancelled()); | 2051 EXPECT_TRUE(client.pendingIntentsCancelled()); |
2051 | 2052 |
2052 // Explicitly reset to break dependency on locally scoped client. | 2053 // Explicitly reset to break dependency on locally scoped client. |
2053 m_webViewHelper.reset(); | 2054 m_webViewHelper.reset(); |
2054 } | 2055 } |
2055 | 2056 |
2056 TEST_P(WebViewTest, ContentDetectionInIframe) { | 2057 TEST_P(WebViewTest, ContentDetectionInIframe) { |
(...skipping 22 matching lines...) Expand all Loading... |
2079 | 2080 |
2080 // Explicitly reset to break dependency on locally scoped client. | 2081 // Explicitly reset to break dependency on locally scoped client. |
2081 m_webViewHelper.reset(); | 2082 m_webViewHelper.reset(); |
2082 } | 2083 } |
2083 | 2084 |
2084 TEST_P(WebViewTest, ClientTapHandling) { | 2085 TEST_P(WebViewTest, ClientTapHandling) { |
2085 TapHandlingWebViewClient client; | 2086 TapHandlingWebViewClient client; |
2086 client.reset(); | 2087 client.reset(); |
2087 WebView* webView = | 2088 WebView* webView = |
2088 m_webViewHelper.initializeAndLoad("about:blank", true, 0, &client); | 2089 m_webViewHelper.initializeAndLoad("about:blank", true, 0, &client); |
2089 WebGestureEvent event; | 2090 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
2090 event.type = WebInputEvent::GestureTap; | 2091 WebInputEvent::TimeStampForTesting); |
2091 event.sourceDevice = WebGestureDeviceTouchscreen; | 2092 event.sourceDevice = WebGestureDeviceTouchscreen; |
2092 event.x = 3; | 2093 event.x = 3; |
2093 event.y = 8; | 2094 event.y = 8; |
2094 webView->handleInputEvent(event); | 2095 webView->handleInputEvent(event); |
2095 runPendingTasks(); | 2096 runPendingTasks(); |
2096 EXPECT_EQ(3, client.tapX()); | 2097 EXPECT_EQ(3, client.tapX()); |
2097 EXPECT_EQ(8, client.tapY()); | 2098 EXPECT_EQ(8, client.tapY()); |
2098 client.reset(); | 2099 client.reset(); |
2099 event.type = WebInputEvent::GestureLongPress; | 2100 event.setType(WebInputEvent::GestureLongPress); |
2100 event.x = 25; | 2101 event.x = 25; |
2101 event.y = 7; | 2102 event.y = 7; |
2102 webView->handleInputEvent(event); | 2103 webView->handleInputEvent(event); |
2103 runPendingTasks(); | 2104 runPendingTasks(); |
2104 EXPECT_EQ(25, client.longpressX()); | 2105 EXPECT_EQ(25, client.longpressX()); |
2105 EXPECT_EQ(7, client.longpressY()); | 2106 EXPECT_EQ(7, client.longpressY()); |
2106 | 2107 |
2107 // Explicitly reset to break dependency on locally scoped client. | 2108 // Explicitly reset to break dependency on locally scoped client. |
2108 m_webViewHelper.reset(); | 2109 m_webViewHelper.reset(); |
2109 } | 2110 } |
2110 | 2111 |
2111 TEST_P(WebViewTest, ClientTapHandlingNullWebViewClient) { | 2112 TEST_P(WebViewTest, ClientTapHandlingNullWebViewClient) { |
2112 WebViewImpl* webView = | 2113 WebViewImpl* webView = |
2113 WebViewImpl::create(nullptr, WebPageVisibilityStateVisible); | 2114 WebViewImpl::create(nullptr, WebPageVisibilityStateVisible); |
2114 FrameTestHelpers::TestWebFrameClient webFrameClient; | 2115 FrameTestHelpers::TestWebFrameClient webFrameClient; |
2115 FrameTestHelpers::TestWebWidgetClient webWidgetClient; | 2116 FrameTestHelpers::TestWebWidgetClient webWidgetClient; |
2116 WebLocalFrame* localFrame = | 2117 WebLocalFrame* localFrame = |
2117 WebLocalFrame::create(WebTreeScopeType::Document, &webFrameClient); | 2118 WebLocalFrame::create(WebTreeScopeType::Document, &webFrameClient); |
2118 webView->setMainFrame(localFrame); | 2119 webView->setMainFrame(localFrame); |
2119 | 2120 |
2120 // TODO(dcheng): The main frame widget currently has a special case. | 2121 // TODO(dcheng): The main frame widget currently has a special case. |
2121 // Eliminate this once WebView is no longer a WebWidget. | 2122 // Eliminate this once WebView is no longer a WebWidget. |
2122 blink::WebFrameWidget::create(&webWidgetClient, webView, localFrame); | 2123 blink::WebFrameWidget::create(&webWidgetClient, webView, localFrame); |
2123 | 2124 |
2124 WebGestureEvent event; | 2125 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
2125 event.type = WebInputEvent::GestureTap; | 2126 WebInputEvent::TimeStampForTesting); |
2126 event.sourceDevice = WebGestureDeviceTouchscreen; | 2127 event.sourceDevice = WebGestureDeviceTouchscreen; |
2127 event.x = 3; | 2128 event.x = 3; |
2128 event.y = 8; | 2129 event.y = 8; |
2129 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); | 2130 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); |
2130 webView->close(); | 2131 webView->close(); |
2131 } | 2132 } |
2132 | 2133 |
2133 TEST_P(WebViewTest, LongPressEmptyDiv) { | 2134 TEST_P(WebViewTest, LongPressEmptyDiv) { |
2134 URLTestHelpers::registerMockedURLFromBaseURL( | 2135 URLTestHelpers::registerMockedURLFromBaseURL( |
2135 WebString::fromUTF8(m_baseURL.c_str()), | 2136 WebString::fromUTF8(m_baseURL.c_str()), |
2136 WebString::fromUTF8("long_press_empty_div.html")); | 2137 WebString::fromUTF8("long_press_empty_div.html")); |
2137 | 2138 |
2138 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2139 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2139 m_baseURL + "long_press_empty_div.html", true); | 2140 m_baseURL + "long_press_empty_div.html", true); |
2140 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2141 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2141 webView->resize(WebSize(500, 300)); | 2142 webView->resize(WebSize(500, 300)); |
2142 webView->updateAllLifecyclePhases(); | 2143 webView->updateAllLifecyclePhases(); |
2143 runPendingTasks(); | 2144 runPendingTasks(); |
2144 | 2145 |
2145 WebGestureEvent event; | 2146 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2146 event.type = WebInputEvent::GestureLongPress; | 2147 WebInputEvent::NoModifiers, |
| 2148 WebInputEvent::TimeStampForTesting); |
2147 event.sourceDevice = WebGestureDeviceTouchscreen; | 2149 event.sourceDevice = WebGestureDeviceTouchscreen; |
2148 event.x = 250; | 2150 event.x = 250; |
2149 event.y = 150; | 2151 event.y = 150; |
2150 | 2152 |
2151 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); | 2153 EXPECT_EQ(WebInputEventResult::NotHandled, webView->handleInputEvent(event)); |
2152 } | 2154 } |
2153 | 2155 |
2154 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { | 2156 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { |
2155 URLTestHelpers::registerMockedURLFromBaseURL( | 2157 URLTestHelpers::registerMockedURLFromBaseURL( |
2156 WebString::fromUTF8(m_baseURL.c_str()), | 2158 WebString::fromUTF8(m_baseURL.c_str()), |
2157 WebString::fromUTF8("long_press_empty_div.html")); | 2159 WebString::fromUTF8("long_press_empty_div.html")); |
2158 | 2160 |
2159 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2161 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2160 m_baseURL + "long_press_empty_div.html", true); | 2162 m_baseURL + "long_press_empty_div.html", true); |
2161 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2163 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
2162 webView->resize(WebSize(500, 300)); | 2164 webView->resize(WebSize(500, 300)); |
2163 webView->updateAllLifecyclePhases(); | 2165 webView->updateAllLifecyclePhases(); |
2164 runPendingTasks(); | 2166 runPendingTasks(); |
2165 | 2167 |
2166 WebGestureEvent event; | 2168 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2167 event.type = WebInputEvent::GestureLongPress; | 2169 WebInputEvent::NoModifiers, |
| 2170 WebInputEvent::TimeStampForTesting); |
2168 event.sourceDevice = WebGestureDeviceTouchscreen; | 2171 event.sourceDevice = WebGestureDeviceTouchscreen; |
2169 event.x = 250; | 2172 event.x = 250; |
2170 event.y = 150; | 2173 event.y = 150; |
2171 | 2174 |
2172 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2175 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2173 webView->handleInputEvent(event)); | 2176 webView->handleInputEvent(event)); |
2174 } | 2177 } |
2175 | 2178 |
2176 TEST_P(WebViewTest, LongPressObject) { | 2179 TEST_P(WebViewTest, LongPressObject) { |
2177 URLTestHelpers::registerMockedURLFromBaseURL( | 2180 URLTestHelpers::registerMockedURLFromBaseURL( |
2178 WebString::fromUTF8(m_baseURL.c_str()), | 2181 WebString::fromUTF8(m_baseURL.c_str()), |
2179 WebString::fromUTF8("long_press_object.html")); | 2182 WebString::fromUTF8("long_press_object.html")); |
2180 | 2183 |
2181 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2184 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2182 m_baseURL + "long_press_object.html", true); | 2185 m_baseURL + "long_press_object.html", true); |
2183 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2186 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
2184 webView->resize(WebSize(500, 300)); | 2187 webView->resize(WebSize(500, 300)); |
2185 webView->updateAllLifecyclePhases(); | 2188 webView->updateAllLifecyclePhases(); |
2186 runPendingTasks(); | 2189 runPendingTasks(); |
2187 | 2190 |
2188 WebGestureEvent event; | 2191 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2189 event.type = WebInputEvent::GestureLongPress; | 2192 WebInputEvent::NoModifiers, |
| 2193 WebInputEvent::TimeStampForTesting); |
2190 event.sourceDevice = WebGestureDeviceTouchscreen; | 2194 event.sourceDevice = WebGestureDeviceTouchscreen; |
2191 event.x = 10; | 2195 event.x = 10; |
2192 event.y = 10; | 2196 event.y = 10; |
2193 | 2197 |
2194 EXPECT_NE(WebInputEventResult::HandledSystem, | 2198 EXPECT_NE(WebInputEventResult::HandledSystem, |
2195 webView->handleInputEvent(event)); | 2199 webView->handleInputEvent(event)); |
2196 | 2200 |
2197 HTMLElement* element = | 2201 HTMLElement* element = |
2198 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); | 2202 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); |
2199 EXPECT_FALSE(element->canStartSelection()); | 2203 EXPECT_FALSE(element->canStartSelection()); |
2200 } | 2204 } |
2201 | 2205 |
2202 TEST_P(WebViewTest, LongPressObjectFallback) { | 2206 TEST_P(WebViewTest, LongPressObjectFallback) { |
2203 URLTestHelpers::registerMockedURLFromBaseURL( | 2207 URLTestHelpers::registerMockedURLFromBaseURL( |
2204 WebString::fromUTF8(m_baseURL.c_str()), | 2208 WebString::fromUTF8(m_baseURL.c_str()), |
2205 WebString::fromUTF8("long_press_object_fallback.html")); | 2209 WebString::fromUTF8("long_press_object_fallback.html")); |
2206 | 2210 |
2207 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2211 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2208 m_baseURL + "long_press_object_fallback.html", true); | 2212 m_baseURL + "long_press_object_fallback.html", true); |
2209 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2213 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
2210 webView->resize(WebSize(500, 300)); | 2214 webView->resize(WebSize(500, 300)); |
2211 webView->updateAllLifecyclePhases(); | 2215 webView->updateAllLifecyclePhases(); |
2212 runPendingTasks(); | 2216 runPendingTasks(); |
2213 | 2217 |
2214 WebGestureEvent event; | 2218 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2215 event.type = WebInputEvent::GestureLongPress; | 2219 WebInputEvent::NoModifiers, |
| 2220 WebInputEvent::TimeStampForTesting); |
2216 event.sourceDevice = WebGestureDeviceTouchscreen; | 2221 event.sourceDevice = WebGestureDeviceTouchscreen; |
2217 event.x = 10; | 2222 event.x = 10; |
2218 event.y = 10; | 2223 event.y = 10; |
2219 | 2224 |
2220 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2225 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2221 webView->handleInputEvent(event)); | 2226 webView->handleInputEvent(event)); |
2222 | 2227 |
2223 HTMLElement* element = | 2228 HTMLElement* element = |
2224 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); | 2229 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); |
2225 EXPECT_TRUE(element->canStartSelection()); | 2230 EXPECT_TRUE(element->canStartSelection()); |
2226 } | 2231 } |
2227 | 2232 |
2228 TEST_P(WebViewTest, LongPressImage) { | 2233 TEST_P(WebViewTest, LongPressImage) { |
2229 URLTestHelpers::registerMockedURLFromBaseURL( | 2234 URLTestHelpers::registerMockedURLFromBaseURL( |
2230 WebString::fromUTF8(m_baseURL.c_str()), | 2235 WebString::fromUTF8(m_baseURL.c_str()), |
2231 WebString::fromUTF8("long_press_image.html")); | 2236 WebString::fromUTF8("long_press_image.html")); |
2232 | 2237 |
2233 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2238 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2234 m_baseURL + "long_press_image.html", true); | 2239 m_baseURL + "long_press_image.html", true); |
2235 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2240 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2236 webView->resize(WebSize(500, 300)); | 2241 webView->resize(WebSize(500, 300)); |
2237 webView->updateAllLifecyclePhases(); | 2242 webView->updateAllLifecyclePhases(); |
2238 runPendingTasks(); | 2243 runPendingTasks(); |
2239 | 2244 |
2240 WebGestureEvent event; | 2245 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2241 event.type = WebInputEvent::GestureLongPress; | 2246 WebInputEvent::NoModifiers, |
| 2247 WebInputEvent::TimeStampForTesting); |
2242 event.sourceDevice = WebGestureDeviceTouchscreen; | 2248 event.sourceDevice = WebGestureDeviceTouchscreen; |
2243 event.x = 10; | 2249 event.x = 10; |
2244 event.y = 10; | 2250 event.y = 10; |
2245 | 2251 |
2246 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2252 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2247 webView->handleInputEvent(event)); | 2253 webView->handleInputEvent(event)); |
2248 } | 2254 } |
2249 | 2255 |
2250 TEST_P(WebViewTest, LongPressVideo) { | 2256 TEST_P(WebViewTest, LongPressVideo) { |
2251 URLTestHelpers::registerMockedURLFromBaseURL( | 2257 URLTestHelpers::registerMockedURLFromBaseURL( |
2252 WebString::fromUTF8(m_baseURL.c_str()), | 2258 WebString::fromUTF8(m_baseURL.c_str()), |
2253 WebString::fromUTF8("long_press_video.html")); | 2259 WebString::fromUTF8("long_press_video.html")); |
2254 | 2260 |
2255 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2261 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2256 m_baseURL + "long_press_video.html", true); | 2262 m_baseURL + "long_press_video.html", true); |
2257 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2263 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2258 webView->resize(WebSize(500, 300)); | 2264 webView->resize(WebSize(500, 300)); |
2259 webView->updateAllLifecyclePhases(); | 2265 webView->updateAllLifecyclePhases(); |
2260 runPendingTasks(); | 2266 runPendingTasks(); |
2261 | 2267 |
2262 WebGestureEvent event; | 2268 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2263 event.type = WebInputEvent::GestureLongPress; | 2269 WebInputEvent::NoModifiers, |
| 2270 WebInputEvent::TimeStampForTesting); |
2264 event.sourceDevice = WebGestureDeviceTouchscreen; | 2271 event.sourceDevice = WebGestureDeviceTouchscreen; |
2265 event.x = 10; | 2272 event.x = 10; |
2266 event.y = 10; | 2273 event.y = 10; |
2267 | 2274 |
2268 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2275 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2269 webView->handleInputEvent(event)); | 2276 webView->handleInputEvent(event)); |
2270 } | 2277 } |
2271 | 2278 |
2272 TEST_P(WebViewTest, LongPressLink) { | 2279 TEST_P(WebViewTest, LongPressLink) { |
2273 URLTestHelpers::registerMockedURLFromBaseURL( | 2280 URLTestHelpers::registerMockedURLFromBaseURL( |
2274 WebString::fromUTF8(m_baseURL.c_str()), | 2281 WebString::fromUTF8(m_baseURL.c_str()), |
2275 WebString::fromUTF8("long_press_link.html")); | 2282 WebString::fromUTF8("long_press_link.html")); |
2276 | 2283 |
2277 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2284 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2278 m_baseURL + "long_press_link.html", true); | 2285 m_baseURL + "long_press_link.html", true); |
2279 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2286 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2280 webView->resize(WebSize(500, 300)); | 2287 webView->resize(WebSize(500, 300)); |
2281 webView->updateAllLifecyclePhases(); | 2288 webView->updateAllLifecyclePhases(); |
2282 runPendingTasks(); | 2289 runPendingTasks(); |
2283 | 2290 |
2284 WebGestureEvent event; | 2291 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2285 event.type = WebInputEvent::GestureLongPress; | 2292 WebInputEvent::NoModifiers, |
| 2293 WebInputEvent::TimeStampForTesting); |
2286 event.sourceDevice = WebGestureDeviceTouchscreen; | 2294 event.sourceDevice = WebGestureDeviceTouchscreen; |
2287 event.x = 500; | 2295 event.x = 500; |
2288 event.y = 300; | 2296 event.y = 300; |
2289 | 2297 |
2290 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2298 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2291 webView->handleInputEvent(event)); | 2299 webView->handleInputEvent(event)); |
2292 } | 2300 } |
2293 | 2301 |
2294 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { | 2302 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { |
2295 URLTestHelpers::registerMockedURLFromBaseURL( | 2303 URLTestHelpers::registerMockedURLFromBaseURL( |
(...skipping 27 matching lines...) Expand all Loading... |
2323 WebString::fromUTF8(m_baseURL.c_str()), | 2331 WebString::fromUTF8(m_baseURL.c_str()), |
2324 WebString::fromUTF8("long_press_empty_editable_selection.html")); | 2332 WebString::fromUTF8("long_press_empty_editable_selection.html")); |
2325 | 2333 |
2326 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2334 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2327 m_baseURL + "long_press_empty_editable_selection.html", true); | 2335 m_baseURL + "long_press_empty_editable_selection.html", true); |
2328 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2336 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2329 webView->resize(WebSize(500, 300)); | 2337 webView->resize(WebSize(500, 300)); |
2330 webView->updateAllLifecyclePhases(); | 2338 webView->updateAllLifecyclePhases(); |
2331 runPendingTasks(); | 2339 runPendingTasks(); |
2332 | 2340 |
2333 WebGestureEvent event; | 2341 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2334 event.type = WebInputEvent::GestureLongPress; | 2342 WebInputEvent::NoModifiers, |
| 2343 WebInputEvent::TimeStampForTesting); |
2335 event.sourceDevice = WebGestureDeviceTouchscreen; | 2344 event.sourceDevice = WebGestureDeviceTouchscreen; |
2336 event.x = 10; | 2345 event.x = 10; |
2337 event.y = 10; | 2346 event.y = 10; |
2338 | 2347 |
2339 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2348 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2340 webView->handleInputEvent(event)); | 2349 webView->handleInputEvent(event)); |
2341 } | 2350 } |
2342 | 2351 |
2343 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { | 2352 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { |
2344 URLTestHelpers::registerMockedURLFromBaseURL( | 2353 URLTestHelpers::registerMockedURLFromBaseURL( |
2345 WebString::fromUTF8(m_baseURL.c_str()), | 2354 WebString::fromUTF8(m_baseURL.c_str()), |
2346 WebString::fromUTF8("long_press_image.html")); | 2355 WebString::fromUTF8("long_press_image.html")); |
2347 | 2356 |
2348 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2357 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2349 m_baseURL + "long_press_image.html", true); | 2358 m_baseURL + "long_press_image.html", true); |
2350 webView->resize(WebSize(500, 500)); | 2359 webView->resize(WebSize(500, 500)); |
2351 webView->updateAllLifecyclePhases(); | 2360 webView->updateAllLifecyclePhases(); |
2352 runPendingTasks(); | 2361 runPendingTasks(); |
2353 | 2362 |
2354 WebGestureEvent event; | 2363 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2355 event.type = WebInputEvent::GestureLongPress; | 2364 WebInputEvent::NoModifiers, |
| 2365 WebInputEvent::TimeStampForTesting); |
2356 event.sourceDevice = WebGestureDeviceTouchscreen; | 2366 event.sourceDevice = WebGestureDeviceTouchscreen; |
2357 event.x = 300; | 2367 event.x = 300; |
2358 event.y = 300; | 2368 event.y = 300; |
2359 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2369 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2360 | 2370 |
2361 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2371 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2362 webView->handleInputEvent(event)); | 2372 webView->handleInputEvent(event)); |
2363 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2373 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
2364 } | 2374 } |
2365 | 2375 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2399 | 2409 |
2400 WebString blanklinestextbox = WebString::fromUTF8("blanklinestextbox"); | 2410 WebString blanklinestextbox = WebString::fromUTF8("blanklinestextbox"); |
2401 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2411 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2402 | 2412 |
2403 // Long-press on carriage returns. | 2413 // Long-press on carriage returns. |
2404 EXPECT_TRUE( | 2414 EXPECT_TRUE( |
2405 tapElementById(WebInputEvent::GestureLongPress, blanklinestextbox)); | 2415 tapElementById(WebInputEvent::GestureLongPress, blanklinestextbox)); |
2406 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2416 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
2407 | 2417 |
2408 // Double-tap on carriage returns. | 2418 // Double-tap on carriage returns. |
2409 WebGestureEvent event; | 2419 WebGestureEvent event(WebInputEvent::GestureTap, WebInputEvent::NoModifiers, |
2410 event.type = WebInputEvent::GestureTap; | 2420 WebInputEvent::TimeStampForTesting); |
2411 event.sourceDevice = WebGestureDeviceTouchscreen; | 2421 event.sourceDevice = WebGestureDeviceTouchscreen; |
2412 event.x = 100; | 2422 event.x = 100; |
2413 event.y = 25; | 2423 event.y = 25; |
2414 event.data.tap.tapCount = 2; | 2424 event.data.tap.tapCount = 2; |
2415 | 2425 |
2416 webView->handleInputEvent(event); | 2426 webView->handleInputEvent(event); |
2417 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2427 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
2418 | 2428 |
2419 HTMLTextAreaElement* textAreaElement = toHTMLTextAreaElement( | 2429 HTMLTextAreaElement* textAreaElement = toHTMLTextAreaElement( |
2420 webView->mainFrame()->document().getElementById(blanklinestextbox)); | 2430 webView->mainFrame()->document().getElementById(blanklinestextbox)); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2474 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | 2484 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); |
2475 WebViewImpl* webView = | 2485 WebViewImpl* webView = |
2476 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 2486 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
2477 | 2487 |
2478 webView->setInitialFocus(false); | 2488 webView->setInitialFocus(false); |
2479 runPendingTasks(); | 2489 runPendingTasks(); |
2480 | 2490 |
2481 // We suspend caret blinking when pressing with mouse right button. | 2491 // We suspend caret blinking when pressing with mouse right button. |
2482 // Note that we do not send MouseUp event here since it will be consumed | 2492 // Note that we do not send MouseUp event here since it will be consumed |
2483 // by the context menu once it shows up. | 2493 // by the context menu once it shows up. |
2484 WebMouseEvent mouseEvent; | 2494 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, |
| 2495 WebInputEvent::TimeStampForTesting); |
| 2496 |
2485 mouseEvent.button = WebMouseEvent::Button::Right; | 2497 mouseEvent.button = WebMouseEvent::Button::Right; |
2486 mouseEvent.x = 1; | 2498 mouseEvent.x = 1; |
2487 mouseEvent.y = 1; | 2499 mouseEvent.y = 1; |
2488 mouseEvent.clickCount = 1; | 2500 mouseEvent.clickCount = 1; |
2489 mouseEvent.type = WebInputEvent::MouseDown; | |
2490 webView->handleInputEvent(mouseEvent); | 2501 webView->handleInputEvent(mouseEvent); |
2491 runPendingTasks(); | 2502 runPendingTasks(); |
2492 | 2503 |
2493 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); | 2504 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); |
2494 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); | 2505 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); |
2495 | 2506 |
2496 // Caret blinking is still suspended after showing context menu. | 2507 // Caret blinking is still suspended after showing context menu. |
2497 webView->showContextMenu(); | 2508 webView->showContextMenu(); |
2498 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); | 2509 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); |
2499 | 2510 |
(...skipping 28 matching lines...) Expand all Loading... |
2528 URLTestHelpers::registerMockedURLFromBaseURL( | 2539 URLTestHelpers::registerMockedURLFromBaseURL( |
2529 WebString::fromUTF8(m_baseURL.c_str()), | 2540 WebString::fromUTF8(m_baseURL.c_str()), |
2530 WebString::fromUTF8("content-width-1000.html")); | 2541 WebString::fromUTF8("content-width-1000.html")); |
2531 | 2542 |
2532 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2543 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2533 m_baseURL + "content-width-1000.html", true); | 2544 m_baseURL + "content-width-1000.html", true); |
2534 webView->resize(WebSize(100, 100)); | 2545 webView->resize(WebSize(100, 100)); |
2535 webView->updateAllLifecyclePhases(); | 2546 webView->updateAllLifecyclePhases(); |
2536 runPendingTasks(); | 2547 runPendingTasks(); |
2537 | 2548 |
2538 WebKeyboardEvent keyEvent; | 2549 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 2550 WebInputEvent::NoModifiers, |
| 2551 WebInputEvent::TimeStampForTesting); |
2539 | 2552 |
2540 // RawKeyDown pagedown should be handled. | 2553 // RawKeyDown pagedown should be handled. |
2541 keyEvent.windowsKeyCode = VKEY_NEXT; | 2554 keyEvent.windowsKeyCode = VKEY_NEXT; |
2542 keyEvent.type = WebInputEvent::RawKeyDown; | |
2543 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2555 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2544 webView->handleInputEvent(keyEvent)); | 2556 webView->handleInputEvent(keyEvent)); |
2545 keyEvent.type = WebInputEvent::KeyUp; | 2557 keyEvent.setType(WebInputEvent::KeyUp); |
2546 webView->handleInputEvent(keyEvent); | 2558 webView->handleInputEvent(keyEvent); |
2547 | 2559 |
2548 // Coalesced KeyDown arrow-down should be handled. | 2560 // Coalesced KeyDown arrow-down should be handled. |
2549 keyEvent.windowsKeyCode = VKEY_DOWN; | 2561 keyEvent.windowsKeyCode = VKEY_DOWN; |
2550 keyEvent.type = WebInputEvent::KeyDown; | 2562 keyEvent.setType(WebInputEvent::KeyDown); |
2551 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2563 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2552 webView->handleInputEvent(keyEvent)); | 2564 webView->handleInputEvent(keyEvent)); |
2553 keyEvent.type = WebInputEvent::KeyUp; | 2565 keyEvent.setType(WebInputEvent::KeyUp); |
2554 webView->handleInputEvent(keyEvent); | 2566 webView->handleInputEvent(keyEvent); |
2555 | 2567 |
2556 // Ctrl-Home should be handled... | 2568 // Ctrl-Home should be handled... |
2557 keyEvent.windowsKeyCode = VKEY_HOME; | 2569 keyEvent.windowsKeyCode = VKEY_HOME; |
2558 keyEvent.modifiers = WebInputEvent::ControlKey; | 2570 keyEvent.setModifiers(WebInputEvent::ControlKey); |
2559 keyEvent.type = WebInputEvent::RawKeyDown; | 2571 keyEvent.setType(WebInputEvent::RawKeyDown); |
2560 EXPECT_EQ(WebInputEventResult::NotHandled, | 2572 EXPECT_EQ(WebInputEventResult::NotHandled, |
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 // But Ctrl-Down should not. | 2577 // But Ctrl-Down should not. |
2566 keyEvent.windowsKeyCode = VKEY_DOWN; | 2578 keyEvent.windowsKeyCode = VKEY_DOWN; |
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 // Shift, meta, and alt should not be handled. | 2586 // Shift, meta, and alt should not be handled. |
2575 keyEvent.windowsKeyCode = VKEY_NEXT; | 2587 keyEvent.windowsKeyCode = VKEY_NEXT; |
2576 keyEvent.modifiers = WebInputEvent::ShiftKey; | 2588 keyEvent.setModifiers(WebInputEvent::ShiftKey); |
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 keyEvent.windowsKeyCode = VKEY_NEXT; | 2595 keyEvent.windowsKeyCode = VKEY_NEXT; |
2584 keyEvent.modifiers = WebInputEvent::MetaKey; | 2596 keyEvent.setModifiers(WebInputEvent::MetaKey); |
2585 keyEvent.type = WebInputEvent::RawKeyDown; | 2597 keyEvent.setType(WebInputEvent::RawKeyDown); |
2586 EXPECT_EQ(WebInputEventResult::NotHandled, | 2598 EXPECT_EQ(WebInputEventResult::NotHandled, |
2587 webView->handleInputEvent(keyEvent)); | 2599 webView->handleInputEvent(keyEvent)); |
2588 keyEvent.type = WebInputEvent::KeyUp; | 2600 keyEvent.setType(WebInputEvent::KeyUp); |
2589 webView->handleInputEvent(keyEvent); | 2601 webView->handleInputEvent(keyEvent); |
2590 | 2602 |
2591 keyEvent.windowsKeyCode = VKEY_NEXT; | 2603 keyEvent.windowsKeyCode = VKEY_NEXT; |
2592 keyEvent.modifiers = WebInputEvent::AltKey; | 2604 keyEvent.setModifiers(WebInputEvent::AltKey); |
2593 keyEvent.type = WebInputEvent::RawKeyDown; | 2605 keyEvent.setType(WebInputEvent::RawKeyDown); |
2594 EXPECT_EQ(WebInputEventResult::NotHandled, | 2606 EXPECT_EQ(WebInputEventResult::NotHandled, |
2595 webView->handleInputEvent(keyEvent)); | 2607 webView->handleInputEvent(keyEvent)); |
2596 keyEvent.type = WebInputEvent::KeyUp; | 2608 keyEvent.setType(WebInputEvent::KeyUp); |
2597 webView->handleInputEvent(keyEvent); | 2609 webView->handleInputEvent(keyEvent); |
2598 | 2610 |
2599 // System-key labeled Alt-Down (as in Windows) should do nothing, | 2611 // System-key labeled Alt-Down (as in Windows) should do nothing, |
2600 // but non-system-key labeled Alt-Down (as in Mac) should be handled | 2612 // but non-system-key labeled Alt-Down (as in Mac) should be handled |
2601 // as a page-down. | 2613 // as a page-down. |
2602 keyEvent.windowsKeyCode = VKEY_DOWN; | 2614 keyEvent.windowsKeyCode = VKEY_DOWN; |
2603 keyEvent.modifiers = WebInputEvent::AltKey; | 2615 keyEvent.setModifiers(WebInputEvent::AltKey); |
2604 keyEvent.isSystemKey = true; | 2616 keyEvent.isSystemKey = true; |
2605 keyEvent.type = WebInputEvent::RawKeyDown; | 2617 keyEvent.setType(WebInputEvent::RawKeyDown); |
2606 EXPECT_EQ(WebInputEventResult::NotHandled, | 2618 EXPECT_EQ(WebInputEventResult::NotHandled, |
2607 webView->handleInputEvent(keyEvent)); | 2619 webView->handleInputEvent(keyEvent)); |
2608 keyEvent.type = WebInputEvent::KeyUp; | 2620 keyEvent.setType(WebInputEvent::KeyUp); |
2609 webView->handleInputEvent(keyEvent); | 2621 webView->handleInputEvent(keyEvent); |
2610 | 2622 |
2611 keyEvent.windowsKeyCode = VKEY_DOWN; | 2623 keyEvent.windowsKeyCode = VKEY_DOWN; |
2612 keyEvent.modifiers = WebInputEvent::AltKey; | 2624 keyEvent.setModifiers(WebInputEvent::AltKey); |
2613 keyEvent.isSystemKey = false; | 2625 keyEvent.isSystemKey = false; |
2614 keyEvent.type = WebInputEvent::RawKeyDown; | 2626 keyEvent.setType(WebInputEvent::RawKeyDown); |
2615 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2627 EXPECT_EQ(WebInputEventResult::HandledSystem, |
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 | 2632 |
2621 static void configueCompositingWebView(WebSettings* settings) { | 2633 static void configueCompositingWebView(WebSettings* settings) { |
2622 settings->setAcceleratedCompositingEnabled(true); | 2634 settings->setAcceleratedCompositingEnabled(true); |
2623 settings->setPreferCompositingToLCDTextEnabled(true); | 2635 settings->setPreferCompositingToLCDTextEnabled(true); |
2624 } | 2636 } |
2625 | 2637 |
2626 TEST_P(WebViewTest, ShowPressOnTransformedLink) { | 2638 TEST_P(WebViewTest, ShowPressOnTransformedLink) { |
2627 std::unique_ptr<FrameTestHelpers::TestWebViewClient> | 2639 std::unique_ptr<FrameTestHelpers::TestWebViewClient> |
2628 fakeCompositingWebViewClient = | 2640 fakeCompositingWebViewClient = |
2629 WTF::makeUnique<FrameTestHelpers::TestWebViewClient>(); | 2641 WTF::makeUnique<FrameTestHelpers::TestWebViewClient>(); |
2630 FrameTestHelpers::WebViewHelper webViewHelper; | 2642 FrameTestHelpers::WebViewHelper webViewHelper; |
2631 WebViewImpl* webViewImpl = webViewHelper.initialize( | 2643 WebViewImpl* webViewImpl = webViewHelper.initialize( |
2632 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, | 2644 true, nullptr, fakeCompositingWebViewClient.get(), nullptr, |
2633 &configueCompositingWebView); | 2645 &configueCompositingWebView); |
2634 | 2646 |
2635 int pageWidth = 640; | 2647 int pageWidth = 640; |
2636 int pageHeight = 480; | 2648 int pageHeight = 480; |
2637 webViewImpl->resize(WebSize(pageWidth, pageHeight)); | 2649 webViewImpl->resize(WebSize(pageWidth, pageHeight)); |
2638 | 2650 |
2639 WebURL baseURL = URLTestHelpers::toKURL("http://example.com/"); | 2651 WebURL baseURL = URLTestHelpers::toKURL("http://example.com/"); |
2640 FrameTestHelpers::loadHTMLString( | 2652 FrameTestHelpers::loadHTMLString( |
2641 webViewImpl->mainFrame(), | 2653 webViewImpl->mainFrame(), |
2642 "<a href='http://www.test.com' style='position: absolute; left: 20px; " | 2654 "<a href='http://www.test.com' style='position: absolute; left: 20px; " |
2643 "top: 20px; width: 200px; transform:translateZ(0);'>A link to " | 2655 "top: 20px; width: 200px; transform:translateZ(0);'>A link to " |
2644 "highlight</a>", | 2656 "highlight</a>", |
2645 baseURL); | 2657 baseURL); |
2646 | 2658 |
2647 WebGestureEvent event; | 2659 WebGestureEvent event(WebInputEvent::GestureShowPress, |
2648 event.type = WebInputEvent::GestureShowPress; | 2660 WebInputEvent::NoModifiers, |
| 2661 WebInputEvent::TimeStampForTesting); |
2649 event.sourceDevice = WebGestureDeviceTouchscreen; | 2662 event.sourceDevice = WebGestureDeviceTouchscreen; |
2650 event.x = 20; | 2663 event.x = 20; |
2651 event.y = 20; | 2664 event.y = 20; |
2652 | 2665 |
2653 // Just make sure we don't hit any asserts. | 2666 // Just make sure we don't hit any asserts. |
2654 webViewImpl->handleInputEvent(event); | 2667 webViewImpl->handleInputEvent(event); |
2655 } | 2668 } |
2656 | 2669 |
2657 class MockAutofillClient : public WebAutofillClient { | 2670 class MockAutofillClient : public WebAutofillClient { |
2658 public: | 2671 public: |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2762 frame->setEditableSelectionOffsets(6, 6); | 2775 frame->setEditableSelectionOffsets(6, 6); |
2763 WebInputMethodController* activeInputMethodController = | 2776 WebInputMethodController* activeInputMethodController = |
2764 frame->frameWidget()->getActiveWebInputMethodController(); | 2777 frame->frameWidget()->getActiveWebInputMethodController(); |
2765 EXPECT_TRUE(activeInputMethodController->setComposition( | 2778 EXPECT_TRUE(activeInputMethodController->setComposition( |
2766 "fghij", emptyUnderlines, 0, 5)); | 2779 "fghij", emptyUnderlines, 0, 5)); |
2767 frame->setEditableSelectionOffsets(11, 11); | 2780 frame->setEditableSelectionOffsets(11, 11); |
2768 verifySelectionAndComposition(webView, 11, 11, 6, 11, "initial case"); | 2781 verifySelectionAndComposition(webView, 11, 11, 6, 11, "initial case"); |
2769 | 2782 |
2770 // Press Backspace and verify composition didn't get cancelled. This is to | 2783 // Press Backspace and verify composition didn't get cancelled. This is to |
2771 // verify the fix for crbug.com/429916. | 2784 // verify the fix for crbug.com/429916. |
2772 WebKeyboardEvent keyEvent; | 2785 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 2786 WebInputEvent::NoModifiers, |
| 2787 WebInputEvent::TimeStampForTesting); |
2773 keyEvent.domKey = Platform::current()->domKeyEnumFromString("\b"); | 2788 keyEvent.domKey = Platform::current()->domKeyEnumFromString("\b"); |
2774 keyEvent.windowsKeyCode = VKEY_BACK; | 2789 keyEvent.windowsKeyCode = VKEY_BACK; |
2775 keyEvent.type = WebInputEvent::RawKeyDown; | |
2776 webView->handleInputEvent(keyEvent); | 2790 webView->handleInputEvent(keyEvent); |
2777 | 2791 |
2778 frame->setEditableSelectionOffsets(6, 6); | 2792 frame->setEditableSelectionOffsets(6, 6); |
2779 EXPECT_TRUE(activeInputMethodController->setComposition( | 2793 EXPECT_TRUE(activeInputMethodController->setComposition( |
2780 "fghi", emptyUnderlines, 0, 4)); | 2794 "fghi", emptyUnderlines, 0, 4)); |
2781 frame->setEditableSelectionOffsets(10, 10); | 2795 frame->setEditableSelectionOffsets(10, 10); |
2782 verifySelectionAndComposition(webView, 10, 10, 6, 10, | 2796 verifySelectionAndComposition(webView, 10, 10, 6, 10, |
2783 "after pressing Backspace"); | 2797 "after pressing Backspace"); |
2784 | 2798 |
2785 keyEvent.type = WebInputEvent::KeyUp; | 2799 keyEvent.setType(WebInputEvent::KeyUp); |
2786 webView->handleInputEvent(keyEvent); | 2800 webView->handleInputEvent(keyEvent); |
2787 | 2801 |
2788 webView->advanceFocus(false); | 2802 webView->advanceFocus(false); |
2789 } | 2803 } |
2790 | 2804 |
2791 frame->setAutofillClient(0); | 2805 frame->setAutofillClient(0); |
2792 } | 2806 } |
2793 | 2807 |
2794 TEST_P(WebViewTest, FinishComposingTextTriggersAutofillTextChange) { | 2808 TEST_P(WebViewTest, FinishComposingTextTriggersAutofillTextChange) { |
2795 URLTestHelpers::registerMockedURLFromBaseURL( | 2809 URLTestHelpers::registerMockedURLFromBaseURL( |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2966 | 2980 |
2967 WebElement element = | 2981 WebElement element = |
2968 webView->mainFrame()->document().getElementById("message"); | 2982 webView->mainFrame()->document().getElementById("message"); |
2969 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.textContent().utf8().data()); | 2983 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.textContent().utf8().data()); |
2970 } | 2984 } |
2971 | 2985 |
2972 static void openDateTimeChooser(WebView* webView, | 2986 static void openDateTimeChooser(WebView* webView, |
2973 HTMLInputElement* inputElement) { | 2987 HTMLInputElement* inputElement) { |
2974 inputElement->focus(); | 2988 inputElement->focus(); |
2975 | 2989 |
2976 WebKeyboardEvent keyEvent; | 2990 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 2991 WebInputEvent::NoModifiers, |
| 2992 WebInputEvent::TimeStampForTesting); |
2977 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); | 2993 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); |
2978 keyEvent.windowsKeyCode = VKEY_SPACE; | 2994 keyEvent.windowsKeyCode = VKEY_SPACE; |
2979 keyEvent.type = WebInputEvent::RawKeyDown; | |
2980 webView->handleInputEvent(keyEvent); | 2995 webView->handleInputEvent(keyEvent); |
2981 | 2996 |
2982 keyEvent.type = WebInputEvent::KeyUp; | 2997 keyEvent.setType(WebInputEvent::KeyUp); |
2983 webView->handleInputEvent(keyEvent); | 2998 webView->handleInputEvent(keyEvent); |
2984 } | 2999 } |
2985 | 3000 |
2986 // TODO(crbug.com/605112) This test is crashing on Android (Nexus 4) bot. | 3001 // TODO(crbug.com/605112) This test is crashing on Android (Nexus 4) bot. |
2987 #if OS(ANDROID) | 3002 #if OS(ANDROID) |
2988 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { | 3003 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { |
2989 #else | 3004 #else |
2990 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { | 3005 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { |
2991 #endif | 3006 #endif |
2992 bool originalMultipleFieldsFlag = | 3007 bool originalMultipleFieldsFlag = |
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3547 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | 3562 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); |
3548 MockAutofillClient client; | 3563 MockAutofillClient client; |
3549 WebViewImpl* webView = | 3564 WebViewImpl* webView = |
3550 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 3565 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
3551 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3566 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3552 frame->setAutofillClient(&client); | 3567 frame->setAutofillClient(&client); |
3553 webView->setInitialFocus(false); | 3568 webView->setInitialFocus(false); |
3554 | 3569 |
3555 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); | 3570 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
3556 | 3571 |
3557 WebKeyboardEvent keyEvent; | 3572 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
| 3573 WebInputEvent::NoModifiers, |
| 3574 WebInputEvent::TimeStampForTesting); |
3558 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); | 3575 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); |
3559 keyEvent.windowsKeyCode = VKEY_SPACE; | 3576 keyEvent.windowsKeyCode = VKEY_SPACE; |
3560 keyEvent.type = WebInputEvent::RawKeyDown; | |
3561 webView->handleInputEvent(keyEvent); | 3577 webView->handleInputEvent(keyEvent); |
3562 keyEvent.type = WebInputEvent::KeyUp; | 3578 keyEvent.setType(WebInputEvent::KeyUp); |
3563 webView->handleInputEvent(keyEvent); | 3579 webView->handleInputEvent(keyEvent); |
3564 | 3580 |
3565 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); | 3581 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
3566 frame->setAutofillClient(0); | 3582 frame->setAutofillClient(0); |
3567 } | 3583 } |
3568 | 3584 |
3569 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { | 3585 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { |
3570 URLTestHelpers::registerMockedURLFromBaseURL( | 3586 URLTestHelpers::registerMockedURLFromBaseURL( |
3571 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | 3587 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); |
3572 MockAutofillClient client; | 3588 MockAutofillClient client; |
3573 WebViewImpl* webView = | 3589 WebViewImpl* webView = |
3574 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 3590 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
3575 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3591 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3576 frame->setAutofillClient(&client); | 3592 frame->setAutofillClient(&client); |
3577 webView->setInitialFocus(false); | 3593 webView->setInitialFocus(false); |
3578 | 3594 |
3579 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); | 3595 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
3580 | 3596 |
3581 WebMouseEvent mouseEvent; | 3597 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, |
| 3598 WebInputEvent::TimeStampForTesting); |
3582 mouseEvent.button = WebMouseEvent::Button::Left; | 3599 mouseEvent.button = WebMouseEvent::Button::Left; |
3583 mouseEvent.x = 1; | 3600 mouseEvent.x = 1; |
3584 mouseEvent.y = 1; | 3601 mouseEvent.y = 1; |
3585 mouseEvent.clickCount = 1; | 3602 mouseEvent.clickCount = 1; |
3586 mouseEvent.type = WebInputEvent::MouseDown; | |
3587 webView->handleInputEvent(mouseEvent); | 3603 webView->handleInputEvent(mouseEvent); |
3588 mouseEvent.type = WebInputEvent::MouseUp; | 3604 mouseEvent.setType(WebInputEvent::MouseUp); |
3589 webView->handleInputEvent(mouseEvent); | 3605 webView->handleInputEvent(mouseEvent); |
3590 | 3606 |
3591 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); | 3607 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
3592 frame->setAutofillClient(0); | 3608 frame->setAutofillClient(0); |
3593 } | 3609 } |
3594 | 3610 |
3595 TEST_P(WebViewTest, FirstUserGestureObservedGestureTap) { | 3611 TEST_P(WebViewTest, FirstUserGestureObservedGestureTap) { |
3596 URLTestHelpers::registerMockedURLFromBaseURL( | 3612 URLTestHelpers::registerMockedURLFromBaseURL( |
3597 WebString::fromUTF8(m_baseURL.c_str()), | 3613 WebString::fromUTF8(m_baseURL.c_str()), |
3598 WebString::fromUTF8("longpress_selection.html")); | 3614 WebString::fromUTF8("longpress_selection.html")); |
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4245 .translate(50, 55) | 4261 .translate(50, 55) |
4246 .scale(1. / 2.f); | 4262 .scale(1. / 2.f); |
4247 EXPECT_EQ(expectedMatrix, | 4263 EXPECT_EQ(expectedMatrix, |
4248 webViewImpl->getDeviceEmulationTransformForTesting()); | 4264 webViewImpl->getDeviceEmulationTransformForTesting()); |
4249 // visibleContentRect doesn't change. | 4265 // visibleContentRect doesn't change. |
4250 EXPECT_EQ(IntRect(50, 55, 50, 75), | 4266 EXPECT_EQ(IntRect(50, 55, 50, 75), |
4251 *devToolsEmulator->visibleContentRectForPainting()); | 4267 *devToolsEmulator->visibleContentRectForPainting()); |
4252 } | 4268 } |
4253 | 4269 |
4254 } // namespace blink | 4270 } // namespace blink |
OLD | NEW |