| 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 |