OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 6137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6148 EXPECT_GE(target_rects.size(), 2u); | 6148 EXPECT_GE(target_rects.size(), 2u); |
6149 triggered_ = true; | 6149 triggered_ = true; |
6150 return true; | 6150 return true; |
6151 } | 6151 } |
6152 | 6152 |
6153 bool Triggered() const { return triggered_; } | 6153 bool Triggered() const { return triggered_; } |
6154 void ResetTriggered() { triggered_ = false; } | 6154 void ResetTriggered() { triggered_ = false; } |
6155 bool triggered_; | 6155 bool triggered_; |
6156 }; | 6156 }; |
6157 | 6157 |
6158 static WebCoalescedInputEvent FatTap(int x, int y) { | 6158 static WebCoalescedInputEvent FatTap(int x, int y, int diameter) { |
6159 WebGestureEvent event(WebInputEvent::kGestureTap, WebInputEvent::kNoModifiers, | 6159 WebGestureEvent event(WebInputEvent::kGestureTap, WebInputEvent::kNoModifiers, |
6160 WebInputEvent::kTimeStampForTesting); | 6160 WebInputEvent::kTimeStampForTesting); |
6161 event.source_device = kWebGestureDeviceTouchscreen; | 6161 event.source_device = kWebGestureDeviceTouchscreen; |
6162 event.x = x; | 6162 event.x = x; |
6163 event.y = y; | 6163 event.y = y; |
6164 event.data.tap.width = 50; | 6164 event.data.tap.width = diameter; |
6165 event.data.tap.height = 50; | 6165 event.data.tap.height = diameter; |
6166 return WebCoalescedInputEvent(event); | 6166 return WebCoalescedInputEvent(event); |
6167 } | 6167 } |
6168 | 6168 |
6169 TEST_P(ParameterizedWebFrameTest, DisambiguationPopup) { | 6169 TEST_P(ParameterizedWebFrameTest, DisambiguationPopup) { |
6170 const std::string html_file = "disambiguation_popup.html"; | 6170 const std::string html_file = "disambiguation_popup.html"; |
6171 RegisterMockedHttpURLLoad(html_file); | 6171 RegisterMockedHttpURLLoad(html_file); |
6172 | 6172 |
6173 DisambiguationPopupTestWebViewClient client; | 6173 DisambiguationPopupTestWebViewClient client; |
| 6174 const int kTapDiameter = 100; |
6174 | 6175 |
6175 // Make sure we initialize to minimum scale, even if the window size | 6176 // Make sure we initialize to minimum scale, even if the window size |
6176 // only becomes available after the load begins. | 6177 // only becomes available after the load begins. |
6177 FrameTestHelpers::WebViewHelper web_view_helper; | 6178 FrameTestHelpers::WebViewHelper web_view_helper; |
6178 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client); | 6179 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client); |
6179 web_view_helper.Resize(WebSize(1000, 1000)); | 6180 web_view_helper.Resize(WebSize(1000, 1000)); |
6180 | 6181 |
6181 client.ResetTriggered(); | 6182 client.ResetTriggered(); |
6182 web_view_helper.WebView()->HandleInputEvent(FatTap(0, 0)); | 6183 web_view_helper.WebView()->HandleInputEvent(FatTap(0, 0, kTapDiameter)); |
6183 EXPECT_FALSE(client.Triggered()); | 6184 EXPECT_FALSE(client.Triggered()); |
6184 | 6185 |
6185 client.ResetTriggered(); | 6186 client.ResetTriggered(); |
6186 web_view_helper.WebView()->HandleInputEvent(FatTap(200, 115)); | 6187 web_view_helper.WebView()->HandleInputEvent(FatTap(200, 115, kTapDiameter)); |
6187 EXPECT_FALSE(client.Triggered()); | 6188 EXPECT_FALSE(client.Triggered()); |
6188 | 6189 |
6189 for (int i = 0; i <= 46; i++) { | 6190 for (int i = 0; i <= 46; i++) { |
6190 client.ResetTriggered(); | 6191 client.ResetTriggered(); |
6191 web_view_helper.WebView()->HandleInputEvent(FatTap(120, 230 + i * 5)); | 6192 web_view_helper.WebView()->HandleInputEvent( |
| 6193 FatTap(120, 230 + i * 5, kTapDiameter)); |
6192 | 6194 |
6193 int j = i % 10; | 6195 int j = i % 10; |
6194 if (j >= 7 && j <= 9) | 6196 if (j >= 7 && j <= 9) |
6195 EXPECT_TRUE(client.Triggered()); | 6197 EXPECT_TRUE(client.Triggered()); |
6196 else | 6198 else |
6197 EXPECT_FALSE(client.Triggered()); | 6199 EXPECT_FALSE(client.Triggered()); |
6198 } | 6200 } |
6199 | 6201 |
6200 for (int i = 0; i <= 46; i++) { | 6202 for (int i = 0; i <= 46; i++) { |
6201 client.ResetTriggered(); | 6203 client.ResetTriggered(); |
6202 web_view_helper.WebView()->HandleInputEvent(FatTap(10 + i * 5, 590)); | 6204 web_view_helper.WebView()->HandleInputEvent( |
| 6205 FatTap(10 + i * 5, 590, kTapDiameter)); |
6203 | 6206 |
6204 int j = i % 10; | 6207 int j = i % 10; |
6205 if (j >= 7 && j <= 9) | 6208 if (j >= 7 && j <= 9) |
6206 EXPECT_TRUE(client.Triggered()); | 6209 EXPECT_TRUE(client.Triggered()); |
6207 else | 6210 else |
6208 EXPECT_FALSE(client.Triggered()); | 6211 EXPECT_FALSE(client.Triggered()); |
6209 } | 6212 } |
6210 | 6213 |
6211 // The same taps shouldn't trigger didTapMultipleTargets() after disabling the | 6214 // The same taps shouldn't trigger didTapMultipleTargets() after disabling the |
6212 // notification for multi-target-tap. | 6215 // notification for multi-target-tap. |
6213 web_view_helper.WebView() | 6216 web_view_helper.WebView() |
6214 ->GetSettings() | 6217 ->GetSettings() |
6215 ->SetMultiTargetTapNotificationEnabled(false); | 6218 ->SetMultiTargetTapNotificationEnabled(false); |
6216 | 6219 |
6217 for (int i = 0; i <= 46; i++) { | 6220 for (int i = 0; i <= 46; i++) { |
6218 client.ResetTriggered(); | 6221 client.ResetTriggered(); |
6219 web_view_helper.WebView()->HandleInputEvent(FatTap(10 + i * 5, 590)); | 6222 web_view_helper.WebView()->HandleInputEvent( |
| 6223 FatTap(10 + i * 5, 590, kTapDiameter)); |
6220 EXPECT_FALSE(client.Triggered()); | 6224 EXPECT_FALSE(client.Triggered()); |
6221 } | 6225 } |
6222 } | 6226 } |
6223 | 6227 |
6224 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupNoContainer) { | 6228 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupNoContainer) { |
6225 RegisterMockedHttpURLLoad("disambiguation_popup_no_container.html"); | 6229 RegisterMockedHttpURLLoad("disambiguation_popup_no_container.html"); |
6226 | 6230 |
6227 DisambiguationPopupTestWebViewClient client; | 6231 DisambiguationPopupTestWebViewClient client; |
| 6232 const int kTapDiameter = 100; |
6228 | 6233 |
6229 // Make sure we initialize to minimum scale, even if the window size | 6234 // Make sure we initialize to minimum scale, even if the window size |
6230 // only becomes available after the load begins. | 6235 // only becomes available after the load begins. |
6231 FrameTestHelpers::WebViewHelper web_view_helper; | 6236 FrameTestHelpers::WebViewHelper web_view_helper; |
6232 web_view_helper.InitializeAndLoad( | 6237 web_view_helper.InitializeAndLoad( |
6233 base_url_ + "disambiguation_popup_no_container.html", nullptr, &client); | 6238 base_url_ + "disambiguation_popup_no_container.html", nullptr, &client); |
6234 web_view_helper.Resize(WebSize(1000, 1000)); | 6239 web_view_helper.Resize(WebSize(1000, 1000)); |
6235 | 6240 |
6236 client.ResetTriggered(); | 6241 client.ResetTriggered(); |
6237 web_view_helper.WebView()->HandleInputEvent(FatTap(50, 50)); | 6242 web_view_helper.WebView()->HandleInputEvent(FatTap(50, 50, kTapDiameter)); |
6238 EXPECT_FALSE(client.Triggered()); | 6243 EXPECT_FALSE(client.Triggered()); |
6239 } | 6244 } |
6240 | 6245 |
6241 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupMobileSite) { | 6246 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupMobileSite) { |
6242 const std::string html_file = "disambiguation_popup_mobile_site.html"; | 6247 const std::string html_file = "disambiguation_popup_mobile_site.html"; |
6243 RegisterMockedHttpURLLoad(html_file); | 6248 RegisterMockedHttpURLLoad(html_file); |
6244 | 6249 |
6245 DisambiguationPopupTestWebViewClient client; | 6250 DisambiguationPopupTestWebViewClient client; |
| 6251 const int kTapDiameter = 100; |
6246 | 6252 |
6247 // Make sure we initialize to minimum scale, even if the window size | 6253 // Make sure we initialize to minimum scale, even if the window size |
6248 // only becomes available after the load begins. | 6254 // only becomes available after the load begins. |
6249 FrameTestHelpers::WebViewHelper web_view_helper; | 6255 FrameTestHelpers::WebViewHelper web_view_helper; |
6250 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client, | 6256 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client, |
6251 nullptr, ConfigureAndroid); | 6257 nullptr, ConfigureAndroid); |
6252 web_view_helper.Resize(WebSize(1000, 1000)); | 6258 web_view_helper.Resize(WebSize(1000, 1000)); |
6253 | 6259 |
6254 client.ResetTriggered(); | 6260 client.ResetTriggered(); |
6255 web_view_helper.WebView()->HandleInputEvent(FatTap(0, 0)); | 6261 web_view_helper.WebView()->HandleInputEvent(FatTap(0, 0, kTapDiameter)); |
6256 EXPECT_FALSE(client.Triggered()); | 6262 EXPECT_FALSE(client.Triggered()); |
6257 | 6263 |
6258 client.ResetTriggered(); | 6264 client.ResetTriggered(); |
6259 web_view_helper.WebView()->HandleInputEvent(FatTap(200, 115)); | 6265 web_view_helper.WebView()->HandleInputEvent(FatTap(200, 115, kTapDiameter)); |
6260 EXPECT_FALSE(client.Triggered()); | 6266 EXPECT_FALSE(client.Triggered()); |
6261 | 6267 |
6262 for (int i = 0; i <= 46; i++) { | 6268 for (int i = 0; i <= 46; i++) { |
6263 client.ResetTriggered(); | 6269 client.ResetTriggered(); |
6264 web_view_helper.WebView()->HandleInputEvent(FatTap(120, 230 + i * 5)); | 6270 web_view_helper.WebView()->HandleInputEvent( |
| 6271 FatTap(120, 230 + i * 5, kTapDiameter)); |
6265 EXPECT_FALSE(client.Triggered()); | 6272 EXPECT_FALSE(client.Triggered()); |
6266 } | 6273 } |
6267 | 6274 |
6268 for (int i = 0; i <= 46; i++) { | 6275 for (int i = 0; i <= 46; i++) { |
6269 client.ResetTriggered(); | 6276 client.ResetTriggered(); |
6270 web_view_helper.WebView()->HandleInputEvent(FatTap(10 + i * 5, 590)); | 6277 web_view_helper.WebView()->HandleInputEvent( |
| 6278 FatTap(10 + i * 5, 590, kTapDiameter)); |
6271 EXPECT_FALSE(client.Triggered()); | 6279 EXPECT_FALSE(client.Triggered()); |
6272 } | 6280 } |
6273 } | 6281 } |
6274 | 6282 |
6275 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupViewportSite) { | 6283 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupViewportSite) { |
6276 const std::string html_file = "disambiguation_popup_viewport_site.html"; | 6284 const std::string html_file = "disambiguation_popup_viewport_site.html"; |
6277 RegisterMockedHttpURLLoad(html_file); | 6285 RegisterMockedHttpURLLoad(html_file); |
6278 | 6286 |
6279 DisambiguationPopupTestWebViewClient client; | 6287 DisambiguationPopupTestWebViewClient client; |
| 6288 const int kTapDiameter = 100; |
6280 | 6289 |
6281 // Make sure we initialize to minimum scale, even if the window size | 6290 // Make sure we initialize to minimum scale, even if the window size |
6282 // only becomes available after the load begins. | 6291 // only becomes available after the load begins. |
6283 FrameTestHelpers::WebViewHelper web_view_helper; | 6292 FrameTestHelpers::WebViewHelper web_view_helper; |
6284 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client, | 6293 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client, |
6285 nullptr, ConfigureAndroid); | 6294 nullptr, ConfigureAndroid); |
6286 web_view_helper.Resize(WebSize(1000, 1000)); | 6295 web_view_helper.Resize(WebSize(1000, 1000)); |
6287 | 6296 |
6288 client.ResetTriggered(); | 6297 client.ResetTriggered(); |
6289 web_view_helper.WebView()->HandleInputEvent(FatTap(0, 0)); | 6298 web_view_helper.WebView()->HandleInputEvent(FatTap(0, 0, kTapDiameter)); |
6290 EXPECT_FALSE(client.Triggered()); | 6299 EXPECT_FALSE(client.Triggered()); |
6291 | 6300 |
6292 client.ResetTriggered(); | 6301 client.ResetTriggered(); |
6293 web_view_helper.WebView()->HandleInputEvent(FatTap(200, 115)); | 6302 web_view_helper.WebView()->HandleInputEvent(FatTap(200, 115, kTapDiameter)); |
6294 EXPECT_FALSE(client.Triggered()); | 6303 EXPECT_FALSE(client.Triggered()); |
6295 | 6304 |
6296 for (int i = 0; i <= 46; i++) { | 6305 for (int i = 0; i <= 46; i++) { |
6297 client.ResetTriggered(); | 6306 client.ResetTriggered(); |
6298 web_view_helper.WebView()->HandleInputEvent(FatTap(120, 230 + i * 5)); | 6307 web_view_helper.WebView()->HandleInputEvent( |
| 6308 FatTap(120, 230 + i * 5, kTapDiameter)); |
6299 EXPECT_FALSE(client.Triggered()); | 6309 EXPECT_FALSE(client.Triggered()); |
6300 } | 6310 } |
6301 | 6311 |
6302 for (int i = 0; i <= 46; i++) { | 6312 for (int i = 0; i <= 46; i++) { |
6303 client.ResetTriggered(); | 6313 client.ResetTriggered(); |
6304 web_view_helper.WebView()->HandleInputEvent(FatTap(10 + i * 5, 590)); | 6314 web_view_helper.WebView()->HandleInputEvent( |
| 6315 FatTap(10 + i * 5, 590, kTapDiameter)); |
6305 EXPECT_FALSE(client.Triggered()); | 6316 EXPECT_FALSE(client.Triggered()); |
6306 } | 6317 } |
6307 } | 6318 } |
6308 | 6319 |
6309 TEST_F(WebFrameTest, DisambiguationPopupVisualViewport) { | 6320 TEST_F(WebFrameTest, DisambiguationPopupVisualViewport) { |
6310 const std::string html_file = "disambiguation_popup_200_by_800.html"; | 6321 const std::string html_file = "disambiguation_popup_200_by_800.html"; |
6311 RegisterMockedHttpURLLoad(html_file); | 6322 RegisterMockedHttpURLLoad(html_file); |
6312 | 6323 |
6313 DisambiguationPopupTestWebViewClient client; | 6324 DisambiguationPopupTestWebViewClient client; |
| 6325 const int kTapDiameter = 100; |
6314 | 6326 |
6315 FrameTestHelpers::WebViewHelper web_view_helper; | 6327 FrameTestHelpers::WebViewHelper web_view_helper; |
6316 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client, | 6328 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client, |
6317 nullptr, ConfigureAndroid); | 6329 nullptr, ConfigureAndroid); |
6318 | 6330 |
6319 WebViewBase* web_view_impl = web_view_helper.WebView(); | 6331 WebViewBase* web_view_impl = web_view_helper.WebView(); |
6320 ASSERT_TRUE(web_view_impl); | 6332 ASSERT_TRUE(web_view_impl); |
6321 LocalFrame* frame = web_view_impl->MainFrameImpl()->GetFrame(); | 6333 LocalFrame* frame = web_view_impl->MainFrameImpl()->GetFrame(); |
6322 ASSERT_TRUE(frame); | 6334 ASSERT_TRUE(frame); |
6323 | 6335 |
6324 web_view_helper.Resize(WebSize(100, 200)); | 6336 web_view_helper.Resize(WebSize(100, 200)); |
6325 | 6337 |
6326 // Scroll main frame to the bottom of the document | 6338 // Scroll main frame to the bottom of the document |
6327 web_view_impl->MainFrame()->SetScrollOffset(WebSize(0, 400)); | 6339 web_view_impl->MainFrame()->SetScrollOffset(WebSize(0, 400)); |
6328 EXPECT_SIZE_EQ(ScrollOffset(0, 400), frame->View()->GetScrollOffset()); | 6340 EXPECT_SIZE_EQ(ScrollOffset(0, 400), frame->View()->GetScrollOffset()); |
6329 | 6341 |
6330 web_view_impl->SetPageScaleFactor(2.0); | 6342 web_view_impl->SetPageScaleFactor(2.0); |
6331 | 6343 |
6332 // Scroll visual viewport to the top of the main frame. | 6344 // Scroll visual viewport to the top of the main frame. |
6333 VisualViewport& visual_viewport = frame->GetPage()->GetVisualViewport(); | 6345 VisualViewport& visual_viewport = frame->GetPage()->GetVisualViewport(); |
6334 visual_viewport.SetLocation(FloatPoint(0, 0)); | 6346 visual_viewport.SetLocation(FloatPoint(0, 0)); |
6335 EXPECT_SIZE_EQ(ScrollOffset(0, 0), visual_viewport.GetScrollOffset()); | 6347 EXPECT_SIZE_EQ(ScrollOffset(0, 0), visual_viewport.GetScrollOffset()); |
6336 | 6348 |
6337 // Tap at the top: there is nothing there. | 6349 // Tap at the top: there is nothing there. |
6338 client.ResetTriggered(); | 6350 client.ResetTriggered(); |
6339 web_view_helper.WebView()->HandleInputEvent(FatTap(10, 60)); | 6351 web_view_helper.WebView()->HandleInputEvent(FatTap(10, 60, kTapDiameter)); |
6340 EXPECT_FALSE(client.Triggered()); | 6352 EXPECT_FALSE(client.Triggered()); |
6341 | 6353 |
6342 // Scroll visual viewport to the bottom of the main frame. | 6354 // Scroll visual viewport to the bottom of the main frame. |
6343 visual_viewport.SetLocation(FloatPoint(0, 200)); | 6355 visual_viewport.SetLocation(FloatPoint(0, 200)); |
6344 EXPECT_SIZE_EQ(ScrollOffset(0, 200), visual_viewport.GetScrollOffset()); | 6356 EXPECT_SIZE_EQ(ScrollOffset(0, 200), visual_viewport.GetScrollOffset()); |
6345 | 6357 |
6346 // Now the tap with the same coordinates should hit two elements. | 6358 // Now the tap with the same coordinates should hit two elements. |
6347 client.ResetTriggered(); | 6359 client.ResetTriggered(); |
6348 web_view_helper.WebView()->HandleInputEvent(FatTap(10, 60)); | 6360 web_view_helper.WebView()->HandleInputEvent(FatTap(10, 60, kTapDiameter)); |
6349 EXPECT_TRUE(client.Triggered()); | 6361 EXPECT_TRUE(client.Triggered()); |
6350 | 6362 |
6351 // The same tap shouldn't trigger didTapMultipleTargets() after disabling the | 6363 // The same tap shouldn't trigger didTapMultipleTargets() after disabling the |
6352 // notification for multi-target-tap. | 6364 // notification for multi-target-tap. |
6353 web_view_helper.WebView() | 6365 web_view_helper.WebView() |
6354 ->GetSettings() | 6366 ->GetSettings() |
6355 ->SetMultiTargetTapNotificationEnabled(false); | 6367 ->SetMultiTargetTapNotificationEnabled(false); |
6356 client.ResetTriggered(); | 6368 client.ResetTriggered(); |
6357 web_view_helper.WebView()->HandleInputEvent(FatTap(10, 60)); | 6369 web_view_helper.WebView()->HandleInputEvent(FatTap(10, 60, kTapDiameter)); |
6358 EXPECT_FALSE(client.Triggered()); | 6370 EXPECT_FALSE(client.Triggered()); |
6359 } | 6371 } |
6360 | 6372 |
6361 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupBlacklist) { | 6373 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupBlacklist) { |
6362 const unsigned kViewportWidth = 500; | 6374 const unsigned kViewportWidth = 500; |
6363 const unsigned kViewportHeight = 1000; | 6375 const unsigned kViewportHeight = 1000; |
6364 const unsigned kDivHeight = 100; | 6376 const unsigned kDivHeight = 100; |
6365 const std::string html_file = "disambiguation_popup_blacklist.html"; | 6377 const std::string html_file = "disambiguation_popup_blacklist.html"; |
6366 RegisterMockedHttpURLLoad(html_file); | 6378 RegisterMockedHttpURLLoad(html_file); |
6367 | 6379 |
6368 DisambiguationPopupTestWebViewClient client; | 6380 DisambiguationPopupTestWebViewClient client; |
| 6381 const int kTapDiameter = 100; |
6369 | 6382 |
6370 // Make sure we initialize to minimum scale, even if the window size | 6383 // Make sure we initialize to minimum scale, even if the window size |
6371 // only becomes available after the load begins. | 6384 // only becomes available after the load begins. |
6372 FrameTestHelpers::WebViewHelper web_view_helper; | 6385 FrameTestHelpers::WebViewHelper web_view_helper; |
6373 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client); | 6386 web_view_helper.InitializeAndLoad(base_url_ + html_file, nullptr, &client); |
6374 web_view_helper.Resize(WebSize(kViewportWidth, kViewportHeight)); | 6387 web_view_helper.Resize(WebSize(kViewportWidth, kViewportHeight)); |
6375 | 6388 |
6376 // Click somewhere where the popup shouldn't appear. | 6389 // Click somewhere where the popup shouldn't appear. |
6377 client.ResetTriggered(); | 6390 client.ResetTriggered(); |
6378 web_view_helper.WebView()->HandleInputEvent(FatTap(kViewportWidth / 2, 0)); | 6391 web_view_helper.WebView()->HandleInputEvent( |
| 6392 FatTap(kViewportWidth / 2, 0, kTapDiameter)); |
6379 EXPECT_FALSE(client.Triggered()); | 6393 EXPECT_FALSE(client.Triggered()); |
6380 | 6394 |
6381 // Click directly in between two container divs with click handlers, with | 6395 // Click directly in between two container divs with click handlers, with |
6382 // children that don't handle clicks. | 6396 // children that don't handle clicks. |
6383 client.ResetTriggered(); | 6397 client.ResetTriggered(); |
6384 web_view_helper.WebView()->HandleInputEvent( | 6398 web_view_helper.WebView()->HandleInputEvent( |
6385 FatTap(kViewportWidth / 2, kDivHeight)); | 6399 FatTap(kViewportWidth / 2, kDivHeight, kTapDiameter)); |
6386 EXPECT_TRUE(client.Triggered()); | 6400 EXPECT_TRUE(client.Triggered()); |
6387 | 6401 |
6388 // The third div container should be blacklisted if you click on the link it | 6402 // The third div container should be blacklisted if you click on the link it |
6389 // contains. | 6403 // contains. |
6390 client.ResetTriggered(); | 6404 client.ResetTriggered(); |
6391 web_view_helper.WebView()->HandleInputEvent( | 6405 web_view_helper.WebView()->HandleInputEvent( |
6392 FatTap(kViewportWidth / 2, kDivHeight * 3.25)); | 6406 FatTap(kViewportWidth / 2, kDivHeight * 3.25, kTapDiameter)); |
6393 EXPECT_FALSE(client.Triggered()); | 6407 EXPECT_FALSE(client.Triggered()); |
6394 } | 6408 } |
6395 | 6409 |
6396 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupPageScale) { | 6410 TEST_P(ParameterizedWebFrameTest, DisambiguationPopupPageScale) { |
6397 RegisterMockedHttpURLLoad("disambiguation_popup_page_scale.html"); | 6411 RegisterMockedHttpURLLoad("disambiguation_popup_page_scale.html"); |
6398 | 6412 |
6399 DisambiguationPopupTestWebViewClient client; | 6413 DisambiguationPopupTestWebViewClient client; |
| 6414 const int kTapDiameter = 50; |
6400 | 6415 |
6401 // Make sure we initialize to minimum scale, even if the window size | 6416 // Make sure we initialize to minimum scale, even if the window size |
6402 // only becomes available after the load begins. | 6417 // only becomes available after the load begins. |
6403 FrameTestHelpers::WebViewHelper web_view_helper; | 6418 FrameTestHelpers::WebViewHelper web_view_helper; |
6404 web_view_helper.InitializeAndLoad( | 6419 web_view_helper.InitializeAndLoad( |
6405 base_url_ + "disambiguation_popup_page_scale.html", nullptr, &client); | 6420 base_url_ + "disambiguation_popup_page_scale.html", nullptr, &client); |
6406 web_view_helper.Resize(WebSize(1000, 1000)); | 6421 web_view_helper.Resize(WebSize(1000, 1000)); |
6407 | 6422 |
6408 client.ResetTriggered(); | 6423 client.ResetTriggered(); |
6409 web_view_helper.WebView()->HandleInputEvent(FatTap(80, 80)); | 6424 web_view_helper.WebView()->HandleInputEvent(FatTap(80, 80, kTapDiameter)); |
6410 EXPECT_TRUE(client.Triggered()); | 6425 EXPECT_TRUE(client.Triggered()); |
6411 | 6426 |
6412 client.ResetTriggered(); | 6427 client.ResetTriggered(); |
6413 web_view_helper.WebView()->HandleInputEvent(FatTap(230, 190)); | 6428 web_view_helper.WebView()->HandleInputEvent(FatTap(230, 190, kTapDiameter)); |
6414 EXPECT_TRUE(client.Triggered()); | 6429 EXPECT_TRUE(client.Triggered()); |
6415 | 6430 |
6416 web_view_helper.WebView()->SetPageScaleFactor(3.0f); | 6431 web_view_helper.WebView()->SetPageScaleFactor(3.0f); |
6417 web_view_helper.WebView()->UpdateAllLifecyclePhases(); | 6432 web_view_helper.WebView()->UpdateAllLifecyclePhases(); |
6418 | 6433 |
6419 client.ResetTriggered(); | 6434 client.ResetTriggered(); |
6420 web_view_helper.WebView()->HandleInputEvent(FatTap(240, 240)); | 6435 web_view_helper.WebView()->HandleInputEvent(FatTap(240, 240, kTapDiameter)); |
6421 EXPECT_TRUE(client.Triggered()); | 6436 EXPECT_TRUE(client.Triggered()); |
6422 | 6437 |
6423 client.ResetTriggered(); | 6438 client.ResetTriggered(); |
6424 web_view_helper.WebView()->HandleInputEvent(FatTap(690, 570)); | 6439 web_view_helper.WebView()->HandleInputEvent(FatTap(690, 570, kTapDiameter)); |
6425 EXPECT_FALSE(client.Triggered()); | 6440 EXPECT_FALSE(client.Triggered()); |
6426 } | 6441 } |
6427 | 6442 |
6428 class TestSubstituteDataWebFrameClient | 6443 class TestSubstituteDataWebFrameClient |
6429 : public FrameTestHelpers::TestWebFrameClient { | 6444 : public FrameTestHelpers::TestWebFrameClient { |
6430 public: | 6445 public: |
6431 TestSubstituteDataWebFrameClient() : commit_called_(false) {} | 6446 TestSubstituteDataWebFrameClient() : commit_called_(false) {} |
6432 | 6447 |
6433 virtual void DidFailProvisionalLoad(const WebURLError& error, | 6448 virtual void DidFailProvisionalLoad(const WebURLError& error, |
6434 WebHistoryCommitType) { | 6449 WebHistoryCommitType) { |
(...skipping 3220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9655 FrameTestHelpers::TestWebRemoteFrameClient remote_client; | 9670 FrameTestHelpers::TestWebRemoteFrameClient remote_client; |
9656 view->SetMainFrame(remote_client.GetFrame()); | 9671 view->SetMainFrame(remote_client.GetFrame()); |
9657 | 9672 |
9658 GestureEventTestWebWidgetClient child_widget_client; | 9673 GestureEventTestWebWidgetClient child_widget_client; |
9659 WebLocalFrame* child_frame = FrameTestHelpers::CreateLocalChild( | 9674 WebLocalFrame* child_frame = FrameTestHelpers::CreateLocalChild( |
9660 view->MainFrame()->ToWebRemoteFrame(), WebString(), nullptr, | 9675 view->MainFrame()->ToWebRemoteFrame(), WebString(), nullptr, |
9661 &child_widget_client); | 9676 &child_widget_client); |
9662 | 9677 |
9663 view->Resize(WebSize(1000, 1000)); | 9678 view->Resize(WebSize(1000, 1000)); |
9664 | 9679 |
9665 child_frame->FrameWidget()->HandleInputEvent(FatTap(20, 20)); | 9680 WebGestureEvent event(WebInputEvent::kGestureTap, WebInputEvent::kNoModifiers, |
| 9681 WebInputEvent::kTimeStampForTesting); |
| 9682 event.source_device = kWebGestureDeviceTouchscreen; |
| 9683 event.x = 20; |
| 9684 event.y = 20; |
| 9685 child_frame->FrameWidget()->HandleInputEvent(WebCoalescedInputEvent(event)); |
9666 EXPECT_TRUE(child_widget_client.DidHandleGestureEvent()); | 9686 EXPECT_TRUE(child_widget_client.DidHandleGestureEvent()); |
9667 | 9687 |
9668 view->Close(); | 9688 view->Close(); |
9669 } | 9689 } |
9670 | 9690 |
9671 class MockDocumentThreadableLoaderClient | 9691 class MockDocumentThreadableLoaderClient |
9672 : public DocumentThreadableLoaderClient { | 9692 : public DocumentThreadableLoaderClient { |
9673 public: | 9693 public: |
9674 MockDocumentThreadableLoaderClient() : failed_(false) {} | 9694 MockDocumentThreadableLoaderClient() : failed_(false) {} |
9675 void DidFail(const ResourceError&) override { failed_ = true; } | 9695 void DidFail(const ResourceError&) override { failed_ = true; } |
(...skipping 2542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12218 if (obj->IsText()) { | 12238 if (obj->IsText()) { |
12219 LayoutText* layout_text = ToLayoutText(obj); | 12239 LayoutText* layout_text = ToLayoutText(obj); |
12220 text = layout_text->GetText(); | 12240 text = layout_text->GetText(); |
12221 break; | 12241 break; |
12222 } | 12242 } |
12223 } | 12243 } |
12224 EXPECT_EQ("foo alt", text.Utf8()); | 12244 EXPECT_EQ("foo alt", text.Utf8()); |
12225 } | 12245 } |
12226 | 12246 |
12227 } // namespace blink | 12247 } // namespace blink |
OLD | NEW |