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