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

Side by Side Diff: third_party/WebKit/Source/web/tests/WebFrameTest.cpp

Issue 2950553003: Tune tap disambiguation triggering threshold. (Closed)
Patch Set: Fix tests Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/core/page/TouchDisambiguation.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/page/TouchDisambiguation.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698