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 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
227 WebViewTest() | 227 WebViewTest() |
228 : ScopedRootLayerScrollingForTest(GetParam()), | 228 : ScopedRootLayerScrollingForTest(GetParam()), |
229 m_baseURL("http://www.test.com/") {} | 229 m_baseURL("http://www.test.com/") {} |
230 | 230 |
231 void TearDown() override { | 231 void TearDown() override { |
232 Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs(); | 232 Platform::current()->getURLLoaderMockFactory()->unregisterAllURLs(); |
233 WebCache::clear(); | 233 WebCache::clear(); |
234 } | 234 } |
235 | 235 |
236 protected: | 236 protected: |
237 void registerMockedHttpURLLoad(const std::string& fileName) { | 237 std::string registerMockedHttpURLLoad(const std::string& fileName) { |
238 URLTestHelpers::registerMockedURLFromBaseURL( | 238 return URLTestHelpers::registerMockedURLLoadFromBase( |
239 WebString::fromUTF8(m_baseURL.c_str()), | 239 WebString::fromUTF8(m_baseURL.c_str()), |
Takashi Toyoshima
2017/01/26 10:57:58
removing c_str
| |
240 WebString::fromUTF8(fileName.c_str())); | 240 testing::webTestDataPath(), |
241 WebString::fromUTF8(fileName.c_str())) | |
242 .string() | |
243 .utf8(); | |
241 } | 244 } |
242 | 245 |
243 void testAutoResize(const WebSize& minAutoResize, | 246 void testAutoResize(const WebSize& minAutoResize, |
244 const WebSize& maxAutoResize, | 247 const WebSize& maxAutoResize, |
245 const std::string& pageWidth, | 248 const std::string& pageWidth, |
246 const std::string& pageHeight, | 249 const std::string& pageHeight, |
247 int expectedWidth, | 250 int expectedWidth, |
248 int expectedHeight, | 251 int expectedHeight, |
249 HorizontalScrollbarState expectedHorizontalState, | 252 HorizontalScrollbarState expectedHorizontalState, |
250 VerticalScrollbarState expectedVerticalState); | 253 VerticalScrollbarState expectedVerticalState); |
(...skipping 17 matching lines...) Expand all Loading... | |
268 | 271 |
269 static std::string hitTestElementId(WebView* view, int x, int y) { | 272 static std::string hitTestElementId(WebView* view, int x, int y) { |
270 WebPoint hitPoint(x, y); | 273 WebPoint hitPoint(x, y); |
271 WebHitTestResult hitTestResult = view->hitTestResultAt(hitPoint); | 274 WebHitTestResult hitTestResult = view->hitTestResultAt(hitPoint); |
272 return hitTestResult.node().to<WebElement>().getAttribute("id").utf8(); | 275 return hitTestResult.node().to<WebElement>().getAttribute("id").utf8(); |
273 } | 276 } |
274 | 277 |
275 INSTANTIATE_TEST_CASE_P(All, WebViewTest, ::testing::Bool()); | 278 INSTANTIATE_TEST_CASE_P(All, WebViewTest, ::testing::Bool()); |
276 | 279 |
277 TEST_P(WebViewTest, HitTestContentEditableImageMaps) { | 280 TEST_P(WebViewTest, HitTestContentEditableImageMaps) { |
278 std::string url = m_baseURL + "content-editable-image-maps.html"; | 281 std::string url = |
279 URLTestHelpers::registerMockedURLLoad(toKURL(url), | 282 registerMockedHttpURLLoad("content-editable-image-maps.html"); |
280 "content-editable-image-maps.html"); | |
281 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); | 283 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); |
282 webView->resize(WebSize(500, 500)); | 284 webView->resize(WebSize(500, 500)); |
283 | 285 |
284 EXPECT_EQ("areaANotEditable", hitTestElementId(webView, 25, 25)); | 286 EXPECT_EQ("areaANotEditable", hitTestElementId(webView, 25, 25)); |
285 EXPECT_FALSE(hitTestIsContentEditable(webView, 25, 25)); | 287 EXPECT_FALSE(hitTestIsContentEditable(webView, 25, 25)); |
286 EXPECT_EQ("imageANotEditable", hitTestElementId(webView, 75, 25)); | 288 EXPECT_EQ("imageANotEditable", hitTestElementId(webView, 75, 25)); |
287 EXPECT_FALSE(hitTestIsContentEditable(webView, 75, 25)); | 289 EXPECT_FALSE(hitTestIsContentEditable(webView, 75, 25)); |
288 | 290 |
289 EXPECT_EQ("areaBNotEditable", hitTestElementId(webView, 25, 125)); | 291 EXPECT_EQ("areaBNotEditable", hitTestElementId(webView, 25, 125)); |
290 EXPECT_FALSE(hitTestIsContentEditable(webView, 25, 125)); | 292 EXPECT_FALSE(hitTestIsContentEditable(webView, 25, 125)); |
(...skipping 17 matching lines...) Expand all Loading... | |
308 return hitTestResult.absoluteImageURL().string().utf8(); | 310 return hitTestResult.absoluteImageURL().string().utf8(); |
309 } | 311 } |
310 | 312 |
311 static WebElement hitTestUrlElement(WebView* view, int x, int y) { | 313 static WebElement hitTestUrlElement(WebView* view, int x, int y) { |
312 WebPoint hitPoint(x, y); | 314 WebPoint hitPoint(x, y); |
313 WebHitTestResult hitTestResult = view->hitTestResultAt(hitPoint); | 315 WebHitTestResult hitTestResult = view->hitTestResultAt(hitPoint); |
314 return hitTestResult.urlElement(); | 316 return hitTestResult.urlElement(); |
315 } | 317 } |
316 | 318 |
317 TEST_P(WebViewTest, ImageMapUrls) { | 319 TEST_P(WebViewTest, ImageMapUrls) { |
318 std::string url = m_baseURL + "image-map.html"; | 320 std::string url = registerMockedHttpURLLoad("image-map.html"); |
319 URLTestHelpers::registerMockedURLLoad(toKURL(url), "image-map.html"); | |
320 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); | 321 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); |
321 webView->resize(WebSize(400, 400)); | 322 webView->resize(WebSize(400, 400)); |
322 | 323 |
323 std::string imageUrl = | 324 std::string imageUrl = |
324 "data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="; | 325 "data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="; |
325 | 326 |
326 EXPECT_EQ("area", hitTestElementId(webView, 25, 25)); | 327 EXPECT_EQ("area", hitTestElementId(webView, 25, 25)); |
327 EXPECT_EQ("area", | 328 EXPECT_EQ("area", |
328 hitTestUrlElement(webView, 25, 25).getAttribute("id").utf8()); | 329 hitTestUrlElement(webView, 25, 25).getAttribute("id").utf8()); |
329 EXPECT_EQ(imageUrl, hitTestAbsoluteUrl(webView, 25, 25)); | 330 EXPECT_EQ(imageUrl, hitTestAbsoluteUrl(webView, 25, 25)); |
330 | 331 |
331 EXPECT_EQ("image", hitTestElementId(webView, 75, 25)); | 332 EXPECT_EQ("image", hitTestElementId(webView, 75, 25)); |
332 EXPECT_TRUE(hitTestUrlElement(webView, 75, 25).isNull()); | 333 EXPECT_TRUE(hitTestUrlElement(webView, 75, 25).isNull()); |
333 EXPECT_EQ(imageUrl, hitTestAbsoluteUrl(webView, 75, 25)); | 334 EXPECT_EQ(imageUrl, hitTestAbsoluteUrl(webView, 75, 25)); |
334 } | 335 } |
335 | 336 |
336 TEST_P(WebViewTest, BrokenImage) { | 337 TEST_P(WebViewTest, BrokenImage) { |
337 URLTestHelpers::registerMockedErrorURLLoad( | 338 URLTestHelpers::registerMockedErrorURLLoad( |
338 KURL(toKURL(m_baseURL), "non_existent.png")); | 339 KURL(toKURL(m_baseURL), "non_existent.png")); |
339 std::string url = m_baseURL + "image-broken.html"; | 340 std::string url = registerMockedHttpURLLoad("image-broken.html"); |
340 URLTestHelpers::registerMockedURLLoad(toKURL(url), "image-broken.html"); | |
341 | 341 |
342 WebView* webView = m_webViewHelper.initialize(); | 342 WebView* webView = m_webViewHelper.initialize(); |
343 webView->settings()->setLoadsImagesAutomatically(true); | 343 webView->settings()->setLoadsImagesAutomatically(true); |
344 loadFrame(webView->mainFrame(), url); | 344 loadFrame(webView->mainFrame(), url); |
345 webView->resize(WebSize(400, 400)); | 345 webView->resize(WebSize(400, 400)); |
346 | 346 |
347 std::string imageUrl = "http://www.test.com/non_existent.png"; | 347 std::string imageUrl = "http://www.test.com/non_existent.png"; |
348 | 348 |
349 EXPECT_EQ("image", hitTestElementId(webView, 25, 25)); | 349 EXPECT_EQ("image", hitTestElementId(webView, 25, 25)); |
350 EXPECT_TRUE(hitTestUrlElement(webView, 25, 25).isNull()); | 350 EXPECT_TRUE(hitTestUrlElement(webView, 25, 25).isNull()); |
351 EXPECT_EQ(imageUrl, hitTestAbsoluteUrl(webView, 25, 25)); | 351 EXPECT_EQ(imageUrl, hitTestAbsoluteUrl(webView, 25, 25)); |
352 } | 352 } |
353 | 353 |
354 TEST_P(WebViewTest, BrokenInputImage) { | 354 TEST_P(WebViewTest, BrokenInputImage) { |
355 URLTestHelpers::registerMockedErrorURLLoad( | 355 URLTestHelpers::registerMockedErrorURLLoad( |
356 KURL(toKURL(m_baseURL), "non_existent.png")); | 356 KURL(toKURL(m_baseURL), "non_existent.png")); |
357 std::string url = m_baseURL + "input-image-broken.html"; | 357 std::string url = registerMockedHttpURLLoad("input-image-broken.html"); |
358 URLTestHelpers::registerMockedURLLoad(toKURL(url), "input-image-broken.html"); | |
359 | 358 |
360 WebView* webView = m_webViewHelper.initialize(); | 359 WebView* webView = m_webViewHelper.initialize(); |
361 webView->settings()->setLoadsImagesAutomatically(true); | 360 webView->settings()->setLoadsImagesAutomatically(true); |
362 loadFrame(webView->mainFrame(), url); | 361 loadFrame(webView->mainFrame(), url); |
363 webView->resize(WebSize(400, 400)); | 362 webView->resize(WebSize(400, 400)); |
364 | 363 |
365 std::string imageUrl = "http://www.test.com/non_existent.png"; | 364 std::string imageUrl = "http://www.test.com/non_existent.png"; |
366 | 365 |
367 EXPECT_EQ("image", hitTestElementId(webView, 25, 25)); | 366 EXPECT_EQ("image", hitTestElementId(webView, 25, 25)); |
368 EXPECT_TRUE(hitTestUrlElement(webView, 25, 25).isNull()); | 367 EXPECT_TRUE(hitTestUrlElement(webView, 25, 25).isNull()); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
479 | 478 |
480 pictureBuilder.endRecording()->playback(&canvas); | 479 pictureBuilder.endRecording()->playback(&canvas); |
481 | 480 |
482 // The result should be a blend of red and green. | 481 // The result should be a blend of red and green. |
483 SkColor color = bitmap.getColor(kWidth / 2, kHeight / 2); | 482 SkColor color = bitmap.getColor(kWidth / 2, kHeight / 2); |
484 EXPECT_TRUE(redChannel(color)); | 483 EXPECT_TRUE(redChannel(color)); |
485 EXPECT_TRUE(greenChannel(color)); | 484 EXPECT_TRUE(greenChannel(color)); |
486 } | 485 } |
487 | 486 |
488 TEST_P(WebViewTest, FocusIsInactive) { | 487 TEST_P(WebViewTest, FocusIsInactive) { |
489 URLTestHelpers::registerMockedURLFromBaseURL( | 488 registerMockedHttpURLLoad("visible_iframe.html"); |
490 WebString::fromUTF8(m_baseURL.c_str()), "visible_iframe.html"); | |
491 WebViewImpl* webView = | 489 WebViewImpl* webView = |
492 m_webViewHelper.initializeAndLoad(m_baseURL + "visible_iframe.html"); | 490 m_webViewHelper.initializeAndLoad(m_baseURL + "visible_iframe.html"); |
493 | 491 |
494 webView->setFocus(true); | 492 webView->setFocus(true); |
495 webView->setIsActive(true); | 493 webView->setIsActive(true); |
496 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 494 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
497 EXPECT_TRUE(frame->frame()->document()->isHTMLDocument()); | 495 EXPECT_TRUE(frame->frame()->document()->isHTMLDocument()); |
498 | 496 |
499 Document* document = frame->frame()->document(); | 497 Document* document = frame->frame()->document(); |
500 EXPECT_TRUE(document->hasFocus()); | 498 EXPECT_TRUE(document->hasFocus()); |
501 webView->setFocus(false); | 499 webView->setFocus(false); |
502 webView->setIsActive(false); | 500 webView->setIsActive(false); |
503 EXPECT_FALSE(document->hasFocus()); | 501 EXPECT_FALSE(document->hasFocus()); |
504 webView->setFocus(true); | 502 webView->setFocus(true); |
505 webView->setIsActive(true); | 503 webView->setIsActive(true); |
506 EXPECT_TRUE(document->hasFocus()); | 504 EXPECT_TRUE(document->hasFocus()); |
507 webView->setFocus(true); | 505 webView->setFocus(true); |
508 webView->setIsActive(false); | 506 webView->setIsActive(false); |
509 EXPECT_FALSE(document->hasFocus()); | 507 EXPECT_FALSE(document->hasFocus()); |
510 webView->setFocus(false); | 508 webView->setFocus(false); |
511 webView->setIsActive(true); | 509 webView->setIsActive(true); |
512 EXPECT_FALSE(document->hasFocus()); | 510 EXPECT_FALSE(document->hasFocus()); |
513 } | 511 } |
514 | 512 |
515 TEST_P(WebViewTest, ActiveState) { | 513 TEST_P(WebViewTest, ActiveState) { |
516 URLTestHelpers::registerMockedURLFromBaseURL( | 514 registerMockedHttpURLLoad("visible_iframe.html"); |
517 WebString::fromUTF8(m_baseURL.c_str()), "visible_iframe.html"); | |
518 WebView* webView = | 515 WebView* webView = |
519 m_webViewHelper.initializeAndLoad(m_baseURL + "visible_iframe.html"); | 516 m_webViewHelper.initializeAndLoad(m_baseURL + "visible_iframe.html"); |
520 | 517 |
521 ASSERT_TRUE(webView); | 518 ASSERT_TRUE(webView); |
522 | 519 |
523 webView->setIsActive(true); | 520 webView->setIsActive(true); |
524 EXPECT_TRUE(webView->isActive()); | 521 EXPECT_TRUE(webView->isActive()); |
525 | 522 |
526 webView->setIsActive(false); | 523 webView->setIsActive(false); |
527 EXPECT_FALSE(webView->isActive()); | 524 EXPECT_FALSE(webView->isActive()); |
528 | 525 |
529 webView->setIsActive(true); | 526 webView->setIsActive(true); |
530 EXPECT_TRUE(webView->isActive()); | 527 EXPECT_TRUE(webView->isActive()); |
531 } | 528 } |
532 | 529 |
533 TEST_P(WebViewTest, HitTestResultAtWithPageScale) { | 530 TEST_P(WebViewTest, HitTestResultAtWithPageScale) { |
534 std::string url = m_baseURL + "specify_size.html?" + "50px" + ":" + "50px"; | 531 std::string url = m_baseURL + "specify_size.html?" + "50px" + ":" + "50px"; |
535 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); | 532 URLTestHelpers::registerMockedURLLoad( |
533 toKURL(url), testing::webTestDataPath("specify_size.html")); | |
536 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); | 534 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); |
537 webView->resize(WebSize(100, 100)); | 535 webView->resize(WebSize(100, 100)); |
538 WebPoint hitPoint(75, 75); | 536 WebPoint hitPoint(75, 75); |
539 | 537 |
540 // Image is at top left quandrant, so should not hit it. | 538 // Image is at top left quandrant, so should not hit it. |
541 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); | 539 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); |
542 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); | 540 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); |
543 negativeResult.reset(); | 541 negativeResult.reset(); |
544 | 542 |
545 // Scale page up 2x so image should occupy the whole viewport. | 543 // Scale page up 2x so image should occupy the whole viewport. |
546 webView->setPageScaleFactor(2.0f); | 544 webView->setPageScaleFactor(2.0f); |
547 WebHitTestResult positiveResult = webView->hitTestResultAt(hitPoint); | 545 WebHitTestResult positiveResult = webView->hitTestResultAt(hitPoint); |
548 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); | 546 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); |
549 positiveResult.reset(); | 547 positiveResult.reset(); |
550 } | 548 } |
551 | 549 |
552 TEST_P(WebViewTest, HitTestResultAtWithPageScaleAndPan) { | 550 TEST_P(WebViewTest, HitTestResultAtWithPageScaleAndPan) { |
553 std::string url = m_baseURL + "specify_size.html?" + "50px" + ":" + "50px"; | 551 std::string url = m_baseURL + "specify_size.html?" + "50px" + ":" + "50px"; |
554 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); | 552 URLTestHelpers::registerMockedURLLoad( |
553 toKURL(url), testing::webTestDataPath("specify_size.html")); | |
555 WebView* webView = m_webViewHelper.initialize(true); | 554 WebView* webView = m_webViewHelper.initialize(true); |
556 loadFrame(webView->mainFrame(), url); | 555 loadFrame(webView->mainFrame(), url); |
557 webView->resize(WebSize(100, 100)); | 556 webView->resize(WebSize(100, 100)); |
558 WebPoint hitPoint(75, 75); | 557 WebPoint hitPoint(75, 75); |
559 | 558 |
560 // Image is at top left quandrant, so should not hit it. | 559 // Image is at top left quandrant, so should not hit it. |
561 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); | 560 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); |
562 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); | 561 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); |
563 negativeResult.reset(); | 562 negativeResult.reset(); |
564 | 563 |
565 // Scale page up 2x so image should occupy the whole viewport. | 564 // Scale page up 2x so image should occupy the whole viewport. |
566 webView->setPageScaleFactor(2.0f); | 565 webView->setPageScaleFactor(2.0f); |
567 WebHitTestResult positiveResult = webView->hitTestResultAt(hitPoint); | 566 WebHitTestResult positiveResult = webView->hitTestResultAt(hitPoint); |
568 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); | 567 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); |
569 positiveResult.reset(); | 568 positiveResult.reset(); |
570 | 569 |
571 // Pan around the zoomed in page so the image is not visible in viewport. | 570 // Pan around the zoomed in page so the image is not visible in viewport. |
572 webView->setVisualViewportOffset(WebFloatPoint(100, 100)); | 571 webView->setVisualViewportOffset(WebFloatPoint(100, 100)); |
573 WebHitTestResult negativeResult2 = webView->hitTestResultAt(hitPoint); | 572 WebHitTestResult negativeResult2 = webView->hitTestResultAt(hitPoint); |
574 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); | 573 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); |
575 negativeResult2.reset(); | 574 negativeResult2.reset(); |
576 } | 575 } |
577 | 576 |
578 TEST_P(WebViewTest, HitTestResultForTapWithTapArea) { | 577 TEST_P(WebViewTest, HitTestResultForTapWithTapArea) { |
579 std::string url = m_baseURL + "hit_test.html"; | 578 std::string url = registerMockedHttpURLLoad("hit_test.html"); |
580 URLTestHelpers::registerMockedURLLoad(toKURL(url), "hit_test.html"); | |
581 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); | 579 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); |
582 webView->resize(WebSize(100, 100)); | 580 webView->resize(WebSize(100, 100)); |
583 WebPoint hitPoint(55, 55); | 581 WebPoint hitPoint(55, 55); |
584 | 582 |
585 // Image is at top left quandrant, so should not hit it. | 583 // Image is at top left quandrant, so should not hit it. |
586 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); | 584 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); |
587 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); | 585 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); |
588 negativeResult.reset(); | 586 negativeResult.reset(); |
589 | 587 |
590 // The tap area is 20 by 20 square, centered at 55, 55. | 588 // The tap area is 20 by 20 square, centered at 55, 55. |
591 WebSize tapArea(20, 20); | 589 WebSize tapArea(20, 20); |
592 WebHitTestResult positiveResult = | 590 WebHitTestResult positiveResult = |
593 webView->hitTestResultForTap(hitPoint, tapArea); | 591 webView->hitTestResultForTap(hitPoint, tapArea); |
594 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); | 592 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); |
595 positiveResult.reset(); | 593 positiveResult.reset(); |
596 | 594 |
597 // Move the hit point the image is just outside the tapped area now. | 595 // Move the hit point the image is just outside the tapped area now. |
598 hitPoint = WebPoint(61, 61); | 596 hitPoint = WebPoint(61, 61); |
599 WebHitTestResult negativeResult2 = | 597 WebHitTestResult negativeResult2 = |
600 webView->hitTestResultForTap(hitPoint, tapArea); | 598 webView->hitTestResultForTap(hitPoint, tapArea); |
601 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); | 599 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); |
602 negativeResult2.reset(); | 600 negativeResult2.reset(); |
603 } | 601 } |
604 | 602 |
605 TEST_P(WebViewTest, HitTestResultForTapWithTapAreaPageScaleAndPan) { | 603 TEST_P(WebViewTest, HitTestResultForTapWithTapAreaPageScaleAndPan) { |
606 std::string url = m_baseURL + "hit_test.html"; | 604 std::string url = registerMockedHttpURLLoad("hit_test.html"); |
607 URLTestHelpers::registerMockedURLLoad(toKURL(url), "hit_test.html"); | |
608 WebView* webView = m_webViewHelper.initialize(true); | 605 WebView* webView = m_webViewHelper.initialize(true); |
609 loadFrame(webView->mainFrame(), url); | 606 loadFrame(webView->mainFrame(), url); |
610 webView->resize(WebSize(100, 100)); | 607 webView->resize(WebSize(100, 100)); |
611 WebPoint hitPoint(55, 55); | 608 WebPoint hitPoint(55, 55); |
612 | 609 |
613 // Image is at top left quandrant, so should not hit it. | 610 // Image is at top left quandrant, so should not hit it. |
614 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); | 611 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); |
615 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); | 612 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); |
616 negativeResult.reset(); | 613 negativeResult.reset(); |
617 | 614 |
(...skipping 18 matching lines...) Expand all Loading... | |
636 const WebSize& maxAutoResize, | 633 const WebSize& maxAutoResize, |
637 const std::string& pageWidth, | 634 const std::string& pageWidth, |
638 const std::string& pageHeight, | 635 const std::string& pageHeight, |
639 int expectedWidth, | 636 int expectedWidth, |
640 int expectedHeight, | 637 int expectedHeight, |
641 HorizontalScrollbarState expectedHorizontalState, | 638 HorizontalScrollbarState expectedHorizontalState, |
642 VerticalScrollbarState expectedVerticalState) { | 639 VerticalScrollbarState expectedVerticalState) { |
643 AutoResizeWebViewClient client; | 640 AutoResizeWebViewClient client; |
644 std::string url = | 641 std::string url = |
645 m_baseURL + "specify_size.html?" + pageWidth + ":" + pageHeight; | 642 m_baseURL + "specify_size.html?" + pageWidth + ":" + pageHeight; |
646 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); | 643 URLTestHelpers::registerMockedURLLoad( |
644 toKURL(url), testing::webTestDataPath("specify_size.html")); | |
647 WebViewImpl* webView = | 645 WebViewImpl* webView = |
648 m_webViewHelper.initializeAndLoad(url, true, 0, &client); | 646 m_webViewHelper.initializeAndLoad(url, true, 0, &client); |
649 client.testData().setWebView(webView); | 647 client.testData().setWebView(webView); |
650 | 648 |
651 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 649 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
652 FrameView* frameView = frame->frame()->view(); | 650 FrameView* frameView = frame->frame()->view(); |
653 frameView->layout(); | 651 frameView->layout(); |
654 EXPECT_FALSE(frameView->layoutPending()); | 652 EXPECT_FALSE(frameView->layoutPending()); |
655 EXPECT_FALSE(frameView->needsLayout()); | 653 EXPECT_FALSE(frameView->needsLayout()); |
656 | 654 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
745 std::string pageHeight = "300px"; | 743 std::string pageHeight = "300px"; |
746 int expectedWidth = 200; | 744 int expectedWidth = 200; |
747 int expectedHeight = 300; | 745 int expectedHeight = 300; |
748 testAutoResize(minAutoResize, maxAutoResize, pageWidth, pageHeight, | 746 testAutoResize(minAutoResize, maxAutoResize, pageWidth, pageHeight, |
749 expectedWidth, expectedHeight, NoHorizontalScrollbar, | 747 expectedWidth, expectedHeight, NoHorizontalScrollbar, |
750 NoVerticalScrollbar); | 748 NoVerticalScrollbar); |
751 } | 749 } |
752 | 750 |
753 void WebViewTest::testTextInputType(WebTextInputType expectedType, | 751 void WebViewTest::testTextInputType(WebTextInputType expectedType, |
754 const std::string& htmlFile) { | 752 const std::string& htmlFile) { |
755 URLTestHelpers::registerMockedURLFromBaseURL( | 753 registerMockedHttpURLLoad(htmlFile); |
756 WebString::fromUTF8(m_baseURL.c_str()), | |
757 WebString::fromUTF8(htmlFile.c_str())); | |
758 WebViewImpl* webView = | 754 WebViewImpl* webView = |
759 m_webViewHelper.initializeAndLoad(m_baseURL + htmlFile); | 755 m_webViewHelper.initializeAndLoad(m_baseURL + htmlFile); |
760 WebInputMethodControllerImpl* controller = | 756 WebInputMethodControllerImpl* controller = |
761 webView->mainFrameImpl()->inputMethodController(); | 757 webView->mainFrameImpl()->inputMethodController(); |
762 EXPECT_EQ(WebTextInputTypeNone, controller->textInputType()); | 758 EXPECT_EQ(WebTextInputTypeNone, controller->textInputType()); |
763 EXPECT_EQ(WebTextInputTypeNone, controller->textInputInfo().type); | 759 EXPECT_EQ(WebTextInputTypeNone, controller->textInputInfo().type); |
764 webView->setInitialFocus(false); | 760 webView->setInitialFocus(false); |
765 EXPECT_EQ(expectedType, controller->textInputType()); | 761 EXPECT_EQ(expectedType, controller->textInputType()); |
766 EXPECT_EQ(expectedType, controller->textInputInfo().type); | 762 EXPECT_EQ(expectedType, controller->textInputInfo().type); |
767 webView->clearFocusedElement(); | 763 webView->clearFocusedElement(); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
809 | 805 |
810 // This should not DCHECK. | 806 // This should not DCHECK. |
811 EXPECT_EQ(WebTextInputTypeText, webViewImpl->mainFrameImpl() | 807 EXPECT_EQ(WebTextInputTypeText, webViewImpl->mainFrameImpl() |
812 ->inputMethodController() | 808 ->inputMethodController() |
813 ->textInputInfo() | 809 ->textInputInfo() |
814 .type); | 810 .type); |
815 } | 811 } |
816 | 812 |
817 void WebViewTest::testInputMode(WebTextInputMode expectedInputMode, | 813 void WebViewTest::testInputMode(WebTextInputMode expectedInputMode, |
818 const std::string& htmlFile) { | 814 const std::string& htmlFile) { |
819 URLTestHelpers::registerMockedURLFromBaseURL( | 815 registerMockedHttpURLLoad(htmlFile); |
820 WebString::fromUTF8(m_baseURL.c_str()), | |
821 WebString::fromUTF8(htmlFile.c_str())); | |
822 WebViewImpl* webViewImpl = | 816 WebViewImpl* webViewImpl = |
823 m_webViewHelper.initializeAndLoad(m_baseURL + htmlFile); | 817 m_webViewHelper.initializeAndLoad(m_baseURL + htmlFile); |
824 webViewImpl->setInitialFocus(false); | 818 webViewImpl->setInitialFocus(false); |
825 EXPECT_EQ(expectedInputMode, webViewImpl->mainFrameImpl() | 819 EXPECT_EQ(expectedInputMode, webViewImpl->mainFrameImpl() |
826 ->inputMethodController() | 820 ->inputMethodController() |
827 ->textInputInfo() | 821 ->textInputInfo() |
828 .inputMode); | 822 .inputMode); |
829 } | 823 } |
830 | 824 |
831 TEST_P(WebViewTest, InputMode) { | 825 TEST_P(WebViewTest, InputMode) { |
(...skipping 27 matching lines...) Expand all Loading... | |
859 "input_mode_type_numeric.html"); | 853 "input_mode_type_numeric.html"); |
860 testInputMode(WebTextInputMode::kWebTextInputModeTel, | 854 testInputMode(WebTextInputMode::kWebTextInputModeTel, |
861 "input_mode_type_tel.html"); | 855 "input_mode_type_tel.html"); |
862 testInputMode(WebTextInputMode::kWebTextInputModeEmail, | 856 testInputMode(WebTextInputMode::kWebTextInputModeEmail, |
863 "input_mode_type_email.html"); | 857 "input_mode_type_email.html"); |
864 testInputMode(WebTextInputMode::kWebTextInputModeUrl, | 858 testInputMode(WebTextInputMode::kWebTextInputModeUrl, |
865 "input_mode_type_url.html"); | 859 "input_mode_type_url.html"); |
866 } | 860 } |
867 | 861 |
868 TEST_P(WebViewTest, TextInputInfoWithReplacedElements) { | 862 TEST_P(WebViewTest, TextInputInfoWithReplacedElements) { |
869 std::string url = m_baseURL + "div_with_image.html"; | 863 std::string url = registerMockedHttpURLLoad("div_with_image.html"); |
870 URLTestHelpers::registerMockedURLLoad(toKURL(url), "div_with_image.html"); | 864 URLTestHelpers::registerMockedURLLoad( |
871 URLTestHelpers::registerMockedURLLoad(toKURL("http://www.test.com/foo.png"), | 865 toKURL("http://www.test.com/foo.png"), |
872 "white-1x1.png"); | 866 testing::webTestDataPath("white-1x1.png")); |
873 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url); | 867 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url); |
874 webViewImpl->setInitialFocus(false); | 868 webViewImpl->setInitialFocus(false); |
875 WebTextInputInfo info = | 869 WebTextInputInfo info = |
876 webViewImpl->mainFrameImpl()->inputMethodController()->textInputInfo(); | 870 webViewImpl->mainFrameImpl()->inputMethodController()->textInputInfo(); |
877 | 871 |
878 EXPECT_EQ("foo\xef\xbf\xbc", info.value.utf8()); | 872 EXPECT_EQ("foo\xef\xbf\xbc", info.value.utf8()); |
879 } | 873 } |
880 | 874 |
881 TEST_P(WebViewTest, SetEditableSelectionOffsetsAndTextInputInfo) { | 875 TEST_P(WebViewTest, SetEditableSelectionOffsetsAndTextInputInfo) { |
882 URLTestHelpers::registerMockedURLFromBaseURL( | 876 registerMockedHttpURLLoad("input_field_populated.html"); |
883 WebString::fromUTF8(m_baseURL.c_str()), | |
884 WebString::fromUTF8("input_field_populated.html")); | |
885 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 877 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
886 m_baseURL + "input_field_populated.html"); | 878 m_baseURL + "input_field_populated.html"); |
887 webView->setInitialFocus(false); | 879 webView->setInitialFocus(false); |
888 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 880 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
889 WebInputMethodControllerImpl* activeInputMethodController = | 881 WebInputMethodControllerImpl* activeInputMethodController = |
890 frame->inputMethodController(); | 882 frame->inputMethodController(); |
891 frame->setEditableSelectionOffsets(5, 13); | 883 frame->setEditableSelectionOffsets(5, 13); |
892 EXPECT_EQ("56789abc", frame->selectionAsText()); | 884 EXPECT_EQ("56789abc", frame->selectionAsText()); |
893 WebTextInputInfo info = activeInputMethodController->textInputInfo(); | 885 WebTextInputInfo info = activeInputMethodController->textInputInfo(); |
894 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); | 886 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); |
895 EXPECT_EQ(5, info.selectionStart); | 887 EXPECT_EQ(5, info.selectionStart); |
896 EXPECT_EQ(13, info.selectionEnd); | 888 EXPECT_EQ(13, info.selectionEnd); |
897 EXPECT_EQ(-1, info.compositionStart); | 889 EXPECT_EQ(-1, info.compositionStart); |
898 EXPECT_EQ(-1, info.compositionEnd); | 890 EXPECT_EQ(-1, info.compositionEnd); |
899 | 891 |
900 URLTestHelpers::registerMockedURLFromBaseURL( | 892 registerMockedHttpURLLoad("content_editable_populated.html"); |
901 WebString::fromUTF8(m_baseURL.c_str()), | |
902 WebString::fromUTF8("content_editable_populated.html")); | |
903 webView = m_webViewHelper.initializeAndLoad( | 893 webView = m_webViewHelper.initializeAndLoad( |
904 m_baseURL + "content_editable_populated.html"); | 894 m_baseURL + "content_editable_populated.html"); |
905 webView->setInitialFocus(false); | 895 webView->setInitialFocus(false); |
906 frame = webView->mainFrameImpl(); | 896 frame = webView->mainFrameImpl(); |
907 activeInputMethodController = frame->inputMethodController(); | 897 activeInputMethodController = frame->inputMethodController(); |
908 frame->setEditableSelectionOffsets(8, 19); | 898 frame->setEditableSelectionOffsets(8, 19); |
909 EXPECT_EQ("89abcdefghi", frame->selectionAsText()); | 899 EXPECT_EQ("89abcdefghi", frame->selectionAsText()); |
910 info = activeInputMethodController->textInputInfo(); | 900 info = activeInputMethodController->textInputInfo(); |
911 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); | 901 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); |
912 EXPECT_EQ(8, info.selectionStart); | 902 EXPECT_EQ(8, info.selectionStart); |
913 EXPECT_EQ(19, info.selectionEnd); | 903 EXPECT_EQ(19, info.selectionEnd); |
914 EXPECT_EQ(-1, info.compositionStart); | 904 EXPECT_EQ(-1, info.compositionStart); |
915 EXPECT_EQ(-1, info.compositionEnd); | 905 EXPECT_EQ(-1, info.compositionEnd); |
916 } | 906 } |
917 | 907 |
918 // Regression test for crbug.com/663645 | 908 // Regression test for crbug.com/663645 |
919 TEST_P(WebViewTest, FinishComposingTextDoesNotAssert) { | 909 TEST_P(WebViewTest, FinishComposingTextDoesNotAssert) { |
920 URLTestHelpers::registerMockedURLFromBaseURL( | 910 registerMockedHttpURLLoad("input_field_default.html"); |
921 WebString::fromUTF8(m_baseURL.c_str()), | |
922 WebString::fromUTF8("input_field_default.html")); | |
923 WebViewImpl* webView = | 911 WebViewImpl* webView = |
924 m_webViewHelper.initializeAndLoad(m_baseURL + "input_field_default.html"); | 912 m_webViewHelper.initializeAndLoad(m_baseURL + "input_field_default.html"); |
925 webView->setInitialFocus(false); | 913 webView->setInitialFocus(false); |
926 | 914 |
927 WebInputMethodController* activeInputMethodController = | 915 WebInputMethodController* activeInputMethodController = |
928 webView->mainFrameImpl() | 916 webView->mainFrameImpl() |
929 ->frameWidget() | 917 ->frameWidget() |
930 ->getActiveWebInputMethodController(); | 918 ->getActiveWebInputMethodController(); |
931 | 919 |
932 // The test requires non-empty composition. | 920 // The test requires non-empty composition. |
933 std::string compositionText("hello"); | 921 std::string compositionText("hello"); |
934 WebVector<WebCompositionUnderline> emptyUnderlines; | 922 WebVector<WebCompositionUnderline> emptyUnderlines; |
935 activeInputMethodController->setComposition( | 923 activeInputMethodController->setComposition( |
936 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 5, 5); | 924 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 5, 5); |
937 | 925 |
938 // Do arbitrary change to make layout dirty. | 926 // Do arbitrary change to make layout dirty. |
939 Document& document = *webView->mainFrameImpl()->frame()->document(); | 927 Document& document = *webView->mainFrameImpl()->frame()->document(); |
940 Element* br = document.createElement("br"); | 928 Element* br = document.createElement("br"); |
941 document.body()->appendChild(br); | 929 document.body()->appendChild(br); |
942 | 930 |
943 // Should not hit assertion when calling | 931 // Should not hit assertion when calling |
944 // WebInputMethodController::finishComposingText with non-empty composition | 932 // WebInputMethodController::finishComposingText with non-empty composition |
945 // and dirty layout. | 933 // and dirty layout. |
946 activeInputMethodController->finishComposingText( | 934 activeInputMethodController->finishComposingText( |
947 WebInputMethodController::KeepSelection); | 935 WebInputMethodController::KeepSelection); |
948 } | 936 } |
949 | 937 |
950 TEST_P(WebViewTest, FinishComposingTextCursorPositionChange) { | 938 TEST_P(WebViewTest, FinishComposingTextCursorPositionChange) { |
951 URLTestHelpers::registerMockedURLFromBaseURL( | 939 registerMockedHttpURLLoad("input_field_populated.html"); |
952 WebString::fromUTF8(m_baseURL.c_str()), | |
953 WebString::fromUTF8("input_field_populated.html")); | |
954 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 940 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
955 m_baseURL + "input_field_populated.html"); | 941 m_baseURL + "input_field_populated.html"); |
956 webView->setInitialFocus(false); | 942 webView->setInitialFocus(false); |
957 | 943 |
958 // Set up a composition that needs to be committed. | 944 // Set up a composition that needs to be committed. |
959 std::string compositionText("hello"); | 945 std::string compositionText("hello"); |
960 | 946 |
961 WebInputMethodController* activeInputMethodController = | 947 WebInputMethodController* activeInputMethodController = |
962 webView->mainFrameImpl() | 948 webView->mainFrameImpl() |
963 ->frameWidget() | 949 ->frameWidget() |
(...skipping 29 matching lines...) Expand all Loading... | |
993 activeInputMethodController->finishComposingText( | 979 activeInputMethodController->finishComposingText( |
994 WebInputMethodController::DoNotKeepSelection); | 980 WebInputMethodController::DoNotKeepSelection); |
995 info = activeInputMethodController->textInputInfo(); | 981 info = activeInputMethodController->textInputInfo(); |
996 EXPECT_EQ(8, info.selectionStart); | 982 EXPECT_EQ(8, info.selectionStart); |
997 EXPECT_EQ(8, info.selectionEnd); | 983 EXPECT_EQ(8, info.selectionEnd); |
998 EXPECT_EQ(-1, info.compositionStart); | 984 EXPECT_EQ(-1, info.compositionStart); |
999 EXPECT_EQ(-1, info.compositionEnd); | 985 EXPECT_EQ(-1, info.compositionEnd); |
1000 } | 986 } |
1001 | 987 |
1002 TEST_P(WebViewTest, SetCompositionForNewCaretPositions) { | 988 TEST_P(WebViewTest, SetCompositionForNewCaretPositions) { |
1003 URLTestHelpers::registerMockedURLFromBaseURL( | 989 registerMockedHttpURLLoad("input_field_populated.html"); |
1004 WebString::fromUTF8(m_baseURL.c_str()), | |
1005 WebString::fromUTF8("input_field_populated.html")); | |
1006 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 990 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
1007 m_baseURL + "input_field_populated.html"); | 991 m_baseURL + "input_field_populated.html"); |
1008 webView->setInitialFocus(false); | 992 webView->setInitialFocus(false); |
1009 WebInputMethodController* activeInputMethodController = | 993 WebInputMethodController* activeInputMethodController = |
1010 webView->mainFrameImpl() | 994 webView->mainFrameImpl() |
1011 ->frameWidget() | 995 ->frameWidget() |
1012 ->getActiveWebInputMethodController(); | 996 ->getActiveWebInputMethodController(); |
1013 | 997 |
1014 WebVector<WebCompositionUnderline> emptyUnderlines; | 998 WebVector<WebCompositionUnderline> emptyUnderlines; |
1015 | 999 |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1102 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 100, 100); | 1086 WebString::fromUTF8(compositionText.c_str()), emptyUnderlines, 100, 100); |
1103 info = activeInputMethodController->textInputInfo(); | 1087 info = activeInputMethodController->textInputInfo(); |
1104 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); | 1088 EXPECT_EQ("helloABCworld", std::string(info.value.utf8().data())); |
1105 EXPECT_EQ(13, info.selectionStart); | 1089 EXPECT_EQ(13, info.selectionStart); |
1106 EXPECT_EQ(13, info.selectionEnd); | 1090 EXPECT_EQ(13, info.selectionEnd); |
1107 EXPECT_EQ(5, info.compositionStart); | 1091 EXPECT_EQ(5, info.compositionStart); |
1108 EXPECT_EQ(8, info.compositionEnd); | 1092 EXPECT_EQ(8, info.compositionEnd); |
1109 } | 1093 } |
1110 | 1094 |
1111 TEST_P(WebViewTest, SetCompositionWithEmptyText) { | 1095 TEST_P(WebViewTest, SetCompositionWithEmptyText) { |
1112 URLTestHelpers::registerMockedURLFromBaseURL( | 1096 registerMockedHttpURLLoad("input_field_populated.html"); |
1113 WebString::fromUTF8(m_baseURL.c_str()), | |
1114 WebString::fromUTF8("input_field_populated.html")); | |
1115 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 1097 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
1116 m_baseURL + "input_field_populated.html"); | 1098 m_baseURL + "input_field_populated.html"); |
1117 webView->setInitialFocus(false); | 1099 webView->setInitialFocus(false); |
1118 WebInputMethodController* activeInputMethodController = | 1100 WebInputMethodController* activeInputMethodController = |
1119 webView->mainFrameImpl() | 1101 webView->mainFrameImpl() |
1120 ->frameWidget() | 1102 ->frameWidget() |
1121 ->getActiveWebInputMethodController(); | 1103 ->getActiveWebInputMethodController(); |
1122 | 1104 |
1123 WebVector<WebCompositionUnderline> emptyUnderlines; | 1105 WebVector<WebCompositionUnderline> emptyUnderlines; |
1124 | 1106 |
(...skipping 19 matching lines...) Expand all Loading... | |
1144 emptyUnderlines, -2, -2); | 1126 emptyUnderlines, -2, -2); |
1145 info = activeInputMethodController->textInputInfo(); | 1127 info = activeInputMethodController->textInputInfo(); |
1146 EXPECT_EQ("hello", std::string(info.value.utf8().data())); | 1128 EXPECT_EQ("hello", std::string(info.value.utf8().data())); |
1147 EXPECT_EQ(3, info.selectionStart); | 1129 EXPECT_EQ(3, info.selectionStart); |
1148 EXPECT_EQ(3, info.selectionEnd); | 1130 EXPECT_EQ(3, info.selectionEnd); |
1149 EXPECT_EQ(-1, info.compositionStart); | 1131 EXPECT_EQ(-1, info.compositionStart); |
1150 EXPECT_EQ(-1, info.compositionEnd); | 1132 EXPECT_EQ(-1, info.compositionEnd); |
1151 } | 1133 } |
1152 | 1134 |
1153 TEST_P(WebViewTest, CommitTextForNewCaretPositions) { | 1135 TEST_P(WebViewTest, CommitTextForNewCaretPositions) { |
1154 URLTestHelpers::registerMockedURLFromBaseURL( | 1136 registerMockedHttpURLLoad("input_field_populated.html"); |
1155 WebString::fromUTF8(m_baseURL.c_str()), | |
1156 WebString::fromUTF8("input_field_populated.html")); | |
1157 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 1137 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
1158 m_baseURL + "input_field_populated.html"); | 1138 m_baseURL + "input_field_populated.html"); |
1159 webView->setInitialFocus(false); | 1139 webView->setInitialFocus(false); |
1160 WebInputMethodController* activeInputMethodController = | 1140 WebInputMethodController* activeInputMethodController = |
1161 webView->mainFrameImpl() | 1141 webView->mainFrameImpl() |
1162 ->frameWidget() | 1142 ->frameWidget() |
1163 ->getActiveWebInputMethodController(); | 1143 ->getActiveWebInputMethodController(); |
1164 | 1144 |
1165 WebVector<WebCompositionUnderline> emptyUnderlines; | 1145 WebVector<WebCompositionUnderline> emptyUnderlines; |
1166 | 1146 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1213 activeInputMethodController->commitText("jk", emptyUnderlines, 100); | 1193 activeInputMethodController->commitText("jk", emptyUnderlines, 100); |
1214 info = activeInputMethodController->textInputInfo(); | 1194 info = activeInputMethodController->textInputInfo(); |
1215 EXPECT_EQ("jkgcadefbhi", std::string(info.value.utf8().data())); | 1195 EXPECT_EQ("jkgcadefbhi", std::string(info.value.utf8().data())); |
1216 EXPECT_EQ(11, info.selectionStart); | 1196 EXPECT_EQ(11, info.selectionStart); |
1217 EXPECT_EQ(11, info.selectionEnd); | 1197 EXPECT_EQ(11, info.selectionEnd); |
1218 EXPECT_EQ(-1, info.compositionStart); | 1198 EXPECT_EQ(-1, info.compositionStart); |
1219 EXPECT_EQ(-1, info.compositionEnd); | 1199 EXPECT_EQ(-1, info.compositionEnd); |
1220 } | 1200 } |
1221 | 1201 |
1222 TEST_P(WebViewTest, CommitTextWhileComposing) { | 1202 TEST_P(WebViewTest, CommitTextWhileComposing) { |
1223 URLTestHelpers::registerMockedURLFromBaseURL( | 1203 registerMockedHttpURLLoad("input_field_populated.html"); |
1224 WebString::fromUTF8(m_baseURL.c_str()), | |
1225 WebString::fromUTF8("input_field_populated.html")); | |
1226 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 1204 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
1227 m_baseURL + "input_field_populated.html"); | 1205 m_baseURL + "input_field_populated.html"); |
1228 webView->setInitialFocus(false); | 1206 webView->setInitialFocus(false); |
1229 WebInputMethodController* activeInputMethodController = | 1207 WebInputMethodController* activeInputMethodController = |
1230 webView->mainFrameImpl() | 1208 webView->mainFrameImpl() |
1231 ->frameWidget() | 1209 ->frameWidget() |
1232 ->getActiveWebInputMethodController(); | 1210 ->getActiveWebInputMethodController(); |
1233 | 1211 |
1234 WebVector<WebCompositionUnderline> emptyUnderlines; | 1212 WebVector<WebCompositionUnderline> emptyUnderlines; |
1235 activeInputMethodController->setComposition(WebString::fromUTF8("abc"), | 1213 activeInputMethodController->setComposition(WebString::fromUTF8("abc"), |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1282 activeInputMethodController->commitText("", emptyUnderlines, 5); | 1260 activeInputMethodController->commitText("", emptyUnderlines, 5); |
1283 info = activeInputMethodController->textInputInfo(); | 1261 info = activeInputMethodController->textInputInfo(); |
1284 EXPECT_EQ("helloworld", std::string(info.value.utf8().data())); | 1262 EXPECT_EQ("helloworld", std::string(info.value.utf8().data())); |
1285 EXPECT_EQ(10, info.selectionStart); | 1263 EXPECT_EQ(10, info.selectionStart); |
1286 EXPECT_EQ(10, info.selectionEnd); | 1264 EXPECT_EQ(10, info.selectionEnd); |
1287 EXPECT_EQ(-1, info.compositionStart); | 1265 EXPECT_EQ(-1, info.compositionStart); |
1288 EXPECT_EQ(-1, info.compositionEnd); | 1266 EXPECT_EQ(-1, info.compositionEnd); |
1289 } | 1267 } |
1290 | 1268 |
1291 TEST_P(WebViewTest, FinishCompositionDoesNotRevealSelection) { | 1269 TEST_P(WebViewTest, FinishCompositionDoesNotRevealSelection) { |
1292 URLTestHelpers::registerMockedURLFromBaseURL( | 1270 registerMockedHttpURLLoad("form_with_input.html"); |
1293 WebString::fromUTF8(m_baseURL.c_str()), | |
1294 WebString::fromUTF8("form_with_input.html")); | |
1295 WebViewImpl* webView = | 1271 WebViewImpl* webView = |
1296 m_webViewHelper.initializeAndLoad(m_baseURL + "form_with_input.html"); | 1272 m_webViewHelper.initializeAndLoad(m_baseURL + "form_with_input.html"); |
1297 webView->resize(WebSize(800, 600)); | 1273 webView->resize(WebSize(800, 600)); |
1298 webView->setInitialFocus(false); | 1274 webView->setInitialFocus(false); |
1299 EXPECT_EQ(0, webView->mainFrame()->getScrollOffset().width); | 1275 EXPECT_EQ(0, webView->mainFrame()->getScrollOffset().width); |
1300 EXPECT_EQ(0, webView->mainFrame()->getScrollOffset().height); | 1276 EXPECT_EQ(0, webView->mainFrame()->getScrollOffset().height); |
1301 | 1277 |
1302 // Set up a composition from existing text that needs to be committed. | 1278 // Set up a composition from existing text that needs to be committed. |
1303 Vector<CompositionUnderline> emptyUnderlines; | 1279 Vector<CompositionUnderline> emptyUnderlines; |
1304 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 1280 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
(...skipping 13 matching lines...) Expand all Loading... | |
1318 | 1294 |
1319 // Verify that the input field is not scrolled back into the viewport. | 1295 // Verify that the input field is not scrolled back into the viewport. |
1320 frame->frameWidget() | 1296 frame->frameWidget() |
1321 ->getActiveWebInputMethodController() | 1297 ->getActiveWebInputMethodController() |
1322 ->finishComposingText(WebInputMethodController::DoNotKeepSelection); | 1298 ->finishComposingText(WebInputMethodController::DoNotKeepSelection); |
1323 EXPECT_EQ(0, webView->mainFrame()->getScrollOffset().width); | 1299 EXPECT_EQ(0, webView->mainFrame()->getScrollOffset().width); |
1324 EXPECT_EQ(offsetHeight, webView->mainFrame()->getScrollOffset().height); | 1300 EXPECT_EQ(offsetHeight, webView->mainFrame()->getScrollOffset().height); |
1325 } | 1301 } |
1326 | 1302 |
1327 TEST_P(WebViewTest, InsertNewLinePlacementAfterFinishComposingText) { | 1303 TEST_P(WebViewTest, InsertNewLinePlacementAfterFinishComposingText) { |
1328 URLTestHelpers::registerMockedURLFromBaseURL( | 1304 registerMockedHttpURLLoad("text_area_populated.html"); |
1329 WebString::fromUTF8(m_baseURL.c_str()), | |
1330 WebString::fromUTF8("text_area_populated.html")); | |
1331 WebViewImpl* webView = | 1305 WebViewImpl* webView = |
1332 m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_populated.html"); | 1306 m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_populated.html"); |
1333 webView->setInitialFocus(false); | 1307 webView->setInitialFocus(false); |
1334 | 1308 |
1335 WebVector<WebCompositionUnderline> emptyUnderlines; | 1309 WebVector<WebCompositionUnderline> emptyUnderlines; |
1336 | 1310 |
1337 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 1311 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
1338 WebInputMethodController* activeInputMethodController = | 1312 WebInputMethodController* activeInputMethodController = |
1339 frame->inputMethodController(); | 1313 frame->inputMethodController(); |
1340 frame->setEditableSelectionOffsets(4, 4); | 1314 frame->setEditableSelectionOffsets(4, 4); |
(...skipping 21 matching lines...) Expand all Loading... | |
1362 info = activeInputMethodController->textInputInfo(); | 1336 info = activeInputMethodController->textInputInfo(); |
1363 EXPECT_EQ(5, info.selectionStart); | 1337 EXPECT_EQ(5, info.selectionStart); |
1364 EXPECT_EQ(5, info.selectionEnd); | 1338 EXPECT_EQ(5, info.selectionEnd); |
1365 EXPECT_EQ(-1, info.compositionStart); | 1339 EXPECT_EQ(-1, info.compositionStart); |
1366 EXPECT_EQ(-1, info.compositionEnd); | 1340 EXPECT_EQ(-1, info.compositionEnd); |
1367 EXPECT_EQ("0123\n456789abcdefghijklmnopqrstuvwxyz", | 1341 EXPECT_EQ("0123\n456789abcdefghijklmnopqrstuvwxyz", |
1368 std::string(info.value.utf8().data())); | 1342 std::string(info.value.utf8().data())); |
1369 } | 1343 } |
1370 | 1344 |
1371 TEST_P(WebViewTest, ExtendSelectionAndDelete) { | 1345 TEST_P(WebViewTest, ExtendSelectionAndDelete) { |
1372 URLTestHelpers::registerMockedURLFromBaseURL( | 1346 registerMockedHttpURLLoad("input_field_populated.html"); |
1373 WebString::fromUTF8(m_baseURL.c_str()), | |
1374 WebString::fromUTF8("input_field_populated.html")); | |
1375 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 1347 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
1376 m_baseURL + "input_field_populated.html"); | 1348 m_baseURL + "input_field_populated.html"); |
1377 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 1349 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
1378 webView->setInitialFocus(false); | 1350 webView->setInitialFocus(false); |
1379 frame->setEditableSelectionOffsets(10, 10); | 1351 frame->setEditableSelectionOffsets(10, 10); |
1380 frame->extendSelectionAndDelete(5, 8); | 1352 frame->extendSelectionAndDelete(5, 8); |
1381 WebInputMethodController* activeInputMethodController = | 1353 WebInputMethodController* activeInputMethodController = |
1382 frame->inputMethodController(); | 1354 frame->inputMethodController(); |
1383 WebTextInputInfo info = activeInputMethodController->textInputInfo(); | 1355 WebTextInputInfo info = activeInputMethodController->textInputInfo(); |
1384 EXPECT_EQ("01234ijklmnopqrstuvwxyz", std::string(info.value.utf8().data())); | 1356 EXPECT_EQ("01234ijklmnopqrstuvwxyz", std::string(info.value.utf8().data())); |
1385 EXPECT_EQ(5, info.selectionStart); | 1357 EXPECT_EQ(5, info.selectionStart); |
1386 EXPECT_EQ(5, info.selectionEnd); | 1358 EXPECT_EQ(5, info.selectionEnd); |
1387 frame->extendSelectionAndDelete(10, 0); | 1359 frame->extendSelectionAndDelete(10, 0); |
1388 info = activeInputMethodController->textInputInfo(); | 1360 info = activeInputMethodController->textInputInfo(); |
1389 EXPECT_EQ("ijklmnopqrstuvwxyz", std::string(info.value.utf8().data())); | 1361 EXPECT_EQ("ijklmnopqrstuvwxyz", std::string(info.value.utf8().data())); |
1390 } | 1362 } |
1391 | 1363 |
1392 TEST_P(WebViewTest, DeleteSurroundingText) { | 1364 TEST_P(WebViewTest, DeleteSurroundingText) { |
1393 URLTestHelpers::registerMockedURLFromBaseURL( | 1365 registerMockedHttpURLLoad("input_field_populated.html"); |
1394 WebString::fromUTF8(m_baseURL.c_str()), | |
1395 WebString::fromUTF8("input_field_populated.html")); | |
1396 WebView* webView = m_webViewHelper.initializeAndLoad( | 1366 WebView* webView = m_webViewHelper.initializeAndLoad( |
1397 m_baseURL + "input_field_populated.html"); | 1367 m_baseURL + "input_field_populated.html"); |
1398 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame()); | 1368 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame()); |
1399 WebInputMethodController* activeInputMethodController = | 1369 WebInputMethodController* activeInputMethodController = |
1400 frame->inputMethodController(); | 1370 frame->inputMethodController(); |
1401 webView->setInitialFocus(false); | 1371 webView->setInitialFocus(false); |
1402 | 1372 |
1403 frame->setEditableSelectionOffsets(10, 10); | 1373 frame->setEditableSelectionOffsets(10, 10); |
1404 frame->deleteSurroundingText(5, 8); | 1374 frame->deleteSurroundingText(5, 8); |
1405 WebTextInputInfo info = activeInputMethodController->textInputInfo(); | 1375 WebTextInputInfo info = activeInputMethodController->textInputInfo(); |
(...skipping 22 matching lines...) Expand all Loading... | |
1428 EXPECT_EQ(0, info.selectionEnd); | 1398 EXPECT_EQ(0, info.selectionEnd); |
1429 | 1399 |
1430 frame->deleteSurroundingText(10, 10); | 1400 frame->deleteSurroundingText(10, 10); |
1431 info = activeInputMethodController->textInputInfo(); | 1401 info = activeInputMethodController->textInputInfo(); |
1432 EXPECT_EQ("", std::string(info.value.utf8().data())); | 1402 EXPECT_EQ("", std::string(info.value.utf8().data())); |
1433 EXPECT_EQ(0, info.selectionStart); | 1403 EXPECT_EQ(0, info.selectionStart); |
1434 EXPECT_EQ(0, info.selectionEnd); | 1404 EXPECT_EQ(0, info.selectionEnd); |
1435 } | 1405 } |
1436 | 1406 |
1437 TEST_P(WebViewTest, SetCompositionFromExistingText) { | 1407 TEST_P(WebViewTest, SetCompositionFromExistingText) { |
1438 URLTestHelpers::registerMockedURLFromBaseURL( | 1408 registerMockedHttpURLLoad("input_field_populated.html"); |
1439 WebString::fromUTF8(m_baseURL.c_str()), | |
1440 WebString::fromUTF8("input_field_populated.html")); | |
1441 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 1409 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
1442 m_baseURL + "input_field_populated.html"); | 1410 m_baseURL + "input_field_populated.html"); |
1443 webView->setInitialFocus(false); | 1411 webView->setInitialFocus(false); |
1444 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); | 1412 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); |
1445 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); | 1413 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); |
1446 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 1414 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
1447 WebInputMethodController* activeInputMethodController = | 1415 WebInputMethodController* activeInputMethodController = |
1448 frame->inputMethodController(); | 1416 frame->inputMethodController(); |
1449 frame->setEditableSelectionOffsets(4, 10); | 1417 frame->setEditableSelectionOffsets(4, 10); |
1450 frame->setCompositionFromExistingText(8, 12, underlines); | 1418 frame->setCompositionFromExistingText(8, 12, underlines); |
1451 WebTextInputInfo info = activeInputMethodController->textInputInfo(); | 1419 WebTextInputInfo info = activeInputMethodController->textInputInfo(); |
1452 EXPECT_EQ(4, info.selectionStart); | 1420 EXPECT_EQ(4, info.selectionStart); |
1453 EXPECT_EQ(10, info.selectionEnd); | 1421 EXPECT_EQ(10, info.selectionEnd); |
1454 EXPECT_EQ(8, info.compositionStart); | 1422 EXPECT_EQ(8, info.compositionStart); |
1455 EXPECT_EQ(12, info.compositionEnd); | 1423 EXPECT_EQ(12, info.compositionEnd); |
1456 WebVector<WebCompositionUnderline> emptyUnderlines; | 1424 WebVector<WebCompositionUnderline> emptyUnderlines; |
1457 frame->setCompositionFromExistingText(0, 0, emptyUnderlines); | 1425 frame->setCompositionFromExistingText(0, 0, emptyUnderlines); |
1458 info = activeInputMethodController->textInputInfo(); | 1426 info = activeInputMethodController->textInputInfo(); |
1459 EXPECT_EQ(4, info.selectionStart); | 1427 EXPECT_EQ(4, info.selectionStart); |
1460 EXPECT_EQ(10, info.selectionEnd); | 1428 EXPECT_EQ(10, info.selectionEnd); |
1461 EXPECT_EQ(-1, info.compositionStart); | 1429 EXPECT_EQ(-1, info.compositionStart); |
1462 EXPECT_EQ(-1, info.compositionEnd); | 1430 EXPECT_EQ(-1, info.compositionEnd); |
1463 } | 1431 } |
1464 | 1432 |
1465 TEST_P(WebViewTest, SetCompositionFromExistingTextInTextArea) { | 1433 TEST_P(WebViewTest, SetCompositionFromExistingTextInTextArea) { |
1466 URLTestHelpers::registerMockedURLFromBaseURL( | 1434 registerMockedHttpURLLoad("text_area_populated.html"); |
1467 WebString::fromUTF8(m_baseURL.c_str()), | |
1468 WebString::fromUTF8("text_area_populated.html")); | |
1469 WebViewImpl* webView = | 1435 WebViewImpl* webView = |
1470 m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_populated.html"); | 1436 m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_populated.html"); |
1471 webView->setInitialFocus(false); | 1437 webView->setInitialFocus(false); |
1472 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); | 1438 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); |
1473 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); | 1439 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); |
1474 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 1440 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
1475 WebInputMethodController* activeInputMethodController = | 1441 WebInputMethodController* activeInputMethodController = |
1476 frame->frameWidget()->getActiveWebInputMethodController(); | 1442 frame->frameWidget()->getActiveWebInputMethodController(); |
1477 frame->setEditableSelectionOffsets(27, 27); | 1443 frame->setEditableSelectionOffsets(27, 27); |
1478 std::string newLineText("\n"); | 1444 std::string newLineText("\n"); |
(...skipping 20 matching lines...) Expand all Loading... | |
1499 info = activeInputMethodController->textInputInfo(); | 1465 info = activeInputMethodController->textInputInfo(); |
1500 EXPECT_EQ("0123456789abcdefghijklmnopq\nrsyoloxyz", | 1466 EXPECT_EQ("0123456789abcdefghijklmnopq\nrsyoloxyz", |
1501 std::string(info.value.utf8().data())); | 1467 std::string(info.value.utf8().data())); |
1502 EXPECT_EQ(34, info.selectionStart); | 1468 EXPECT_EQ(34, info.selectionStart); |
1503 EXPECT_EQ(34, info.selectionEnd); | 1469 EXPECT_EQ(34, info.selectionEnd); |
1504 EXPECT_EQ(-1, info.compositionStart); | 1470 EXPECT_EQ(-1, info.compositionStart); |
1505 EXPECT_EQ(-1, info.compositionEnd); | 1471 EXPECT_EQ(-1, info.compositionEnd); |
1506 } | 1472 } |
1507 | 1473 |
1508 TEST_P(WebViewTest, SetCompositionFromExistingTextInRichText) { | 1474 TEST_P(WebViewTest, SetCompositionFromExistingTextInRichText) { |
1509 URLTestHelpers::registerMockedURLFromBaseURL( | 1475 registerMockedHttpURLLoad("content_editable_rich_text.html"); |
1510 WebString::fromUTF8(m_baseURL.c_str()), | |
1511 WebString::fromUTF8("content_editable_rich_text.html")); | |
1512 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 1476 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
1513 m_baseURL + "content_editable_rich_text.html"); | 1477 m_baseURL + "content_editable_rich_text.html"); |
1514 webView->setInitialFocus(false); | 1478 webView->setInitialFocus(false); |
1515 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); | 1479 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); |
1516 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); | 1480 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); |
1517 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 1481 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
1518 frame->setEditableSelectionOffsets(1, 1); | 1482 frame->setEditableSelectionOffsets(1, 1); |
1519 WebDocument document = webView->mainFrame()->document(); | 1483 WebDocument document = webView->mainFrame()->document(); |
1520 EXPECT_FALSE(document.getElementById("bold").isNull()); | 1484 EXPECT_FALSE(document.getElementById("bold").isNull()); |
1521 frame->setCompositionFromExistingText(0, 4, underlines); | 1485 frame->setCompositionFromExistingText(0, 4, underlines); |
1522 EXPECT_FALSE(document.getElementById("bold").isNull()); | 1486 EXPECT_FALSE(document.getElementById("bold").isNull()); |
1523 } | 1487 } |
1524 | 1488 |
1525 TEST_P(WebViewTest, SetEditableSelectionOffsetsKeepsComposition) { | 1489 TEST_P(WebViewTest, SetEditableSelectionOffsetsKeepsComposition) { |
1526 URLTestHelpers::registerMockedURLFromBaseURL( | 1490 registerMockedHttpURLLoad("input_field_populated.html"); |
1527 WebString::fromUTF8(m_baseURL.c_str()), | |
1528 WebString::fromUTF8("input_field_populated.html")); | |
1529 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 1491 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
1530 m_baseURL + "input_field_populated.html"); | 1492 m_baseURL + "input_field_populated.html"); |
1531 webView->setInitialFocus(false); | 1493 webView->setInitialFocus(false); |
1532 | 1494 |
1533 std::string compositionTextFirst("hello "); | 1495 std::string compositionTextFirst("hello "); |
1534 std::string compositionTextSecond("world"); | 1496 std::string compositionTextSecond("world"); |
1535 WebVector<WebCompositionUnderline> emptyUnderlines; | 1497 WebVector<WebCompositionUnderline> emptyUnderlines; |
1536 WebInputMethodController* activeInputMethodController = | 1498 WebInputMethodController* activeInputMethodController = |
1537 webView->mainFrameImpl() | 1499 webView->mainFrameImpl() |
1538 ->frameWidget() | 1500 ->frameWidget() |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1586 frame->setEditableSelectionOffsets(2, 2); | 1548 frame->setEditableSelectionOffsets(2, 2); |
1587 info = activeInputMethodController->textInputInfo(); | 1549 info = activeInputMethodController->textInputInfo(); |
1588 EXPECT_EQ("hello world", std::string(info.value.utf8().data())); | 1550 EXPECT_EQ("hello world", std::string(info.value.utf8().data())); |
1589 EXPECT_EQ(2, info.selectionStart); | 1551 EXPECT_EQ(2, info.selectionStart); |
1590 EXPECT_EQ(2, info.selectionEnd); | 1552 EXPECT_EQ(2, info.selectionEnd); |
1591 EXPECT_EQ(-1, info.compositionStart); | 1553 EXPECT_EQ(-1, info.compositionStart); |
1592 EXPECT_EQ(-1, info.compositionEnd); | 1554 EXPECT_EQ(-1, info.compositionEnd); |
1593 } | 1555 } |
1594 | 1556 |
1595 TEST_P(WebViewTest, IsSelectionAnchorFirst) { | 1557 TEST_P(WebViewTest, IsSelectionAnchorFirst) { |
1596 URLTestHelpers::registerMockedURLFromBaseURL( | 1558 registerMockedHttpURLLoad("input_field_populated.html"); |
1597 WebString::fromUTF8(m_baseURL.c_str()), | |
1598 WebString::fromUTF8("input_field_populated.html")); | |
1599 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 1559 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
1600 m_baseURL + "input_field_populated.html"); | 1560 m_baseURL + "input_field_populated.html"); |
1601 WebLocalFrame* frame = webView->mainFrameImpl(); | 1561 WebLocalFrame* frame = webView->mainFrameImpl(); |
1602 | 1562 |
1603 webView->setInitialFocus(false); | 1563 webView->setInitialFocus(false); |
1604 frame->setEditableSelectionOffsets(4, 10); | 1564 frame->setEditableSelectionOffsets(4, 10); |
1605 EXPECT_TRUE(webView->isSelectionAnchorFirst()); | 1565 EXPECT_TRUE(webView->isSelectionAnchorFirst()); |
1606 WebRect anchor; | 1566 WebRect anchor; |
1607 WebRect focus; | 1567 WebRect focus; |
1608 webView->selectionBounds(anchor, focus); | 1568 webView->selectionBounds(anchor, focus); |
1609 frame->selectRange(WebPoint(focus.x, focus.y), WebPoint(anchor.x, anchor.y)); | 1569 frame->selectRange(WebPoint(focus.x, focus.y), WebPoint(anchor.x, anchor.y)); |
1610 EXPECT_FALSE(webView->isSelectionAnchorFirst()); | 1570 EXPECT_FALSE(webView->isSelectionAnchorFirst()); |
1611 } | 1571 } |
1612 | 1572 |
1613 TEST_P(WebViewTest, ExitingDeviceEmulationResetsPageScale) { | 1573 TEST_P(WebViewTest, ExitingDeviceEmulationResetsPageScale) { |
1614 URLTestHelpers::registerMockedURLFromBaseURL( | 1574 registerMockedHttpURLLoad("200-by-300.html"); |
1615 WebString::fromUTF8(m_baseURL.c_str()), | |
1616 WebString::fromUTF8("200-by-300.html")); | |
1617 WebViewImpl* webViewImpl = | 1575 WebViewImpl* webViewImpl = |
1618 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); | 1576 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); |
1619 webViewImpl->resize(WebSize(200, 300)); | 1577 webViewImpl->resize(WebSize(200, 300)); |
1620 | 1578 |
1621 float pageScaleExpected = webViewImpl->pageScaleFactor(); | 1579 float pageScaleExpected = webViewImpl->pageScaleFactor(); |
1622 | 1580 |
1623 WebDeviceEmulationParams params; | 1581 WebDeviceEmulationParams params; |
1624 params.screenPosition = WebDeviceEmulationParams::Desktop; | 1582 params.screenPosition = WebDeviceEmulationParams::Desktop; |
1625 params.deviceScaleFactor = 0; | 1583 params.deviceScaleFactor = 0; |
1626 params.fitToView = false; | 1584 params.fitToView = false; |
1627 params.offset = WebFloatPoint(); | 1585 params.offset = WebFloatPoint(); |
1628 params.scale = 1; | 1586 params.scale = 1; |
1629 | 1587 |
1630 webViewImpl->enableDeviceEmulation(params); | 1588 webViewImpl->enableDeviceEmulation(params); |
1631 | 1589 |
1632 webViewImpl->setPageScaleFactor(2); | 1590 webViewImpl->setPageScaleFactor(2); |
1633 | 1591 |
1634 webViewImpl->disableDeviceEmulation(); | 1592 webViewImpl->disableDeviceEmulation(); |
1635 | 1593 |
1636 EXPECT_EQ(pageScaleExpected, webViewImpl->pageScaleFactor()); | 1594 EXPECT_EQ(pageScaleExpected, webViewImpl->pageScaleFactor()); |
1637 } | 1595 } |
1638 | 1596 |
1639 TEST_P(WebViewTest, HistoryResetScrollAndScaleState) { | 1597 TEST_P(WebViewTest, HistoryResetScrollAndScaleState) { |
1640 URLTestHelpers::registerMockedURLFromBaseURL( | 1598 registerMockedHttpURLLoad("200-by-300.html"); |
1641 WebString::fromUTF8(m_baseURL.c_str()), | |
1642 WebString::fromUTF8("200-by-300.html")); | |
1643 WebViewImpl* webViewImpl = | 1599 WebViewImpl* webViewImpl = |
1644 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); | 1600 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); |
1645 webViewImpl->resize(WebSize(100, 150)); | 1601 webViewImpl->resize(WebSize(100, 150)); |
1646 webViewImpl->updateAllLifecyclePhases(); | 1602 webViewImpl->updateAllLifecyclePhases(); |
1647 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().width); | 1603 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().width); |
1648 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().height); | 1604 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().height); |
1649 | 1605 |
1650 // Make the page scale and scroll with the given paremeters. | 1606 // Make the page scale and scroll with the given paremeters. |
1651 webViewImpl->setPageScaleFactor(2.0f); | 1607 webViewImpl->setPageScaleFactor(2.0f); |
1652 webViewImpl->mainFrame()->setScrollOffset(WebSize(94, 111)); | 1608 webViewImpl->mainFrame()->setScrollOffset(WebSize(94, 111)); |
(...skipping 14 matching lines...) Expand all Loading... | |
1667 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().width); | 1623 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().width); |
1668 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().height); | 1624 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().height); |
1669 EXPECT_EQ(1.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor()); | 1625 EXPECT_EQ(1.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor()); |
1670 EXPECT_EQ(0, | 1626 EXPECT_EQ(0, |
1671 mainFrameLocal->loader().currentItem()->getScrollOffset().width()); | 1627 mainFrameLocal->loader().currentItem()->getScrollOffset().width()); |
1672 EXPECT_EQ(0, | 1628 EXPECT_EQ(0, |
1673 mainFrameLocal->loader().currentItem()->getScrollOffset().height()); | 1629 mainFrameLocal->loader().currentItem()->getScrollOffset().height()); |
1674 } | 1630 } |
1675 | 1631 |
1676 TEST_P(WebViewTest, BackForwardRestoreScroll) { | 1632 TEST_P(WebViewTest, BackForwardRestoreScroll) { |
1677 URLTestHelpers::registerMockedURLFromBaseURL( | 1633 registerMockedHttpURLLoad("back_forward_restore_scroll.html"); |
1678 WebString::fromUTF8(m_baseURL.c_str()), | |
1679 WebString::fromUTF8("back_forward_restore_scroll.html")); | |
1680 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad( | 1634 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad( |
1681 m_baseURL + "back_forward_restore_scroll.html"); | 1635 m_baseURL + "back_forward_restore_scroll.html"); |
1682 webViewImpl->resize(WebSize(640, 480)); | 1636 webViewImpl->resize(WebSize(640, 480)); |
1683 webViewImpl->updateAllLifecyclePhases(); | 1637 webViewImpl->updateAllLifecyclePhases(); |
1684 | 1638 |
1685 // Emulate a user scroll | 1639 // Emulate a user scroll |
1686 webViewImpl->mainFrame()->setScrollOffset(WebSize(0, 900)); | 1640 webViewImpl->mainFrame()->setScrollOffset(WebSize(0, 900)); |
1687 LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFrame()); | 1641 LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFrame()); |
1688 Persistent<HistoryItem> item1 = mainFrameLocal->loader().currentItem(); | 1642 Persistent<HistoryItem> item1 = mainFrameLocal->loader().currentItem(); |
1689 | 1643 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1728 nullptr, FrameLoader::resourceRequestFromHistoryItem( | 1682 nullptr, FrameLoader::resourceRequestFromHistoryItem( |
1729 item3.get(), WebCachePolicy::UseProtocolCachePolicy)), | 1683 item3.get(), WebCachePolicy::UseProtocolCachePolicy)), |
1730 FrameLoadTypeBackForward, item3.get(), HistorySameDocumentLoad); | 1684 FrameLoadTypeBackForward, item3.get(), HistorySameDocumentLoad); |
1731 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().width); | 1685 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().width); |
1732 EXPECT_GT(webViewImpl->mainFrame()->getScrollOffset().height, 2000); | 1686 EXPECT_GT(webViewImpl->mainFrame()->getScrollOffset().height, 2000); |
1733 } | 1687 } |
1734 | 1688 |
1735 // Tests that we restore scroll and scale *after* the fullscreen styles are | 1689 // Tests that we restore scroll and scale *after* the fullscreen styles are |
1736 // removed and the page is laid out. http://crbug.com/625683. | 1690 // removed and the page is laid out. http://crbug.com/625683. |
1737 TEST_P(WebViewTest, FullscreenResetScrollAndScaleFullscreenStyles) { | 1691 TEST_P(WebViewTest, FullscreenResetScrollAndScaleFullscreenStyles) { |
1738 URLTestHelpers::registerMockedURLFromBaseURL( | 1692 registerMockedHttpURLLoad("fullscreen_style.html"); |
1739 WebString::fromUTF8(m_baseURL.c_str()), | |
1740 WebString::fromUTF8("fullscreen_style.html")); | |
1741 WebViewImpl* webViewImpl = | 1693 WebViewImpl* webViewImpl = |
1742 m_webViewHelper.initializeAndLoad(m_baseURL + "fullscreen_style.html"); | 1694 m_webViewHelper.initializeAndLoad(m_baseURL + "fullscreen_style.html"); |
1743 webViewImpl->resize(WebSize(800, 600)); | 1695 webViewImpl->resize(WebSize(800, 600)); |
1744 webViewImpl->updateAllLifecyclePhases(); | 1696 webViewImpl->updateAllLifecyclePhases(); |
1745 | 1697 |
1746 // Scroll the page down. | 1698 // Scroll the page down. |
1747 webViewImpl->mainFrame()->setScrollOffset(WebSize(0, 2000)); | 1699 webViewImpl->mainFrame()->setScrollOffset(WebSize(0, 2000)); |
1748 ASSERT_EQ(2000, webViewImpl->mainFrame()->getScrollOffset().height); | 1700 ASSERT_EQ(2000, webViewImpl->mainFrame()->getScrollOffset().height); |
1749 | 1701 |
1750 // Enter fullscreen. | 1702 // Enter fullscreen. |
(...skipping 21 matching lines...) Expand all Loading... | |
1772 EXPECT_TRUE(webViewImpl->mainFrameImpl()->frameView()->needsLayout()); | 1724 EXPECT_TRUE(webViewImpl->mainFrameImpl()->frameView()->needsLayout()); |
1773 webViewImpl->beginFrame(WTF::monotonicallyIncreasingTime()); | 1725 webViewImpl->beginFrame(WTF::monotonicallyIncreasingTime()); |
1774 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().height); | 1726 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().height); |
1775 webViewImpl->updateAllLifecyclePhases(); | 1727 webViewImpl->updateAllLifecyclePhases(); |
1776 EXPECT_EQ(2000, webViewImpl->mainFrame()->getScrollOffset().height); | 1728 EXPECT_EQ(2000, webViewImpl->mainFrame()->getScrollOffset().height); |
1777 } | 1729 } |
1778 | 1730 |
1779 // Tests that exiting and immediately reentering fullscreen doesn't cause the | 1731 // Tests that exiting and immediately reentering fullscreen doesn't cause the |
1780 // scroll and scale restoration to occur when we enter fullscreen again. | 1732 // scroll and scale restoration to occur when we enter fullscreen again. |
1781 TEST_P(WebViewTest, FullscreenResetScrollAndScaleExitAndReenter) { | 1733 TEST_P(WebViewTest, FullscreenResetScrollAndScaleExitAndReenter) { |
1782 URLTestHelpers::registerMockedURLFromBaseURL( | 1734 registerMockedHttpURLLoad("fullscreen_style.html"); |
1783 WebString::fromUTF8(m_baseURL.c_str()), | |
1784 WebString::fromUTF8("fullscreen_style.html")); | |
1785 WebViewImpl* webViewImpl = | 1735 WebViewImpl* webViewImpl = |
1786 m_webViewHelper.initializeAndLoad(m_baseURL + "fullscreen_style.html"); | 1736 m_webViewHelper.initializeAndLoad(m_baseURL + "fullscreen_style.html"); |
1787 webViewImpl->resize(WebSize(800, 600)); | 1737 webViewImpl->resize(WebSize(800, 600)); |
1788 webViewImpl->updateAllLifecyclePhases(); | 1738 webViewImpl->updateAllLifecyclePhases(); |
1789 | 1739 |
1790 // Scroll the page down. | 1740 // Scroll the page down. |
1791 webViewImpl->mainFrame()->setScrollOffset(WebSize(0, 2000)); | 1741 webViewImpl->mainFrame()->setScrollOffset(WebSize(0, 2000)); |
1792 ASSERT_EQ(2000, webViewImpl->mainFrame()->getScrollOffset().height); | 1742 ASSERT_EQ(2000, webViewImpl->mainFrame()->getScrollOffset().height); |
1793 | 1743 |
1794 // Enter fullscreen. | 1744 // Enter fullscreen. |
(...skipping 30 matching lines...) Expand all Loading... | |
1825 | 1775 |
1826 // When we exit now, we should restore the original scroll value. | 1776 // When we exit now, we should restore the original scroll value. |
1827 webViewImpl->didExitFullscreen(); | 1777 webViewImpl->didExitFullscreen(); |
1828 webViewImpl->beginFrame(WTF::monotonicallyIncreasingTime()); | 1778 webViewImpl->beginFrame(WTF::monotonicallyIncreasingTime()); |
1829 webViewImpl->updateAllLifecyclePhases(); | 1779 webViewImpl->updateAllLifecyclePhases(); |
1830 | 1780 |
1831 EXPECT_EQ(2000, webViewImpl->mainFrame()->getScrollOffset().height); | 1781 EXPECT_EQ(2000, webViewImpl->mainFrame()->getScrollOffset().height); |
1832 } | 1782 } |
1833 | 1783 |
1834 TEST_P(WebViewTest, EnterFullscreenResetScrollAndScaleState) { | 1784 TEST_P(WebViewTest, EnterFullscreenResetScrollAndScaleState) { |
1835 URLTestHelpers::registerMockedURLFromBaseURL( | 1785 registerMockedHttpURLLoad("200-by-300.html"); |
1836 WebString::fromUTF8(m_baseURL.c_str()), | |
1837 WebString::fromUTF8("200-by-300.html")); | |
1838 WebViewImpl* webViewImpl = | 1786 WebViewImpl* webViewImpl = |
1839 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); | 1787 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); |
1840 webViewImpl->resize(WebSize(100, 150)); | 1788 webViewImpl->resize(WebSize(100, 150)); |
1841 webViewImpl->updateAllLifecyclePhases(); | 1789 webViewImpl->updateAllLifecyclePhases(); |
1842 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().width); | 1790 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().width); |
1843 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().height); | 1791 EXPECT_EQ(0, webViewImpl->mainFrame()->getScrollOffset().height); |
1844 | 1792 |
1845 // Make the page scale and scroll with the given paremeters. | 1793 // Make the page scale and scroll with the given paremeters. |
1846 webViewImpl->setPageScaleFactor(2.0f); | 1794 webViewImpl->setPageScaleFactor(2.0f); |
1847 webViewImpl->mainFrame()->setScrollOffset(WebSize(94, 111)); | 1795 webViewImpl->mainFrame()->setScrollOffset(WebSize(94, 111)); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1888 void printPage(WebLocalFrame*) override { m_printCalled = true; } | 1836 void printPage(WebLocalFrame*) override { m_printCalled = true; } |
1889 | 1837 |
1890 bool printCalled() const { return m_printCalled; } | 1838 bool printCalled() const { return m_printCalled; } |
1891 | 1839 |
1892 private: | 1840 private: |
1893 bool m_printCalled; | 1841 bool m_printCalled; |
1894 }; | 1842 }; |
1895 | 1843 |
1896 TEST_P(WebViewTest, PrintWithXHRInFlight) { | 1844 TEST_P(WebViewTest, PrintWithXHRInFlight) { |
1897 PrintWebViewClient client; | 1845 PrintWebViewClient client; |
1898 URLTestHelpers::registerMockedURLFromBaseURL( | 1846 registerMockedHttpURLLoad("print_with_xhr_inflight.html"); |
1899 WebString::fromUTF8(m_baseURL.c_str()), | |
1900 WebString::fromUTF8("print_with_xhr_inflight.html")); | |
1901 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad( | 1847 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad( |
1902 m_baseURL + "print_with_xhr_inflight.html", true, 0, &client); | 1848 m_baseURL + "print_with_xhr_inflight.html", true, 0, &client); |
1903 | 1849 |
1904 ASSERT_TRUE(toLocalFrame(webViewImpl->page()->mainFrame()) | 1850 ASSERT_TRUE(toLocalFrame(webViewImpl->page()->mainFrame()) |
1905 ->document() | 1851 ->document() |
1906 ->loadEventFinished()); | 1852 ->loadEventFinished()); |
1907 EXPECT_TRUE(client.printCalled()); | 1853 EXPECT_TRUE(client.printCalled()); |
1908 m_webViewHelper.reset(); | 1854 m_webViewHelper.reset(); |
1909 } | 1855 } |
1910 | 1856 |
(...skipping 10 matching lines...) Expand all Loading... | |
1921 const WebPoint clientPoint(0, 0); | 1867 const WebPoint clientPoint(0, 0); |
1922 const WebPoint screenPoint(0, 0); | 1868 const WebPoint screenPoint(0, 0); |
1923 WebFrameWidgetBase* widget = webView->mainFrameImpl()->frameWidget(); | 1869 WebFrameWidgetBase* widget = webView->mainFrameImpl()->frameWidget(); |
1924 widget->dragTargetDragEnter(dragData, clientPoint, screenPoint, | 1870 widget->dragTargetDragEnter(dragData, clientPoint, screenPoint, |
1925 WebDragOperationCopy, 0); | 1871 WebDragOperationCopy, 0); |
1926 widget->dragTargetDrop(dragData, clientPoint, screenPoint, 0); | 1872 widget->dragTargetDrop(dragData, clientPoint, screenPoint, 0); |
1927 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webView->mainFrame()); | 1873 FrameTestHelpers::pumpPendingRequestsForFrameToLoad(webView->mainFrame()); |
1928 } | 1874 } |
1929 | 1875 |
1930 TEST_P(WebViewTest, DragDropURL) { | 1876 TEST_P(WebViewTest, DragDropURL) { |
1931 URLTestHelpers::registerMockedURLFromBaseURL( | 1877 registerMockedHttpURLLoad("foo.html"); |
1932 WebString::fromUTF8(m_baseURL.c_str()), "foo.html"); | 1878 registerMockedHttpURLLoad("bar.html"); |
1933 URLTestHelpers::registerMockedURLFromBaseURL( | |
1934 WebString::fromUTF8(m_baseURL.c_str()), "bar.html"); | |
1935 | 1879 |
1936 const std::string fooUrl = m_baseURL + "foo.html"; | 1880 const std::string fooUrl = m_baseURL + "foo.html"; |
1937 const std::string barUrl = m_baseURL + "bar.html"; | 1881 const std::string barUrl = m_baseURL + "bar.html"; |
1938 | 1882 |
1939 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(fooUrl); | 1883 WebViewImpl* webView = m_webViewHelper.initializeAndLoad(fooUrl); |
1940 | 1884 |
1941 ASSERT_TRUE(webView); | 1885 ASSERT_TRUE(webView); |
1942 | 1886 |
1943 // Drag and drop barUrl and verify that we've navigated to it. | 1887 // Drag and drop barUrl and verify that we've navigated to it. |
1944 DragAndDropURL(webView, barUrl); | 1888 DragAndDropURL(webView, barUrl); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2029 | 1973 |
2030 bool WebViewTest::tapElementById(WebInputEvent::Type type, | 1974 bool WebViewTest::tapElementById(WebInputEvent::Type type, |
2031 const WebString& id) { | 1975 const WebString& id) { |
2032 DCHECK(m_webViewHelper.webView()); | 1976 DCHECK(m_webViewHelper.webView()); |
2033 Element* element = static_cast<Element*>( | 1977 Element* element = static_cast<Element*>( |
2034 m_webViewHelper.webView()->mainFrame()->document().getElementById(id)); | 1978 m_webViewHelper.webView()->mainFrame()->document().getElementById(id)); |
2035 return tapElement(type, element); | 1979 return tapElement(type, element); |
2036 } | 1980 } |
2037 | 1981 |
2038 TEST_P(WebViewTest, DetectContentAroundPosition) { | 1982 TEST_P(WebViewTest, DetectContentAroundPosition) { |
2039 URLTestHelpers::registerMockedURLFromBaseURL( | 1983 registerMockedHttpURLLoad("content_listeners.html"); |
2040 WebString::fromUTF8(m_baseURL.c_str()), | |
2041 WebString::fromUTF8("content_listeners.html")); | |
2042 | 1984 |
2043 ContentDetectorClient client; | 1985 ContentDetectorClient client; |
2044 WebView* webView = m_webViewHelper.initializeAndLoad( | 1986 WebView* webView = m_webViewHelper.initializeAndLoad( |
2045 m_baseURL + "content_listeners.html", true, 0, &client); | 1987 m_baseURL + "content_listeners.html", true, 0, &client); |
2046 webView->resize(WebSize(500, 300)); | 1988 webView->resize(WebSize(500, 300)); |
2047 webView->updateAllLifecyclePhases(); | 1989 webView->updateAllLifecyclePhases(); |
2048 runPendingTasks(); | 1990 runPendingTasks(); |
2049 | 1991 |
2050 WebString clickListener = WebString::fromUTF8("clickListener"); | 1992 WebString clickListener = WebString::fromUTF8("clickListener"); |
2051 WebString touchstartListener = WebString::fromUTF8("touchstartListener"); | 1993 WebString touchstartListener = WebString::fromUTF8("touchstartListener"); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2085 event.sourceDevice = WebGestureDeviceTouchscreen; | 2027 event.sourceDevice = WebGestureDeviceTouchscreen; |
2086 webView->handleInputEvent(WebCoalescedInputEvent(event)); | 2028 webView->handleInputEvent(WebCoalescedInputEvent(event)); |
2087 runPendingTasks(); | 2029 runPendingTasks(); |
2088 EXPECT_TRUE(client.pendingIntentsCancelled()); | 2030 EXPECT_TRUE(client.pendingIntentsCancelled()); |
2089 | 2031 |
2090 // Explicitly reset to break dependency on locally scoped client. | 2032 // Explicitly reset to break dependency on locally scoped client. |
2091 m_webViewHelper.reset(); | 2033 m_webViewHelper.reset(); |
2092 } | 2034 } |
2093 | 2035 |
2094 TEST_P(WebViewTest, ContentDetectionInIframe) { | 2036 TEST_P(WebViewTest, ContentDetectionInIframe) { |
2095 URLTestHelpers::registerMockedURLFromBaseURL( | 2037 registerMockedHttpURLLoad("content_listeners_iframe.html"); |
2096 WebString::fromUTF8(m_baseURL.c_str()), | |
2097 WebString::fromUTF8("content_listeners_iframe.html")); | |
2098 | 2038 |
2099 ContentDetectorClient client; | 2039 ContentDetectorClient client; |
2100 WebView* webView = m_webViewHelper.initializeAndLoad( | 2040 WebView* webView = m_webViewHelper.initializeAndLoad( |
2101 m_baseURL + "content_listeners_iframe.html", true, 0, &client); | 2041 m_baseURL + "content_listeners_iframe.html", true, 0, &client); |
2102 webView->resize(WebSize(500, 300)); | 2042 webView->resize(WebSize(500, 300)); |
2103 webView->updateAllLifecyclePhases(); | 2043 webView->updateAllLifecyclePhases(); |
2104 runPendingTasks(); | 2044 runPendingTasks(); |
2105 | 2045 |
2106 WebString noListener = WebString::fromUTF8("noListener"); | 2046 WebString noListener = WebString::fromUTF8("noListener"); |
2107 WebString frameName = WebString::fromUTF8("innerFrame"); | 2047 WebString frameName = WebString::fromUTF8("innerFrame"); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2163 WebInputEvent::TimeStampForTesting); | 2103 WebInputEvent::TimeStampForTesting); |
2164 event.sourceDevice = WebGestureDeviceTouchscreen; | 2104 event.sourceDevice = WebGestureDeviceTouchscreen; |
2165 event.x = 3; | 2105 event.x = 3; |
2166 event.y = 8; | 2106 event.y = 8; |
2167 EXPECT_EQ(WebInputEventResult::NotHandled, | 2107 EXPECT_EQ(WebInputEventResult::NotHandled, |
2168 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2108 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2169 webView->close(); | 2109 webView->close(); |
2170 } | 2110 } |
2171 | 2111 |
2172 TEST_P(WebViewTest, LongPressEmptyDiv) { | 2112 TEST_P(WebViewTest, LongPressEmptyDiv) { |
2173 URLTestHelpers::registerMockedURLFromBaseURL( | 2113 registerMockedHttpURLLoad("long_press_empty_div.html"); |
2174 WebString::fromUTF8(m_baseURL.c_str()), | |
2175 WebString::fromUTF8("long_press_empty_div.html")); | |
2176 | 2114 |
2177 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2115 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2178 m_baseURL + "long_press_empty_div.html", true); | 2116 m_baseURL + "long_press_empty_div.html", true); |
2179 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2117 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2180 webView->resize(WebSize(500, 300)); | 2118 webView->resize(WebSize(500, 300)); |
2181 webView->updateAllLifecyclePhases(); | 2119 webView->updateAllLifecyclePhases(); |
2182 runPendingTasks(); | 2120 runPendingTasks(); |
2183 | 2121 |
2184 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2122 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2185 WebInputEvent::NoModifiers, | 2123 WebInputEvent::NoModifiers, |
2186 WebInputEvent::TimeStampForTesting); | 2124 WebInputEvent::TimeStampForTesting); |
2187 event.sourceDevice = WebGestureDeviceTouchscreen; | 2125 event.sourceDevice = WebGestureDeviceTouchscreen; |
2188 event.x = 250; | 2126 event.x = 250; |
2189 event.y = 150; | 2127 event.y = 150; |
2190 | 2128 |
2191 EXPECT_EQ(WebInputEventResult::NotHandled, | 2129 EXPECT_EQ(WebInputEventResult::NotHandled, |
2192 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2130 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2193 } | 2131 } |
2194 | 2132 |
2195 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { | 2133 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { |
2196 URLTestHelpers::registerMockedURLFromBaseURL( | 2134 registerMockedHttpURLLoad("long_press_empty_div.html"); |
2197 WebString::fromUTF8(m_baseURL.c_str()), | |
2198 WebString::fromUTF8("long_press_empty_div.html")); | |
2199 | 2135 |
2200 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2136 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2201 m_baseURL + "long_press_empty_div.html", true); | 2137 m_baseURL + "long_press_empty_div.html", true); |
2202 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2138 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
2203 webView->resize(WebSize(500, 300)); | 2139 webView->resize(WebSize(500, 300)); |
2204 webView->updateAllLifecyclePhases(); | 2140 webView->updateAllLifecyclePhases(); |
2205 runPendingTasks(); | 2141 runPendingTasks(); |
2206 | 2142 |
2207 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2143 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2208 WebInputEvent::NoModifiers, | 2144 WebInputEvent::NoModifiers, |
2209 WebInputEvent::TimeStampForTesting); | 2145 WebInputEvent::TimeStampForTesting); |
2210 event.sourceDevice = WebGestureDeviceTouchscreen; | 2146 event.sourceDevice = WebGestureDeviceTouchscreen; |
2211 event.x = 250; | 2147 event.x = 250; |
2212 event.y = 150; | 2148 event.y = 150; |
2213 | 2149 |
2214 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2150 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2215 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2151 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2216 } | 2152 } |
2217 | 2153 |
2218 TEST_P(WebViewTest, LongPressObject) { | 2154 TEST_P(WebViewTest, LongPressObject) { |
2219 URLTestHelpers::registerMockedURLFromBaseURL( | 2155 registerMockedHttpURLLoad("long_press_object.html"); |
2220 WebString::fromUTF8(m_baseURL.c_str()), | |
2221 WebString::fromUTF8("long_press_object.html")); | |
2222 | 2156 |
2223 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2157 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2224 m_baseURL + "long_press_object.html", true); | 2158 m_baseURL + "long_press_object.html", true); |
2225 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2159 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
2226 webView->resize(WebSize(500, 300)); | 2160 webView->resize(WebSize(500, 300)); |
2227 webView->updateAllLifecyclePhases(); | 2161 webView->updateAllLifecyclePhases(); |
2228 runPendingTasks(); | 2162 runPendingTasks(); |
2229 | 2163 |
2230 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2164 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2231 WebInputEvent::NoModifiers, | 2165 WebInputEvent::NoModifiers, |
2232 WebInputEvent::TimeStampForTesting); | 2166 WebInputEvent::TimeStampForTesting); |
2233 event.sourceDevice = WebGestureDeviceTouchscreen; | 2167 event.sourceDevice = WebGestureDeviceTouchscreen; |
2234 event.x = 10; | 2168 event.x = 10; |
2235 event.y = 10; | 2169 event.y = 10; |
2236 | 2170 |
2237 EXPECT_NE(WebInputEventResult::HandledSystem, | 2171 EXPECT_NE(WebInputEventResult::HandledSystem, |
2238 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2172 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2239 | 2173 |
2240 HTMLElement* element = | 2174 HTMLElement* element = |
2241 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); | 2175 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); |
2242 EXPECT_FALSE(element->canStartSelection()); | 2176 EXPECT_FALSE(element->canStartSelection()); |
2243 } | 2177 } |
2244 | 2178 |
2245 TEST_P(WebViewTest, LongPressObjectFallback) { | 2179 TEST_P(WebViewTest, LongPressObjectFallback) { |
2246 URLTestHelpers::registerMockedURLFromBaseURL( | 2180 registerMockedHttpURLLoad("long_press_object_fallback.html"); |
2247 WebString::fromUTF8(m_baseURL.c_str()), | |
2248 WebString::fromUTF8("long_press_object_fallback.html")); | |
2249 | 2181 |
2250 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2182 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2251 m_baseURL + "long_press_object_fallback.html", true); | 2183 m_baseURL + "long_press_object_fallback.html", true); |
2252 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); | 2184 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(true); |
2253 webView->resize(WebSize(500, 300)); | 2185 webView->resize(WebSize(500, 300)); |
2254 webView->updateAllLifecyclePhases(); | 2186 webView->updateAllLifecyclePhases(); |
2255 runPendingTasks(); | 2187 runPendingTasks(); |
2256 | 2188 |
2257 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2189 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2258 WebInputEvent::NoModifiers, | 2190 WebInputEvent::NoModifiers, |
2259 WebInputEvent::TimeStampForTesting); | 2191 WebInputEvent::TimeStampForTesting); |
2260 event.sourceDevice = WebGestureDeviceTouchscreen; | 2192 event.sourceDevice = WebGestureDeviceTouchscreen; |
2261 event.x = 10; | 2193 event.x = 10; |
2262 event.y = 10; | 2194 event.y = 10; |
2263 | 2195 |
2264 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2196 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2265 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2197 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2266 | 2198 |
2267 HTMLElement* element = | 2199 HTMLElement* element = |
2268 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); | 2200 toHTMLElement(webView->mainFrame()->document().getElementById("obj")); |
2269 EXPECT_TRUE(element->canStartSelection()); | 2201 EXPECT_TRUE(element->canStartSelection()); |
2270 } | 2202 } |
2271 | 2203 |
2272 TEST_P(WebViewTest, LongPressImage) { | 2204 TEST_P(WebViewTest, LongPressImage) { |
2273 URLTestHelpers::registerMockedURLFromBaseURL( | 2205 registerMockedHttpURLLoad("long_press_image.html"); |
2274 WebString::fromUTF8(m_baseURL.c_str()), | |
2275 WebString::fromUTF8("long_press_image.html")); | |
2276 | 2206 |
2277 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2207 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2278 m_baseURL + "long_press_image.html", true); | 2208 m_baseURL + "long_press_image.html", true); |
2279 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2209 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2280 webView->resize(WebSize(500, 300)); | 2210 webView->resize(WebSize(500, 300)); |
2281 webView->updateAllLifecyclePhases(); | 2211 webView->updateAllLifecyclePhases(); |
2282 runPendingTasks(); | 2212 runPendingTasks(); |
2283 | 2213 |
2284 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2214 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2285 WebInputEvent::NoModifiers, | 2215 WebInputEvent::NoModifiers, |
2286 WebInputEvent::TimeStampForTesting); | 2216 WebInputEvent::TimeStampForTesting); |
2287 event.sourceDevice = WebGestureDeviceTouchscreen; | 2217 event.sourceDevice = WebGestureDeviceTouchscreen; |
2288 event.x = 10; | 2218 event.x = 10; |
2289 event.y = 10; | 2219 event.y = 10; |
2290 | 2220 |
2291 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2221 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2292 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2222 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2293 } | 2223 } |
2294 | 2224 |
2295 TEST_P(WebViewTest, LongPressVideo) { | 2225 TEST_P(WebViewTest, LongPressVideo) { |
2296 URLTestHelpers::registerMockedURLFromBaseURL( | 2226 registerMockedHttpURLLoad("long_press_video.html"); |
2297 WebString::fromUTF8(m_baseURL.c_str()), | |
2298 WebString::fromUTF8("long_press_video.html")); | |
2299 | 2227 |
2300 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2228 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2301 m_baseURL + "long_press_video.html", true); | 2229 m_baseURL + "long_press_video.html", true); |
2302 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2230 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2303 webView->resize(WebSize(500, 300)); | 2231 webView->resize(WebSize(500, 300)); |
2304 webView->updateAllLifecyclePhases(); | 2232 webView->updateAllLifecyclePhases(); |
2305 runPendingTasks(); | 2233 runPendingTasks(); |
2306 | 2234 |
2307 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2235 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2308 WebInputEvent::NoModifiers, | 2236 WebInputEvent::NoModifiers, |
2309 WebInputEvent::TimeStampForTesting); | 2237 WebInputEvent::TimeStampForTesting); |
2310 event.sourceDevice = WebGestureDeviceTouchscreen; | 2238 event.sourceDevice = WebGestureDeviceTouchscreen; |
2311 event.x = 10; | 2239 event.x = 10; |
2312 event.y = 10; | 2240 event.y = 10; |
2313 | 2241 |
2314 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2242 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2315 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2243 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2316 } | 2244 } |
2317 | 2245 |
2318 TEST_P(WebViewTest, LongPressLink) { | 2246 TEST_P(WebViewTest, LongPressLink) { |
2319 URLTestHelpers::registerMockedURLFromBaseURL( | 2247 registerMockedHttpURLLoad("long_press_link.html"); |
2320 WebString::fromUTF8(m_baseURL.c_str()), | |
2321 WebString::fromUTF8("long_press_link.html")); | |
2322 | 2248 |
2323 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2249 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2324 m_baseURL + "long_press_link.html", true); | 2250 m_baseURL + "long_press_link.html", true); |
2325 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2251 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2326 webView->resize(WebSize(500, 300)); | 2252 webView->resize(WebSize(500, 300)); |
2327 webView->updateAllLifecyclePhases(); | 2253 webView->updateAllLifecyclePhases(); |
2328 runPendingTasks(); | 2254 runPendingTasks(); |
2329 | 2255 |
2330 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2256 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2331 WebInputEvent::NoModifiers, | 2257 WebInputEvent::NoModifiers, |
2332 WebInputEvent::TimeStampForTesting); | 2258 WebInputEvent::TimeStampForTesting); |
2333 event.sourceDevice = WebGestureDeviceTouchscreen; | 2259 event.sourceDevice = WebGestureDeviceTouchscreen; |
2334 event.x = 500; | 2260 event.x = 500; |
2335 event.y = 300; | 2261 event.y = 300; |
2336 | 2262 |
2337 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2263 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2338 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2264 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2339 } | 2265 } |
2340 | 2266 |
2341 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { | 2267 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { |
2342 URLTestHelpers::registerMockedURLFromBaseURL( | 2268 registerMockedHttpURLLoad("long_press_links_and_images.html"); |
2343 WebString::fromUTF8(m_baseURL.c_str()), | |
2344 WebString::fromUTF8("long_press_links_and_images.html")); | |
2345 | 2269 |
2346 URLTestHelpers::registerMockedURLLoad(toKURL("http://www.test.com/foo.png"), | 2270 URLTestHelpers::registerMockedURLLoad( |
2347 "white-1x1.png"); | 2271 toKURL("http://www.test.com/foo.png"), |
2272 testing::webTestDataPath("white-1x1.png")); | |
2348 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2273 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2349 m_baseURL + "long_press_links_and_images.html", true); | 2274 m_baseURL + "long_press_links_and_images.html", true); |
2350 | 2275 |
2351 webView->settingsImpl()->setTouchDragDropEnabled(true); | 2276 webView->settingsImpl()->setTouchDragDropEnabled(true); |
2352 webView->resize(WebSize(500, 300)); | 2277 webView->resize(WebSize(500, 300)); |
2353 webView->updateAllLifecyclePhases(); | 2278 webView->updateAllLifecyclePhases(); |
2354 runPendingTasks(); | 2279 runPendingTasks(); |
2355 | 2280 |
2356 WebString anchorTagId = WebString::fromUTF8("anchorTag"); | 2281 WebString anchorTagId = WebString::fromUTF8("anchorTag"); |
2357 WebString imageTagId = WebString::fromUTF8("imageTag"); | 2282 WebString imageTagId = WebString::fromUTF8("imageTag"); |
2358 | 2283 |
2359 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, anchorTagId)); | 2284 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, anchorTagId)); |
2360 EXPECT_STREQ("anchor contextmenu", | 2285 EXPECT_STREQ("anchor contextmenu", |
2361 webView->mainFrame()->document().title().utf8().data()); | 2286 webView->mainFrame()->document().title().utf8().data()); |
2362 | 2287 |
2363 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, imageTagId)); | 2288 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, imageTagId)); |
2364 EXPECT_STREQ("image contextmenu", | 2289 EXPECT_STREQ("image contextmenu", |
2365 webView->mainFrame()->document().title().utf8().data()); | 2290 webView->mainFrame()->document().title().utf8().data()); |
2366 } | 2291 } |
2367 | 2292 |
2368 TEST_P(WebViewTest, LongPressEmptyEditableSelection) { | 2293 TEST_P(WebViewTest, LongPressEmptyEditableSelection) { |
2369 URLTestHelpers::registerMockedURLFromBaseURL( | 2294 registerMockedHttpURLLoad("long_press_empty_editable_selection.html"); |
2370 WebString::fromUTF8(m_baseURL.c_str()), | |
2371 WebString::fromUTF8("long_press_empty_editable_selection.html")); | |
2372 | 2295 |
2373 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2296 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2374 m_baseURL + "long_press_empty_editable_selection.html", true); | 2297 m_baseURL + "long_press_empty_editable_selection.html", true); |
2375 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); | 2298 webView->settingsImpl()->setAlwaysShowContextMenuOnTouch(false); |
2376 webView->resize(WebSize(500, 300)); | 2299 webView->resize(WebSize(500, 300)); |
2377 webView->updateAllLifecyclePhases(); | 2300 webView->updateAllLifecyclePhases(); |
2378 runPendingTasks(); | 2301 runPendingTasks(); |
2379 | 2302 |
2380 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2303 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2381 WebInputEvent::NoModifiers, | 2304 WebInputEvent::NoModifiers, |
2382 WebInputEvent::TimeStampForTesting); | 2305 WebInputEvent::TimeStampForTesting); |
2383 event.sourceDevice = WebGestureDeviceTouchscreen; | 2306 event.sourceDevice = WebGestureDeviceTouchscreen; |
2384 event.x = 10; | 2307 event.x = 10; |
2385 event.y = 10; | 2308 event.y = 10; |
2386 | 2309 |
2387 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2310 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2388 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2311 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2389 } | 2312 } |
2390 | 2313 |
2391 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { | 2314 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { |
2392 URLTestHelpers::registerMockedURLFromBaseURL( | 2315 registerMockedHttpURLLoad("long_press_image.html"); |
2393 WebString::fromUTF8(m_baseURL.c_str()), | |
2394 WebString::fromUTF8("long_press_image.html")); | |
2395 | 2316 |
2396 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2317 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2397 m_baseURL + "long_press_image.html", true); | 2318 m_baseURL + "long_press_image.html", true); |
2398 webView->resize(WebSize(500, 500)); | 2319 webView->resize(WebSize(500, 500)); |
2399 webView->updateAllLifecyclePhases(); | 2320 webView->updateAllLifecyclePhases(); |
2400 runPendingTasks(); | 2321 runPendingTasks(); |
2401 | 2322 |
2402 WebGestureEvent event(WebInputEvent::GestureLongPress, | 2323 WebGestureEvent event(WebInputEvent::GestureLongPress, |
2403 WebInputEvent::NoModifiers, | 2324 WebInputEvent::NoModifiers, |
2404 WebInputEvent::TimeStampForTesting); | 2325 WebInputEvent::TimeStampForTesting); |
2405 event.sourceDevice = WebGestureDeviceTouchscreen; | 2326 event.sourceDevice = WebGestureDeviceTouchscreen; |
2406 event.x = 300; | 2327 event.x = 300; |
2407 event.y = 300; | 2328 event.y = 300; |
2408 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2329 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2409 | 2330 |
2410 EXPECT_EQ(WebInputEventResult::HandledSystem, | 2331 EXPECT_EQ(WebInputEventResult::HandledSystem, |
2411 webView->handleInputEvent(WebCoalescedInputEvent(event))); | 2332 webView->handleInputEvent(WebCoalescedInputEvent(event))); |
2412 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2333 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
2413 } | 2334 } |
2414 | 2335 |
2415 TEST_P(WebViewTest, LongPressSelection) { | 2336 TEST_P(WebViewTest, LongPressSelection) { |
2416 URLTestHelpers::registerMockedURLFromBaseURL( | 2337 registerMockedHttpURLLoad("longpress_selection.html"); |
2417 WebString::fromUTF8(m_baseURL.c_str()), | |
2418 WebString::fromUTF8("longpress_selection.html")); | |
2419 | 2338 |
2420 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2339 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2421 m_baseURL + "longpress_selection.html", true); | 2340 m_baseURL + "longpress_selection.html", true); |
2422 webView->resize(WebSize(500, 300)); | 2341 webView->resize(WebSize(500, 300)); |
2423 webView->updateAllLifecyclePhases(); | 2342 webView->updateAllLifecyclePhases(); |
2424 runPendingTasks(); | 2343 runPendingTasks(); |
2425 | 2344 |
2426 WebString target = WebString::fromUTF8("target"); | 2345 WebString target = WebString::fromUTF8("target"); |
2427 WebString onselectstartfalse = WebString::fromUTF8("onselectstartfalse"); | 2346 WebString onselectstartfalse = WebString::fromUTF8("onselectstartfalse"); |
2428 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2347 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2429 | 2348 |
2430 EXPECT_TRUE( | 2349 EXPECT_TRUE( |
2431 tapElementById(WebInputEvent::GestureLongPress, onselectstartfalse)); | 2350 tapElementById(WebInputEvent::GestureLongPress, onselectstartfalse)); |
2432 EXPECT_EQ("", std::string(frame->selectionAsText().utf8().data())); | 2351 EXPECT_EQ("", std::string(frame->selectionAsText().utf8().data())); |
2433 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, target)); | 2352 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, target)); |
2434 EXPECT_EQ("testword", std::string(frame->selectionAsText().utf8().data())); | 2353 EXPECT_EQ("testword", std::string(frame->selectionAsText().utf8().data())); |
2435 } | 2354 } |
2436 | 2355 |
2437 #if !OS(MACOSX) | 2356 #if !OS(MACOSX) |
2438 TEST_P(WebViewTest, TouchDoesntSelectEmptyTextarea) { | 2357 TEST_P(WebViewTest, TouchDoesntSelectEmptyTextarea) { |
2439 URLTestHelpers::registerMockedURLFromBaseURL( | 2358 registerMockedHttpURLLoad("longpress_textarea.html"); |
2440 WebString::fromUTF8(m_baseURL.c_str()), | |
2441 WebString::fromUTF8("longpress_textarea.html")); | |
2442 | 2359 |
2443 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2360 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2444 m_baseURL + "longpress_textarea.html", true); | 2361 m_baseURL + "longpress_textarea.html", true); |
2445 webView->resize(WebSize(500, 300)); | 2362 webView->resize(WebSize(500, 300)); |
2446 webView->updateAllLifecyclePhases(); | 2363 webView->updateAllLifecyclePhases(); |
2447 runPendingTasks(); | 2364 runPendingTasks(); |
2448 | 2365 |
2449 WebString blanklinestextbox = WebString::fromUTF8("blanklinestextbox"); | 2366 WebString blanklinestextbox = WebString::fromUTF8("blanklinestextbox"); |
2450 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2367 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2451 | 2368 |
(...skipping 22 matching lines...) Expand all Loading... | |
2474 tapElementById(WebInputEvent::GestureLongPress, blanklinestextbox)); | 2391 tapElementById(WebInputEvent::GestureLongPress, blanklinestextbox)); |
2475 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2392 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
2476 | 2393 |
2477 // Double-tap past last word of textbox. | 2394 // Double-tap past last word of textbox. |
2478 webView->handleInputEvent(WebCoalescedInputEvent(event)); | 2395 webView->handleInputEvent(WebCoalescedInputEvent(event)); |
2479 EXPECT_TRUE(frame->selectionAsText().isEmpty()); | 2396 EXPECT_TRUE(frame->selectionAsText().isEmpty()); |
2480 } | 2397 } |
2481 #endif | 2398 #endif |
2482 | 2399 |
2483 TEST_P(WebViewTest, LongPressImageTextarea) { | 2400 TEST_P(WebViewTest, LongPressImageTextarea) { |
2484 URLTestHelpers::registerMockedURLFromBaseURL( | 2401 registerMockedHttpURLLoad("longpress_image_contenteditable.html"); |
2485 WebString::fromUTF8(m_baseURL.c_str()), | |
2486 WebString::fromUTF8("longpress_image_contenteditable.html")); | |
2487 | 2402 |
2488 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2403 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2489 m_baseURL + "longpress_image_contenteditable.html", true); | 2404 m_baseURL + "longpress_image_contenteditable.html", true); |
2490 webView->resize(WebSize(500, 300)); | 2405 webView->resize(WebSize(500, 300)); |
2491 webView->updateAllLifecyclePhases(); | 2406 webView->updateAllLifecyclePhases(); |
2492 runPendingTasks(); | 2407 runPendingTasks(); |
2493 | 2408 |
2494 WebString image = WebString::fromUTF8("purpleimage"); | 2409 WebString image = WebString::fromUTF8("purpleimage"); |
2495 | 2410 |
2496 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, image)); | 2411 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, image)); |
2497 WebRange range = webView->caretOrSelectionRange(); | 2412 WebRange range = webView->caretOrSelectionRange(); |
2498 EXPECT_FALSE(range.isNull()); | 2413 EXPECT_FALSE(range.isNull()); |
2499 EXPECT_EQ(0, range.startOffset()); | 2414 EXPECT_EQ(0, range.startOffset()); |
2500 EXPECT_EQ(1, range.length()); | 2415 EXPECT_EQ(1, range.length()); |
2501 } | 2416 } |
2502 | 2417 |
2503 TEST_P(WebViewTest, BlinkCaretAfterLongPress) { | 2418 TEST_P(WebViewTest, BlinkCaretAfterLongPress) { |
2504 URLTestHelpers::registerMockedURLFromBaseURL( | 2419 registerMockedHttpURLLoad("blink_caret_on_typing_after_long_press.html"); |
2505 WebString::fromUTF8(m_baseURL.c_str()), | |
2506 WebString::fromUTF8("blink_caret_on_typing_after_long_press.html")); | |
2507 | 2420 |
2508 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2421 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2509 m_baseURL + "blink_caret_on_typing_after_long_press.html", true); | 2422 m_baseURL + "blink_caret_on_typing_after_long_press.html", true); |
2510 webView->resize(WebSize(640, 480)); | 2423 webView->resize(WebSize(640, 480)); |
2511 webView->updateAllLifecyclePhases(); | 2424 webView->updateAllLifecyclePhases(); |
2512 runPendingTasks(); | 2425 runPendingTasks(); |
2513 | 2426 |
2514 WebString target = WebString::fromUTF8("target"); | 2427 WebString target = WebString::fromUTF8("target"); |
2515 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); | 2428 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); |
2516 | 2429 |
2517 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, target)); | 2430 EXPECT_TRUE(tapElementById(WebInputEvent::GestureLongPress, target)); |
2518 EXPECT_FALSE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); | 2431 EXPECT_FALSE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); |
2519 } | 2432 } |
2520 | 2433 |
2521 TEST_P(WebViewTest, BlinkCaretOnClosingContextMenu) { | 2434 TEST_P(WebViewTest, BlinkCaretOnClosingContextMenu) { |
2522 URLTestHelpers::registerMockedURLFromBaseURL( | 2435 registerMockedHttpURLLoad("form.html"); |
2523 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | |
2524 WebViewImpl* webView = | 2436 WebViewImpl* webView = |
2525 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 2437 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
2526 | 2438 |
2527 webView->setInitialFocus(false); | 2439 webView->setInitialFocus(false); |
2528 runPendingTasks(); | 2440 runPendingTasks(); |
2529 | 2441 |
2530 // We suspend caret blinking when pressing with mouse right button. | 2442 // We suspend caret blinking when pressing with mouse right button. |
2531 // Note that we do not send MouseUp event here since it will be consumed | 2443 // Note that we do not send MouseUp event here since it will be consumed |
2532 // by the context menu once it shows up. | 2444 // by the context menu once it shows up. |
2533 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, | 2445 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, |
(...skipping 13 matching lines...) Expand all Loading... | |
2547 webView->showContextMenu(); | 2459 webView->showContextMenu(); |
2548 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); | 2460 EXPECT_TRUE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); |
2549 | 2461 |
2550 // Caret blinking will be resumed only after context menu is closed. | 2462 // Caret blinking will be resumed only after context menu is closed. |
2551 webView->didCloseContextMenu(); | 2463 webView->didCloseContextMenu(); |
2552 | 2464 |
2553 EXPECT_FALSE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); | 2465 EXPECT_FALSE(mainFrame->frame()->selection().isCaretBlinkingSuspended()); |
2554 } | 2466 } |
2555 | 2467 |
2556 TEST_P(WebViewTest, SelectionOnReadOnlyInput) { | 2468 TEST_P(WebViewTest, SelectionOnReadOnlyInput) { |
2557 URLTestHelpers::registerMockedURLFromBaseURL( | 2469 registerMockedHttpURLLoad("selection_readonly.html"); |
2558 WebString::fromUTF8(m_baseURL.c_str()), | |
2559 WebString::fromUTF8("selection_readonly.html")); | |
2560 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2470 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2561 m_baseURL + "selection_readonly.html", true); | 2471 m_baseURL + "selection_readonly.html", true); |
2562 webView->resize(WebSize(640, 480)); | 2472 webView->resize(WebSize(640, 480)); |
2563 webView->updateAllLifecyclePhases(); | 2473 webView->updateAllLifecyclePhases(); |
2564 runPendingTasks(); | 2474 runPendingTasks(); |
2565 | 2475 |
2566 std::string testWord = "This text should be selected."; | 2476 std::string testWord = "This text should be selected."; |
2567 | 2477 |
2568 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2478 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2569 EXPECT_EQ(testWord, std::string(frame->selectionAsText().utf8().data())); | 2479 EXPECT_EQ(testWord, std::string(frame->selectionAsText().utf8().data())); |
2570 | 2480 |
2571 WebRange range = webView->caretOrSelectionRange(); | 2481 WebRange range = webView->caretOrSelectionRange(); |
2572 EXPECT_FALSE(range.isNull()); | 2482 EXPECT_FALSE(range.isNull()); |
2573 EXPECT_EQ(0, range.startOffset()); | 2483 EXPECT_EQ(0, range.startOffset()); |
2574 EXPECT_EQ(static_cast<int>(testWord.length()), range.length()); | 2484 EXPECT_EQ(static_cast<int>(testWord.length()), range.length()); |
2575 } | 2485 } |
2576 | 2486 |
2577 TEST_P(WebViewTest, KeyDownScrollsHandled) { | 2487 TEST_P(WebViewTest, KeyDownScrollsHandled) { |
2578 URLTestHelpers::registerMockedURLFromBaseURL( | 2488 registerMockedHttpURLLoad("content-width-1000.html"); |
2579 WebString::fromUTF8(m_baseURL.c_str()), | |
2580 WebString::fromUTF8("content-width-1000.html")); | |
2581 | 2489 |
2582 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2490 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2583 m_baseURL + "content-width-1000.html", true); | 2491 m_baseURL + "content-width-1000.html", true); |
2584 webView->resize(WebSize(100, 100)); | 2492 webView->resize(WebSize(100, 100)); |
2585 webView->updateAllLifecyclePhases(); | 2493 webView->updateAllLifecyclePhases(); |
2586 runPendingTasks(); | 2494 runPendingTasks(); |
2587 | 2495 |
2588 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, | 2496 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
2589 WebInputEvent::NoModifiers, | 2497 WebInputEvent::NoModifiers, |
2590 WebInputEvent::TimeStampForTesting); | 2498 WebInputEvent::TimeStampForTesting); |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2747 | 2655 |
2748 private: | 2656 private: |
2749 bool m_ignoreTextChanges; | 2657 bool m_ignoreTextChanges; |
2750 int m_textChangesFromUserGesture; | 2658 int m_textChangesFromUserGesture; |
2751 int m_textChangesWhileIgnored; | 2659 int m_textChangesWhileIgnored; |
2752 int m_textChangesWhileNotIgnored; | 2660 int m_textChangesWhileNotIgnored; |
2753 int m_userGestureNotificationsCount; | 2661 int m_userGestureNotificationsCount; |
2754 }; | 2662 }; |
2755 | 2663 |
2756 TEST_P(WebViewTest, LosingFocusDoesNotTriggerAutofillTextChange) { | 2664 TEST_P(WebViewTest, LosingFocusDoesNotTriggerAutofillTextChange) { |
2757 URLTestHelpers::registerMockedURLFromBaseURL( | 2665 registerMockedHttpURLLoad("input_field_populated.html"); |
2758 WebString::fromUTF8(m_baseURL.c_str()), | |
2759 WebString::fromUTF8("input_field_populated.html")); | |
2760 MockAutofillClient client; | 2666 MockAutofillClient client; |
2761 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2667 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2762 m_baseURL + "input_field_populated.html"); | 2668 m_baseURL + "input_field_populated.html"); |
2763 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2669 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2764 frame->setAutofillClient(&client); | 2670 frame->setAutofillClient(&client); |
2765 webView->setInitialFocus(false); | 2671 webView->setInitialFocus(false); |
2766 | 2672 |
2767 // Set up a composition that needs to be committed. | 2673 // Set up a composition that needs to be committed. |
2768 WebVector<WebCompositionUnderline> emptyUnderlines; | 2674 WebVector<WebCompositionUnderline> emptyUnderlines; |
2769 frame->setEditableSelectionOffsets(4, 10); | 2675 frame->setEditableSelectionOffsets(4, 10); |
(...skipping 21 matching lines...) Expand all Loading... | |
2791 const char* failMessage) { | 2697 const char* failMessage) { |
2792 WebTextInputInfo info = | 2698 WebTextInputInfo info = |
2793 webView->mainFrameImpl()->inputMethodController()->textInputInfo(); | 2699 webView->mainFrameImpl()->inputMethodController()->textInputInfo(); |
2794 EXPECT_EQ(selectionStart, info.selectionStart) << failMessage; | 2700 EXPECT_EQ(selectionStart, info.selectionStart) << failMessage; |
2795 EXPECT_EQ(selectionEnd, info.selectionEnd) << failMessage; | 2701 EXPECT_EQ(selectionEnd, info.selectionEnd) << failMessage; |
2796 EXPECT_EQ(compositionStart, info.compositionStart) << failMessage; | 2702 EXPECT_EQ(compositionStart, info.compositionStart) << failMessage; |
2797 EXPECT_EQ(compositionEnd, info.compositionEnd) << failMessage; | 2703 EXPECT_EQ(compositionEnd, info.compositionEnd) << failMessage; |
2798 } | 2704 } |
2799 | 2705 |
2800 TEST_P(WebViewTest, CompositionNotCancelledByBackspace) { | 2706 TEST_P(WebViewTest, CompositionNotCancelledByBackspace) { |
2801 URLTestHelpers::registerMockedURLFromBaseURL( | 2707 registerMockedHttpURLLoad("composition_not_cancelled_by_backspace.html"); |
2802 WebString::fromUTF8(m_baseURL.c_str()), | |
2803 WebString::fromUTF8("composition_not_cancelled_by_backspace.html")); | |
2804 MockAutofillClient client; | 2708 MockAutofillClient client; |
2805 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2709 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2806 m_baseURL + "composition_not_cancelled_by_backspace.html"); | 2710 m_baseURL + "composition_not_cancelled_by_backspace.html"); |
2807 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2711 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2808 frame->setAutofillClient(&client); | 2712 frame->setAutofillClient(&client); |
2809 webView->setInitialFocus(false); | 2713 webView->setInitialFocus(false); |
2810 | 2714 |
2811 // Test both input elements. | 2715 // Test both input elements. |
2812 for (int i = 0; i < 2; ++i) { | 2716 for (int i = 0; i < 2; ++i) { |
2813 // Select composition and do sanity check. | 2717 // Select composition and do sanity check. |
(...skipping 25 matching lines...) Expand all Loading... | |
2839 keyEvent.setType(WebInputEvent::KeyUp); | 2743 keyEvent.setType(WebInputEvent::KeyUp); |
2840 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); | 2744 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
2841 | 2745 |
2842 webView->advanceFocus(false); | 2746 webView->advanceFocus(false); |
2843 } | 2747 } |
2844 | 2748 |
2845 frame->setAutofillClient(0); | 2749 frame->setAutofillClient(0); |
2846 } | 2750 } |
2847 | 2751 |
2848 TEST_P(WebViewTest, FinishComposingTextTriggersAutofillTextChange) { | 2752 TEST_P(WebViewTest, FinishComposingTextTriggersAutofillTextChange) { |
2849 URLTestHelpers::registerMockedURLFromBaseURL( | 2753 registerMockedHttpURLLoad("input_field_populated.html"); |
2850 WebString::fromUTF8(m_baseURL.c_str()), | |
2851 WebString::fromUTF8("input_field_populated.html")); | |
2852 MockAutofillClient client; | 2754 MockAutofillClient client; |
2853 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2755 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2854 m_baseURL + "input_field_populated.html"); | 2756 m_baseURL + "input_field_populated.html"); |
2855 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2757 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2856 frame->setAutofillClient(&client); | 2758 frame->setAutofillClient(&client); |
2857 webView->setInitialFocus(false); | 2759 webView->setInitialFocus(false); |
2858 WebInputMethodController* activeInputMethodController = | 2760 WebInputMethodController* activeInputMethodController = |
2859 frame->frameWidget()->getActiveWebInputMethodController(); | 2761 frame->frameWidget()->getActiveWebInputMethodController(); |
2860 // Set up a composition that needs to be committed. | 2762 // Set up a composition that needs to be committed. |
2861 std::string compositionText("testingtext"); | 2763 std::string compositionText("testingtext"); |
(...skipping 12 matching lines...) Expand all Loading... | |
2874 client.clearChangeCounts(); | 2776 client.clearChangeCounts(); |
2875 activeInputMethodController->finishComposingText( | 2777 activeInputMethodController->finishComposingText( |
2876 WebInputMethodController::KeepSelection); | 2778 WebInputMethodController::KeepSelection); |
2877 EXPECT_EQ(0, client.textChangesWhileIgnored()); | 2779 EXPECT_EQ(0, client.textChangesWhileIgnored()); |
2878 EXPECT_EQ(1, client.textChangesWhileNotIgnored()); | 2780 EXPECT_EQ(1, client.textChangesWhileNotIgnored()); |
2879 | 2781 |
2880 frame->setAutofillClient(0); | 2782 frame->setAutofillClient(0); |
2881 } | 2783 } |
2882 | 2784 |
2883 TEST_P(WebViewTest, SetCompositionFromExistingTextTriggersAutofillTextChange) { | 2785 TEST_P(WebViewTest, SetCompositionFromExistingTextTriggersAutofillTextChange) { |
2884 URLTestHelpers::registerMockedURLFromBaseURL( | 2786 registerMockedHttpURLLoad("input_field_populated.html"); |
2885 WebString::fromUTF8(m_baseURL.c_str()), | |
2886 WebString::fromUTF8("input_field_populated.html")); | |
2887 MockAutofillClient client; | 2787 MockAutofillClient client; |
2888 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 2788 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
2889 m_baseURL + "input_field_populated.html", true); | 2789 m_baseURL + "input_field_populated.html", true); |
2890 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 2790 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
2891 frame->setAutofillClient(&client); | 2791 frame->setAutofillClient(&client); |
2892 webView->setInitialFocus(false); | 2792 webView->setInitialFocus(false); |
2893 | 2793 |
2894 WebVector<WebCompositionUnderline> emptyUnderlines; | 2794 WebVector<WebCompositionUnderline> emptyUnderlines; |
2895 | 2795 |
2896 client.clearChangeCounts(); | 2796 client.clearChangeCounts(); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2986 0, webURLRequestWithTargetStart.toResourceRequest(), "_start"); | 2886 0, webURLRequestWithTargetStart.toResourceRequest(), "_start"); |
2987 toLocalFrame(toWebViewImpl(client.createdWebView())->page()->mainFrame()) | 2887 toLocalFrame(toWebViewImpl(client.createdWebView())->page()->mainFrame()) |
2988 ->loader() | 2888 ->loader() |
2989 .load(requestWithTargetStart); | 2889 .load(requestWithTargetStart); |
2990 EXPECT_TRUE(client.didFocusCalled()); | 2890 EXPECT_TRUE(client.didFocusCalled()); |
2991 | 2891 |
2992 m_webViewHelper.reset(); // Remove dependency on locally scoped client. | 2892 m_webViewHelper.reset(); // Remove dependency on locally scoped client. |
2993 } | 2893 } |
2994 | 2894 |
2995 TEST_P(WebViewTest, DispatchesFocusOutFocusInOnViewToggleFocus) { | 2895 TEST_P(WebViewTest, DispatchesFocusOutFocusInOnViewToggleFocus) { |
2996 URLTestHelpers::registerMockedURLFromBaseURL( | 2896 registerMockedHttpURLLoad("focusout_focusin_events.html"); |
2997 WebString::fromUTF8(m_baseURL.c_str()), "focusout_focusin_events.html"); | |
2998 WebView* webView = m_webViewHelper.initializeAndLoad( | 2897 WebView* webView = m_webViewHelper.initializeAndLoad( |
2999 m_baseURL + "focusout_focusin_events.html", true, 0); | 2898 m_baseURL + "focusout_focusin_events.html", true, 0); |
3000 | 2899 |
3001 webView->setFocus(true); | 2900 webView->setFocus(true); |
3002 webView->setFocus(false); | 2901 webView->setFocus(false); |
3003 webView->setFocus(true); | 2902 webView->setFocus(true); |
3004 | 2903 |
3005 WebElement element = | 2904 WebElement element = |
3006 webView->mainFrame()->document().getElementById("message"); | 2905 webView->mainFrame()->document().getElementById("message"); |
3007 EXPECT_STREQ("focusoutfocusin", element.textContent().utf8().data()); | 2906 EXPECT_STREQ("focusoutfocusin", element.textContent().utf8().data()); |
3008 } | 2907 } |
3009 | 2908 |
3010 TEST_P(WebViewTest, DispatchesDomFocusOutDomFocusInOnViewToggleFocus) { | 2909 TEST_P(WebViewTest, DispatchesDomFocusOutDomFocusInOnViewToggleFocus) { |
3011 URLTestHelpers::registerMockedURLFromBaseURL( | 2910 registerMockedHttpURLLoad("domfocusout_domfocusin_events.html"); |
3012 WebString::fromUTF8(m_baseURL.c_str()), | |
3013 "domfocusout_domfocusin_events.html"); | |
3014 WebView* webView = m_webViewHelper.initializeAndLoad( | 2911 WebView* webView = m_webViewHelper.initializeAndLoad( |
3015 m_baseURL + "domfocusout_domfocusin_events.html", true, 0); | 2912 m_baseURL + "domfocusout_domfocusin_events.html", true, 0); |
3016 | 2913 |
3017 webView->setFocus(true); | 2914 webView->setFocus(true); |
3018 webView->setFocus(false); | 2915 webView->setFocus(false); |
3019 webView->setFocus(true); | 2916 webView->setFocus(true); |
3020 | 2917 |
3021 WebElement element = | 2918 WebElement element = |
3022 webView->mainFrame()->document().getElementById("message"); | 2919 webView->mainFrame()->document().getElementById("message"); |
3023 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.textContent().utf8().data()); | 2920 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.textContent().utf8().data()); |
(...skipping 17 matching lines...) Expand all Loading... | |
3041 // TODO(crbug.com/605112) This test is crashing on Android (Nexus 4) bot. | 2938 // TODO(crbug.com/605112) This test is crashing on Android (Nexus 4) bot. |
3042 #if OS(ANDROID) | 2939 #if OS(ANDROID) |
3043 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { | 2940 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { |
3044 #else | 2941 #else |
3045 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { | 2942 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { |
3046 #endif | 2943 #endif |
3047 bool originalMultipleFieldsFlag = | 2944 bool originalMultipleFieldsFlag = |
3048 RuntimeEnabledFeatures::inputMultipleFieldsUIEnabled(); | 2945 RuntimeEnabledFeatures::inputMultipleFieldsUIEnabled(); |
3049 RuntimeEnabledFeatures::setInputMultipleFieldsUIEnabled(false); | 2946 RuntimeEnabledFeatures::setInputMultipleFieldsUIEnabled(false); |
3050 DateTimeChooserWebViewClient client; | 2947 DateTimeChooserWebViewClient client; |
3051 std::string url = m_baseURL + "date_time_chooser.html"; | 2948 std::string url = registerMockedHttpURLLoad("date_time_chooser.html"); |
3052 URLTestHelpers::registerMockedURLLoad(toKURL(url), "date_time_chooser.html"); | |
3053 WebViewImpl* webViewImpl = | 2949 WebViewImpl* webViewImpl = |
3054 m_webViewHelper.initializeAndLoad(url, true, 0, &client); | 2950 m_webViewHelper.initializeAndLoad(url, true, 0, &client); |
3055 | 2951 |
3056 Document* document = webViewImpl->mainFrameImpl()->frame()->document(); | 2952 Document* document = webViewImpl->mainFrameImpl()->frame()->document(); |
3057 | 2953 |
3058 HTMLInputElement* inputElement; | 2954 HTMLInputElement* inputElement; |
3059 | 2955 |
3060 inputElement = toHTMLInputElement(document->getElementById("date")); | 2956 inputElement = toHTMLInputElement(document->getElementById("date")); |
3061 openDateTimeChooser(webViewImpl, inputElement); | 2957 openDateTimeChooser(webViewImpl, inputElement); |
3062 client.chooserCompletion()->didChooseValue(0); | 2958 client.chooserCompletion()->didChooseValue(0); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3118 EXPECT_STREQ("", inputElement->value().utf8().data()); | 3014 EXPECT_STREQ("", inputElement->value().utf8().data()); |
3119 | 3015 |
3120 // Clear the WebViewClient from the webViewHelper to avoid use-after-free in | 3016 // Clear the WebViewClient from the webViewHelper to avoid use-after-free in |
3121 // the WebViewHelper destructor. | 3017 // the WebViewHelper destructor. |
3122 m_webViewHelper.reset(); | 3018 m_webViewHelper.reset(); |
3123 RuntimeEnabledFeatures::setInputMultipleFieldsUIEnabled( | 3019 RuntimeEnabledFeatures::setInputMultipleFieldsUIEnabled( |
3124 originalMultipleFieldsFlag); | 3020 originalMultipleFieldsFlag); |
3125 } | 3021 } |
3126 | 3022 |
3127 TEST_P(WebViewTest, DispatchesFocusBlurOnViewToggle) { | 3023 TEST_P(WebViewTest, DispatchesFocusBlurOnViewToggle) { |
3128 URLTestHelpers::registerMockedURLFromBaseURL( | 3024 registerMockedHttpURLLoad("focus_blur_events.html"); |
3129 WebString::fromUTF8(m_baseURL.c_str()), "focus_blur_events.html"); | |
3130 WebView* webView = m_webViewHelper.initializeAndLoad( | 3025 WebView* webView = m_webViewHelper.initializeAndLoad( |
3131 m_baseURL + "focus_blur_events.html", true, 0); | 3026 m_baseURL + "focus_blur_events.html", true, 0); |
3132 | 3027 |
3133 webView->setFocus(true); | 3028 webView->setFocus(true); |
3134 webView->setFocus(false); | 3029 webView->setFocus(false); |
3135 webView->setFocus(true); | 3030 webView->setFocus(true); |
3136 | 3031 |
3137 WebElement element = | 3032 WebElement element = |
3138 webView->mainFrame()->document().getElementById("message"); | 3033 webView->mainFrame()->document().getElementById("message"); |
3139 // Expect not to see duplication of events. | 3034 // Expect not to see duplication of events. |
(...skipping 17 matching lines...) Expand all Loading... | |
3157 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " | 3052 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " |
3158 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " | 3053 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " |
3159 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " | 3054 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " |
3160 "start; text-indent: 0px; text-transform: none; white-space: normal; " | 3055 "start; text-indent: 0px; text-transform: none; white-space: normal; " |
3161 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " | 3056 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " |
3162 "text-decoration-style: initial; text-decoration-color: initial;\">Price " | 3057 "text-decoration-style: initial; text-decoration-color: initial;\">Price " |
3163 "10,000,000won</div>"; | 3058 "10,000,000won</div>"; |
3164 WebString clipText; | 3059 WebString clipText; |
3165 WebString clipHtml; | 3060 WebString clipHtml; |
3166 WebRect clipRect; | 3061 WebRect clipRect; |
3167 URLTestHelpers::registerMockedURLFromBaseURL( | 3062 registerMockedHttpURLLoad("Ahem.ttf"); |
3168 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3063 registerMockedHttpURLLoad("smartclip.html"); |
3169 URLTestHelpers::registerMockedURLFromBaseURL( | |
3170 WebString::fromUTF8(m_baseURL.c_str()), | |
3171 WebString::fromUTF8("smartclip.html")); | |
3172 WebView* webView = | 3064 WebView* webView = |
3173 m_webViewHelper.initializeAndLoad(m_baseURL + "smartclip.html"); | 3065 m_webViewHelper.initializeAndLoad(m_baseURL + "smartclip.html"); |
3174 webView->resize(WebSize(500, 500)); | 3066 webView->resize(WebSize(500, 500)); |
3175 webView->updateAllLifecyclePhases(); | 3067 webView->updateAllLifecyclePhases(); |
3176 WebRect cropRect(300, 125, 152, 50); | 3068 WebRect cropRect(300, 125, 152, 50); |
3177 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); | 3069 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); |
3178 EXPECT_STREQ(kExpectedClipText, clipText.utf8().c_str()); | 3070 EXPECT_STREQ(kExpectedClipText, clipText.utf8().c_str()); |
3179 EXPECT_STREQ(kExpectedClipHtml, clipHtml.utf8().c_str()); | 3071 EXPECT_STREQ(kExpectedClipHtml, clipHtml.utf8().c_str()); |
3180 } | 3072 } |
3181 | 3073 |
(...skipping 14 matching lines...) Expand all Loading... | |
3196 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " | 3088 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " |
3197 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " | 3089 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " |
3198 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " | 3090 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " |
3199 "start; text-indent: 0px; text-transform: none; white-space: normal; " | 3091 "start; text-indent: 0px; text-transform: none; white-space: normal; " |
3200 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " | 3092 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " |
3201 "text-decoration-style: initial; text-decoration-color: initial;\">Price " | 3093 "text-decoration-style: initial; text-decoration-color: initial;\">Price " |
3202 "10,000,000won</div>"; | 3094 "10,000,000won</div>"; |
3203 WebString clipText; | 3095 WebString clipText; |
3204 WebString clipHtml; | 3096 WebString clipHtml; |
3205 WebRect clipRect; | 3097 WebRect clipRect; |
3206 URLTestHelpers::registerMockedURLFromBaseURL( | 3098 registerMockedHttpURLLoad("Ahem.ttf"); |
3207 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3099 registerMockedHttpURLLoad("smartclip.html"); |
3208 URLTestHelpers::registerMockedURLFromBaseURL( | |
3209 WebString::fromUTF8(m_baseURL.c_str()), | |
3210 WebString::fromUTF8("smartclip.html")); | |
3211 WebView* webView = | 3100 WebView* webView = |
3212 m_webViewHelper.initializeAndLoad(m_baseURL + "smartclip.html"); | 3101 m_webViewHelper.initializeAndLoad(m_baseURL + "smartclip.html"); |
3213 webView->resize(WebSize(500, 500)); | 3102 webView->resize(WebSize(500, 500)); |
3214 webView->updateAllLifecyclePhases(); | 3103 webView->updateAllLifecyclePhases(); |
3215 webView->setPageScaleFactor(1.5); | 3104 webView->setPageScaleFactor(1.5); |
3216 webView->setVisualViewportOffset(WebFloatPoint(167, 100)); | 3105 webView->setVisualViewportOffset(WebFloatPoint(167, 100)); |
3217 WebRect cropRect(200, 38, 228, 75); | 3106 WebRect cropRect(200, 38, 228, 75); |
3218 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); | 3107 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); |
3219 EXPECT_STREQ(kExpectedClipText, clipText.utf8().c_str()); | 3108 EXPECT_STREQ(kExpectedClipText, clipText.utf8().c_str()); |
3220 EXPECT_STREQ(kExpectedClipHtml, clipHtml.utf8().c_str()); | 3109 EXPECT_STREQ(kExpectedClipHtml, clipHtml.utf8().c_str()); |
3221 } | 3110 } |
3222 | 3111 |
3223 TEST_P(WebViewTest, SmartClipReturnsEmptyStringsWhenUserSelectIsNone) { | 3112 TEST_P(WebViewTest, SmartClipReturnsEmptyStringsWhenUserSelectIsNone) { |
3224 WebString clipText; | 3113 WebString clipText; |
3225 WebString clipHtml; | 3114 WebString clipHtml; |
3226 WebRect clipRect; | 3115 WebRect clipRect; |
3227 URLTestHelpers::registerMockedURLFromBaseURL( | 3116 registerMockedHttpURLLoad("Ahem.ttf"); |
3228 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3117 registerMockedHttpURLLoad("smartclip_user_select_none.html"); |
3229 URLTestHelpers::registerMockedURLFromBaseURL( | |
3230 WebString::fromUTF8(m_baseURL.c_str()), | |
3231 WebString::fromUTF8("smartclip_user_select_none.html")); | |
3232 WebView* webView = m_webViewHelper.initializeAndLoad( | 3118 WebView* webView = m_webViewHelper.initializeAndLoad( |
3233 m_baseURL + "smartclip_user_select_none.html"); | 3119 m_baseURL + "smartclip_user_select_none.html"); |
3234 webView->resize(WebSize(500, 500)); | 3120 webView->resize(WebSize(500, 500)); |
3235 webView->updateAllLifecyclePhases(); | 3121 webView->updateAllLifecyclePhases(); |
3236 WebRect cropRect(0, 0, 100, 100); | 3122 WebRect cropRect(0, 0, 100, 100); |
3237 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); | 3123 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); |
3238 EXPECT_STREQ("", clipText.utf8().c_str()); | 3124 EXPECT_STREQ("", clipText.utf8().c_str()); |
3239 EXPECT_STREQ("", clipHtml.utf8().c_str()); | 3125 EXPECT_STREQ("", clipHtml.utf8().c_str()); |
3240 } | 3126 } |
3241 | 3127 |
3242 TEST_P(WebViewTest, SmartClipDoesNotCrashPositionReversed) { | 3128 TEST_P(WebViewTest, SmartClipDoesNotCrashPositionReversed) { |
3243 WebString clipText; | 3129 WebString clipText; |
3244 WebString clipHtml; | 3130 WebString clipHtml; |
3245 WebRect clipRect; | 3131 WebRect clipRect; |
3246 URLTestHelpers::registerMockedURLFromBaseURL( | 3132 registerMockedHttpURLLoad("Ahem.ttf"); |
3247 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3133 registerMockedHttpURLLoad("smartclip_reversed_positions.html"); |
3248 URLTestHelpers::registerMockedURLFromBaseURL( | |
3249 WebString::fromUTF8(m_baseURL.c_str()), | |
3250 WebString::fromUTF8("smartclip_reversed_positions.html")); | |
3251 WebView* webView = m_webViewHelper.initializeAndLoad( | 3134 WebView* webView = m_webViewHelper.initializeAndLoad( |
3252 m_baseURL + "smartclip_reversed_positions.html"); | 3135 m_baseURL + "smartclip_reversed_positions.html"); |
3253 webView->resize(WebSize(500, 500)); | 3136 webView->resize(WebSize(500, 500)); |
3254 webView->updateAllLifecyclePhases(); | 3137 webView->updateAllLifecyclePhases(); |
3255 // Left upper corner of the rect will be end position in the DOM hierarchy. | 3138 // Left upper corner of the rect will be end position in the DOM hierarchy. |
3256 WebRect cropRect(30, 110, 400, 250); | 3139 WebRect cropRect(30, 110, 400, 250); |
3257 // This should not still crash. See crbug.com/589082 for more details. | 3140 // This should not still crash. See crbug.com/589082 for more details. |
3258 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); | 3141 webView->extractSmartClipData(cropRect, clipText, clipHtml, clipRect); |
3259 } | 3142 } |
3260 | 3143 |
(...skipping 20 matching lines...) Expand all Loading... | |
3281 const WebString& name, | 3164 const WebString& name, |
3282 const WebString& uniqueName, | 3165 const WebString& uniqueName, |
3283 WebSandboxFlags sandboxFlags, | 3166 WebSandboxFlags sandboxFlags, |
3284 const WebFrameOwnerProperties& frameOwnerProperties) { | 3167 const WebFrameOwnerProperties& frameOwnerProperties) { |
3285 ++m_count; | 3168 ++m_count; |
3286 return TestWebFrameClient::createChildFrame( | 3169 return TestWebFrameClient::createChildFrame( |
3287 parent, scope, name, uniqueName, sandboxFlags, frameOwnerProperties); | 3170 parent, scope, name, uniqueName, sandboxFlags, frameOwnerProperties); |
3288 } | 3171 } |
3289 | 3172 |
3290 TEST_P(WebViewTest, ChangeDisplayMode) { | 3173 TEST_P(WebViewTest, ChangeDisplayMode) { |
3291 URLTestHelpers::registerMockedURLFromBaseURL( | 3174 registerMockedHttpURLLoad("display_mode.html"); |
3292 WebString::fromUTF8(m_baseURL.c_str()), | |
3293 WebString::fromUTF8("display_mode.html")); | |
3294 WebView* webView = | 3175 WebView* webView = |
3295 m_webViewHelper.initializeAndLoad(m_baseURL + "display_mode.html", true); | 3176 m_webViewHelper.initializeAndLoad(m_baseURL + "display_mode.html", true); |
3296 | 3177 |
3297 std::string content = | 3178 std::string content = |
3298 WebFrameContentDumper::dumpWebViewAsText(webView, 21).utf8(); | 3179 WebFrameContentDumper::dumpWebViewAsText(webView, 21).utf8(); |
3299 EXPECT_EQ("regular-ui", content); | 3180 EXPECT_EQ("regular-ui", content); |
3300 | 3181 |
3301 webView->setDisplayMode(WebDisplayModeMinimalUi); | 3182 webView->setDisplayMode(WebDisplayModeMinimalUi); |
3302 content = WebFrameContentDumper::dumpWebViewAsText(webView, 21).utf8(); | 3183 content = WebFrameContentDumper::dumpWebViewAsText(webView, 21).utf8(); |
3303 EXPECT_EQ("minimal-ui", content); | 3184 EXPECT_EQ("minimal-ui", content); |
3304 m_webViewHelper.reset(); | 3185 m_webViewHelper.reset(); |
3305 } | 3186 } |
3306 | 3187 |
3307 TEST_P(WebViewTest, AddFrameInCloseUnload) { | 3188 TEST_P(WebViewTest, AddFrameInCloseUnload) { |
3308 CreateChildCounterFrameClient frameClient; | 3189 CreateChildCounterFrameClient frameClient; |
3309 URLTestHelpers::registerMockedURLFromBaseURL( | 3190 registerMockedHttpURLLoad("add_frame_in_unload.html"); |
3310 WebString::fromUTF8(m_baseURL.c_str()), | |
3311 WebString::fromUTF8("add_frame_in_unload.html")); | |
3312 m_webViewHelper.initializeAndLoad(m_baseURL + "add_frame_in_unload.html", | 3191 m_webViewHelper.initializeAndLoad(m_baseURL + "add_frame_in_unload.html", |
3313 true, &frameClient); | 3192 true, &frameClient); |
3314 m_webViewHelper.reset(); | 3193 m_webViewHelper.reset(); |
3315 EXPECT_EQ(0, frameClient.count()); | 3194 EXPECT_EQ(0, frameClient.count()); |
3316 } | 3195 } |
3317 | 3196 |
3318 TEST_P(WebViewTest, AddFrameInCloseURLUnload) { | 3197 TEST_P(WebViewTest, AddFrameInCloseURLUnload) { |
3319 CreateChildCounterFrameClient frameClient; | 3198 CreateChildCounterFrameClient frameClient; |
3320 URLTestHelpers::registerMockedURLFromBaseURL( | 3199 registerMockedHttpURLLoad("add_frame_in_unload.html"); |
3321 WebString::fromUTF8(m_baseURL.c_str()), | |
3322 WebString::fromUTF8("add_frame_in_unload.html")); | |
3323 m_webViewHelper.initializeAndLoad(m_baseURL + "add_frame_in_unload.html", | 3200 m_webViewHelper.initializeAndLoad(m_baseURL + "add_frame_in_unload.html", |
3324 true, &frameClient); | 3201 true, &frameClient); |
3325 m_webViewHelper.webView()->mainFrame()->dispatchUnloadEvent(); | 3202 m_webViewHelper.webView()->mainFrame()->dispatchUnloadEvent(); |
3326 EXPECT_EQ(0, frameClient.count()); | 3203 EXPECT_EQ(0, frameClient.count()); |
3327 m_webViewHelper.reset(); | 3204 m_webViewHelper.reset(); |
3328 } | 3205 } |
3329 | 3206 |
3330 TEST_P(WebViewTest, AddFrameInNavigateUnload) { | 3207 TEST_P(WebViewTest, AddFrameInNavigateUnload) { |
3331 CreateChildCounterFrameClient frameClient; | 3208 CreateChildCounterFrameClient frameClient; |
3332 URLTestHelpers::registerMockedURLFromBaseURL( | 3209 registerMockedHttpURLLoad("add_frame_in_unload.html"); |
3333 WebString::fromUTF8(m_baseURL.c_str()), | |
3334 WebString::fromUTF8("add_frame_in_unload.html")); | |
3335 m_webViewHelper.initializeAndLoad(m_baseURL + "add_frame_in_unload.html", | 3210 m_webViewHelper.initializeAndLoad(m_baseURL + "add_frame_in_unload.html", |
3336 true, &frameClient); | 3211 true, &frameClient); |
3337 FrameTestHelpers::loadFrame(m_webViewHelper.webView()->mainFrame(), | 3212 FrameTestHelpers::loadFrame(m_webViewHelper.webView()->mainFrame(), |
3338 "about:blank"); | 3213 "about:blank"); |
3339 EXPECT_EQ(0, frameClient.count()); | 3214 EXPECT_EQ(0, frameClient.count()); |
3340 m_webViewHelper.reset(); | 3215 m_webViewHelper.reset(); |
3341 } | 3216 } |
3342 | 3217 |
3343 TEST_P(WebViewTest, AddFrameInChildInNavigateUnload) { | 3218 TEST_P(WebViewTest, AddFrameInChildInNavigateUnload) { |
3344 CreateChildCounterFrameClient frameClient; | 3219 CreateChildCounterFrameClient frameClient; |
3345 URLTestHelpers::registerMockedURLFromBaseURL( | 3220 registerMockedHttpURLLoad("add_frame_in_unload_wrapper.html"); |
3346 WebString::fromUTF8(m_baseURL.c_str()), | 3221 registerMockedHttpURLLoad("add_frame_in_unload.html"); |
3347 WebString::fromUTF8("add_frame_in_unload_wrapper.html")); | |
3348 URLTestHelpers::registerMockedURLFromBaseURL( | |
3349 WebString::fromUTF8(m_baseURL.c_str()), | |
3350 WebString::fromUTF8("add_frame_in_unload.html")); | |
3351 m_webViewHelper.initializeAndLoad( | 3222 m_webViewHelper.initializeAndLoad( |
3352 m_baseURL + "add_frame_in_unload_wrapper.html", true, &frameClient); | 3223 m_baseURL + "add_frame_in_unload_wrapper.html", true, &frameClient); |
3353 FrameTestHelpers::loadFrame(m_webViewHelper.webView()->mainFrame(), | 3224 FrameTestHelpers::loadFrame(m_webViewHelper.webView()->mainFrame(), |
3354 "about:blank"); | 3225 "about:blank"); |
3355 EXPECT_EQ(1, frameClient.count()); | 3226 EXPECT_EQ(1, frameClient.count()); |
3356 m_webViewHelper.reset(); | 3227 m_webViewHelper.reset(); |
3357 } | 3228 } |
3358 | 3229 |
3359 class TouchEventHandlerWebWidgetClient | 3230 class TouchEventHandlerWebWidgetClient |
3360 : public FrameTestHelpers::TestWebWidgetClient { | 3231 : public FrameTestHelpers::TestWebWidgetClient { |
(...skipping 18 matching lines...) Expand all Loading... | |
3379 | 3250 |
3380 // This test verifies that WebWidgetClient::hasTouchEventHandlers is called | 3251 // This test verifies that WebWidgetClient::hasTouchEventHandlers is called |
3381 // accordingly for various calls to EventHandlerRegistry::did{Add|Remove| | 3252 // accordingly for various calls to EventHandlerRegistry::did{Add|Remove| |
3382 // RemoveAll}EventHandler(..., TouchEvent). Verifying that those calls are made | 3253 // RemoveAll}EventHandler(..., TouchEvent). Verifying that those calls are made |
3383 // correctly is the job of LayoutTests/fast/events/event-handler-count.html. | 3254 // correctly is the job of LayoutTests/fast/events/event-handler-count.html. |
3384 TEST_P(WebViewTest, HasTouchEventHandlers) { | 3255 TEST_P(WebViewTest, HasTouchEventHandlers) { |
3385 TouchEventHandlerWebWidgetClient client; | 3256 TouchEventHandlerWebWidgetClient client; |
3386 // We need to create a LayerTreeView for the client before loading the page, | 3257 // We need to create a LayerTreeView for the client before loading the page, |
3387 // otherwise ChromeClient will default to assuming there are touch handlers. | 3258 // otherwise ChromeClient will default to assuming there are touch handlers. |
3388 WebLayerTreeView* layerTreeView = client.initializeLayerTreeView(); | 3259 WebLayerTreeView* layerTreeView = client.initializeLayerTreeView(); |
3389 std::string url = m_baseURL + "has_touch_event_handlers.html"; | 3260 std::string url = registerMockedHttpURLLoad("has_touch_event_handlers.html"); |
3390 URLTestHelpers::registerMockedURLLoad(toKURL(url), | |
3391 "has_touch_event_handlers.html"); | |
3392 WebViewImpl* webViewImpl = | 3261 WebViewImpl* webViewImpl = |
3393 m_webViewHelper.initializeAndLoad(url, true, 0, 0, &client); | 3262 m_webViewHelper.initializeAndLoad(url, true, 0, 0, &client); |
3394 ASSERT_TRUE(layerTreeView); | 3263 ASSERT_TRUE(layerTreeView); |
3395 const EventHandlerRegistry::EventHandlerClass touchEvent = | 3264 const EventHandlerRegistry::EventHandlerClass touchEvent = |
3396 EventHandlerRegistry::TouchStartOrMoveEventBlocking; | 3265 EventHandlerRegistry::TouchStartOrMoveEventBlocking; |
3397 | 3266 |
3398 // The page is initialized with at least one no-handlers call. | 3267 // The page is initialized with at least one no-handlers call. |
3399 // In practice we get two such calls because WebViewHelper::initializeAndLoad | 3268 // In practice we get two such calls because WebViewHelper::initializeAndLoad |
3400 // first initializes an empty frame, and then loads a document into it, so | 3269 // first initializes an empty frame, and then loads a document into it, so |
3401 // there are two FrameLoader::commitProvisionalLoad calls. | 3270 // there are two FrameLoader::commitProvisionalLoad calls. |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3507 | 3376 |
3508 // Free the webView before the TouchEventHandlerWebViewClient gets freed. | 3377 // Free the webView before the TouchEventHandlerWebViewClient gets freed. |
3509 m_webViewHelper.reset(); | 3378 m_webViewHelper.reset(); |
3510 } | 3379 } |
3511 | 3380 |
3512 // This test checks that deleting nodes which have only non-JS-registered touch | 3381 // This test checks that deleting nodes which have only non-JS-registered touch |
3513 // handlers also removes them from the event handler registry. Note that this | 3382 // handlers also removes them from the event handler registry. Note that this |
3514 // is different from detaching and re-attaching the same node, which is covered | 3383 // is different from detaching and re-attaching the same node, which is covered |
3515 // by layout tests under fast/events/. | 3384 // by layout tests under fast/events/. |
3516 TEST_P(WebViewTest, DeleteElementWithRegisteredHandler) { | 3385 TEST_P(WebViewTest, DeleteElementWithRegisteredHandler) { |
3517 std::string url = m_baseURL + "simple_div.html"; | 3386 std::string url = registerMockedHttpURLLoad("simple_div.html"); |
3518 URLTestHelpers::registerMockedURLLoad(toKURL(url), "simple_div.html"); | |
3519 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true); | 3387 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true); |
3520 | 3388 |
3521 Persistent<Document> document = | 3389 Persistent<Document> document = |
3522 webViewImpl->mainFrameImpl()->frame()->document(); | 3390 webViewImpl->mainFrameImpl()->frame()->document(); |
3523 Element* div = document->getElementById("div"); | 3391 Element* div = document->getElementById("div"); |
3524 EventHandlerRegistry& registry = | 3392 EventHandlerRegistry& registry = |
3525 document->frameHost()->eventHandlerRegistry(); | 3393 document->frameHost()->eventHandlerRegistry(); |
3526 | 3394 |
3527 registry.didAddEventHandler(*div, EventHandlerRegistry::ScrollEvent); | 3395 registry.didAddEventHandler(*div, EventHandlerRegistry::ScrollEvent); |
3528 EXPECT_TRUE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent)); | 3396 EXPECT_TRUE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent)); |
3529 | 3397 |
3530 DummyExceptionStateForTesting exceptionState; | 3398 DummyExceptionStateForTesting exceptionState; |
3531 div->remove(exceptionState); | 3399 div->remove(exceptionState); |
3532 | 3400 |
3533 // For oilpan we have to force a GC to ensure the event handlers have been | 3401 // For oilpan we have to force a GC to ensure the event handlers have been |
3534 // removed when checking below. We do a precise GC (collectAllGarbage does not | 3402 // removed when checking below. We do a precise GC (collectAllGarbage does not |
3535 // scan the stack) to ensure the div element dies. This is also why the | 3403 // scan the stack) to ensure the div element dies. This is also why the |
3536 // Document is in a Persistent since we want that to stay around. | 3404 // Document is in a Persistent since we want that to stay around. |
3537 ThreadState::current()->collectAllGarbage(); | 3405 ThreadState::current()->collectAllGarbage(); |
3538 | 3406 |
3539 EXPECT_FALSE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent)); | 3407 EXPECT_FALSE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent)); |
3540 } | 3408 } |
3541 | 3409 |
3542 // This test verifies the text input flags are correctly exposed to script. | 3410 // This test verifies the text input flags are correctly exposed to script. |
3543 TEST_P(WebViewTest, TextInputFlags) { | 3411 TEST_P(WebViewTest, TextInputFlags) { |
3544 std::string url = m_baseURL + "text_input_flags.html"; | 3412 std::string url = registerMockedHttpURLLoad("text_input_flags.html"); |
3545 URLTestHelpers::registerMockedURLLoad(toKURL(url), "text_input_flags.html"); | |
3546 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true); | 3413 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true); |
3547 webViewImpl->setInitialFocus(false); | 3414 webViewImpl->setInitialFocus(false); |
3548 | 3415 |
3549 WebLocalFrameImpl* frame = webViewImpl->mainFrameImpl(); | 3416 WebLocalFrameImpl* frame = webViewImpl->mainFrameImpl(); |
3550 WebInputMethodControllerImpl* activeInputMethodController = | 3417 WebInputMethodControllerImpl* activeInputMethodController = |
3551 frame->inputMethodController(); | 3418 frame->inputMethodController(); |
3552 Document* document = frame->frame()->document(); | 3419 Document* document = frame->frame()->document(); |
3553 | 3420 |
3554 // (A) <input> | 3421 // (A) <input> |
3555 // (A.1) Verifies autocorrect/autocomplete/spellcheck flags are Off and | 3422 // (A.1) Verifies autocorrect/autocomplete/spellcheck flags are Off and |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3594 EXPECT_FALSE(info1.equals(info2)); | 3461 EXPECT_FALSE(info1.equals(info2)); |
3595 EXPECT_FALSE(info2.equals(info3)); | 3462 EXPECT_FALSE(info2.equals(info3)); |
3596 | 3463 |
3597 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient. | 3464 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient. |
3598 m_webViewHelper.reset(); | 3465 m_webViewHelper.reset(); |
3599 } | 3466 } |
3600 | 3467 |
3601 // Check that the WebAutofillClient is correctly notified about first user | 3468 // Check that the WebAutofillClient is correctly notified about first user |
3602 // gestures after load, following various input events. | 3469 // gestures after load, following various input events. |
3603 TEST_P(WebViewTest, FirstUserGestureObservedKeyEvent) { | 3470 TEST_P(WebViewTest, FirstUserGestureObservedKeyEvent) { |
3604 URLTestHelpers::registerMockedURLFromBaseURL( | 3471 registerMockedHttpURLLoad("form.html"); |
3605 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | |
3606 MockAutofillClient client; | 3472 MockAutofillClient client; |
3607 WebViewImpl* webView = | 3473 WebViewImpl* webView = |
3608 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 3474 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
3609 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3475 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3610 frame->setAutofillClient(&client); | 3476 frame->setAutofillClient(&client); |
3611 webView->setInitialFocus(false); | 3477 webView->setInitialFocus(false); |
3612 | 3478 |
3613 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); | 3479 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
3614 | 3480 |
3615 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, | 3481 WebKeyboardEvent keyEvent(WebInputEvent::RawKeyDown, |
3616 WebInputEvent::NoModifiers, | 3482 WebInputEvent::NoModifiers, |
3617 WebInputEvent::TimeStampForTesting); | 3483 WebInputEvent::TimeStampForTesting); |
3618 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); | 3484 keyEvent.domKey = Platform::current()->domKeyEnumFromString(" "); |
3619 keyEvent.windowsKeyCode = VKEY_SPACE; | 3485 keyEvent.windowsKeyCode = VKEY_SPACE; |
3620 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); | 3486 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
3621 keyEvent.setType(WebInputEvent::KeyUp); | 3487 keyEvent.setType(WebInputEvent::KeyUp); |
3622 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); | 3488 webView->handleInputEvent(WebCoalescedInputEvent(keyEvent)); |
3623 | 3489 |
3624 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); | 3490 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
3625 frame->setAutofillClient(0); | 3491 frame->setAutofillClient(0); |
3626 } | 3492 } |
3627 | 3493 |
3628 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { | 3494 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { |
3629 URLTestHelpers::registerMockedURLFromBaseURL( | 3495 registerMockedHttpURLLoad("form.html"); |
3630 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); | |
3631 MockAutofillClient client; | 3496 MockAutofillClient client; |
3632 WebViewImpl* webView = | 3497 WebViewImpl* webView = |
3633 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); | 3498 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); |
3634 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3499 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3635 frame->setAutofillClient(&client); | 3500 frame->setAutofillClient(&client); |
3636 webView->setInitialFocus(false); | 3501 webView->setInitialFocus(false); |
3637 | 3502 |
3638 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); | 3503 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
3639 | 3504 |
3640 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, | 3505 WebMouseEvent mouseEvent(WebInputEvent::MouseDown, WebInputEvent::NoModifiers, |
3641 WebInputEvent::TimeStampForTesting); | 3506 WebInputEvent::TimeStampForTesting); |
3642 mouseEvent.button = WebMouseEvent::Button::Left; | 3507 mouseEvent.button = WebMouseEvent::Button::Left; |
3643 mouseEvent.x = 1; | 3508 mouseEvent.x = 1; |
3644 mouseEvent.y = 1; | 3509 mouseEvent.y = 1; |
3645 mouseEvent.clickCount = 1; | 3510 mouseEvent.clickCount = 1; |
3646 webView->handleInputEvent(WebCoalescedInputEvent(mouseEvent)); | 3511 webView->handleInputEvent(WebCoalescedInputEvent(mouseEvent)); |
3647 mouseEvent.setType(WebInputEvent::MouseUp); | 3512 mouseEvent.setType(WebInputEvent::MouseUp); |
3648 webView->handleInputEvent(WebCoalescedInputEvent(mouseEvent)); | 3513 webView->handleInputEvent(WebCoalescedInputEvent(mouseEvent)); |
3649 | 3514 |
3650 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); | 3515 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
3651 frame->setAutofillClient(0); | 3516 frame->setAutofillClient(0); |
3652 } | 3517 } |
3653 | 3518 |
3654 TEST_P(WebViewTest, FirstUserGestureObservedGestureTap) { | 3519 TEST_P(WebViewTest, FirstUserGestureObservedGestureTap) { |
3655 URLTestHelpers::registerMockedURLFromBaseURL( | 3520 registerMockedHttpURLLoad("longpress_selection.html"); |
3656 WebString::fromUTF8(m_baseURL.c_str()), | |
3657 WebString::fromUTF8("longpress_selection.html")); | |
3658 MockAutofillClient client; | 3521 MockAutofillClient client; |
3659 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 3522 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
3660 m_baseURL + "longpress_selection.html", true); | 3523 m_baseURL + "longpress_selection.html", true); |
3661 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3524 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3662 frame->setAutofillClient(&client); | 3525 frame->setAutofillClient(&client); |
3663 webView->setInitialFocus(false); | 3526 webView->setInitialFocus(false); |
3664 | 3527 |
3665 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); | 3528 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); |
3666 | 3529 |
3667 EXPECT_TRUE( | 3530 EXPECT_TRUE( |
3668 tapElementById(WebInputEvent::GestureTap, WebString::fromUTF8("target"))); | 3531 tapElementById(WebInputEvent::GestureTap, WebString::fromUTF8("target"))); |
3669 | 3532 |
3670 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); | 3533 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); |
3671 frame->setAutofillClient(0); | 3534 frame->setAutofillClient(0); |
3672 } | 3535 } |
3673 | 3536 |
3674 TEST_P(WebViewTest, CompositionIsUserGesture) { | 3537 TEST_P(WebViewTest, CompositionIsUserGesture) { |
3675 URLTestHelpers::registerMockedURLFromBaseURL( | 3538 registerMockedHttpURLLoad("input_field_populated.html"); |
3676 WebString::fromUTF8(m_baseURL.c_str()), | |
3677 WebString::fromUTF8("input_field_populated.html")); | |
3678 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 3539 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
3679 m_baseURL + "input_field_populated.html"); | 3540 m_baseURL + "input_field_populated.html"); |
3680 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3541 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3681 MockAutofillClient client; | 3542 MockAutofillClient client; |
3682 frame->setAutofillClient(&client); | 3543 frame->setAutofillClient(&client); |
3683 webView->setInitialFocus(false); | 3544 webView->setInitialFocus(false); |
3684 | 3545 |
3685 EXPECT_TRUE( | 3546 EXPECT_TRUE( |
3686 frame->frameWidget()->getActiveWebInputMethodController()->setComposition( | 3547 frame->frameWidget()->getActiveWebInputMethodController()->setComposition( |
3687 WebString::fromUTF8(std::string("hello").c_str()), | 3548 WebString::fromUTF8(std::string("hello").c_str()), |
3688 WebVector<WebCompositionUnderline>(), 3, 3)); | 3549 WebVector<WebCompositionUnderline>(), 3, 3)); |
3689 EXPECT_EQ(1, client.textChangesFromUserGesture()); | 3550 EXPECT_EQ(1, client.textChangesFromUserGesture()); |
3690 EXPECT_FALSE(UserGestureIndicator::processingUserGesture()); | 3551 EXPECT_FALSE(UserGestureIndicator::processingUserGesture()); |
3691 EXPECT_TRUE(frame->hasMarkedText()); | 3552 EXPECT_TRUE(frame->hasMarkedText()); |
3692 | 3553 |
3693 frame->setAutofillClient(0); | 3554 frame->setAutofillClient(0); |
3694 } | 3555 } |
3695 | 3556 |
3696 TEST_P(WebViewTest, CompareSelectAllToContentAsText) { | 3557 TEST_P(WebViewTest, CompareSelectAllToContentAsText) { |
3697 URLTestHelpers::registerMockedURLFromBaseURL( | 3558 registerMockedHttpURLLoad("longpress_selection.html"); |
3698 WebString::fromUTF8(m_baseURL.c_str()), | |
3699 WebString::fromUTF8("longpress_selection.html")); | |
3700 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 3559 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
3701 m_baseURL + "longpress_selection.html", true); | 3560 m_baseURL + "longpress_selection.html", true); |
3702 | 3561 |
3703 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3562 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3704 frame->executeScript(WebScriptSource( | 3563 frame->executeScript(WebScriptSource( |
3705 WebString::fromUTF8("document.execCommand('SelectAll', false, null)"))); | 3564 WebString::fromUTF8("document.execCommand('SelectAll', false, null)"))); |
3706 std::string actual = frame->selectionAsText().utf8(); | 3565 std::string actual = frame->selectionAsText().utf8(); |
3707 | 3566 |
3708 const int kMaxOutputCharacters = 1024; | 3567 const int kMaxOutputCharacters = 1024; |
3709 std::string expected = | 3568 std::string expected = |
3710 WebFrameContentDumper::dumpWebViewAsText(webView, kMaxOutputCharacters) | 3569 WebFrameContentDumper::dumpWebViewAsText(webView, kMaxOutputCharacters) |
3711 .utf8(); | 3570 .utf8(); |
3712 EXPECT_EQ(expected, actual); | 3571 EXPECT_EQ(expected, actual); |
3713 } | 3572 } |
3714 | 3573 |
3715 TEST_P(WebViewTest, AutoResizeSubtreeLayout) { | 3574 TEST_P(WebViewTest, AutoResizeSubtreeLayout) { |
3716 std::string url = m_baseURL + "subtree-layout.html"; | 3575 std::string url = registerMockedHttpURLLoad("subtree-layout.html"); |
3717 URLTestHelpers::registerMockedURLLoad(toKURL(url), "subtree-layout.html"); | |
3718 WebView* webView = m_webViewHelper.initialize(true); | 3576 WebView* webView = m_webViewHelper.initialize(true); |
3719 | 3577 |
3720 webView->enableAutoResizeMode(WebSize(200, 200), WebSize(200, 200)); | 3578 webView->enableAutoResizeMode(WebSize(200, 200), WebSize(200, 200)); |
3721 loadFrame(webView->mainFrame(), url); | 3579 loadFrame(webView->mainFrame(), url); |
3722 | 3580 |
3723 FrameView* frameView = | 3581 FrameView* frameView = |
3724 m_webViewHelper.webView()->mainFrameImpl()->frameView(); | 3582 m_webViewHelper.webView()->mainFrameImpl()->frameView(); |
3725 | 3583 |
3726 // Auto-resizing used to DCHECK(needsLayout()) in LayoutBlockFlow::layout. | 3584 // Auto-resizing used to DCHECK(needsLayout()) in LayoutBlockFlow::layout. |
3727 // This EXPECT is merely a dummy. The real test is that we don't trigger | 3585 // This EXPECT is merely a dummy. The real test is that we don't trigger |
3728 // asserts in debug builds. | 3586 // asserts in debug builds. |
3729 EXPECT_FALSE(frameView->needsLayout()); | 3587 EXPECT_FALSE(frameView->needsLayout()); |
3730 }; | 3588 }; |
3731 | 3589 |
3732 TEST_P(WebViewTest, PreferredSize) { | 3590 TEST_P(WebViewTest, PreferredSize) { |
3733 std::string url = m_baseURL + "specify_size.html?100px:100px"; | 3591 std::string url = m_baseURL + "specify_size.html?100px:100px"; |
3734 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); | 3592 URLTestHelpers::registerMockedURLLoad( |
3593 toKURL(url), testing::webTestDataPath("specify_size.html")); | |
3735 WebView* webView = m_webViewHelper.initializeAndLoad(url, true); | 3594 WebView* webView = m_webViewHelper.initializeAndLoad(url, true); |
3736 | 3595 |
3737 WebSize size = webView->contentsPreferredMinimumSize(); | 3596 WebSize size = webView->contentsPreferredMinimumSize(); |
3738 EXPECT_EQ(100, size.width); | 3597 EXPECT_EQ(100, size.width); |
3739 EXPECT_EQ(100, size.height); | 3598 EXPECT_EQ(100, size.height); |
3740 | 3599 |
3741 webView->setZoomLevel(WebView::zoomFactorToZoomLevel(2.0)); | 3600 webView->setZoomLevel(WebView::zoomFactorToZoomLevel(2.0)); |
3742 size = webView->contentsPreferredMinimumSize(); | 3601 size = webView->contentsPreferredMinimumSize(); |
3743 EXPECT_EQ(200, size.width); | 3602 EXPECT_EQ(200, size.width); |
3744 EXPECT_EQ(200, size.height); | 3603 EXPECT_EQ(200, size.height); |
3745 | 3604 |
3746 // Verify that both width and height are rounded (in this case up) | 3605 // Verify that both width and height are rounded (in this case up) |
3747 webView->setZoomLevel(WebView::zoomFactorToZoomLevel(0.9995)); | 3606 webView->setZoomLevel(WebView::zoomFactorToZoomLevel(0.9995)); |
3748 size = webView->contentsPreferredMinimumSize(); | 3607 size = webView->contentsPreferredMinimumSize(); |
3749 EXPECT_EQ(100, size.width); | 3608 EXPECT_EQ(100, size.width); |
3750 EXPECT_EQ(100, size.height); | 3609 EXPECT_EQ(100, size.height); |
3751 | 3610 |
3752 // Verify that both width and height are rounded (in this case down) | 3611 // Verify that both width and height are rounded (in this case down) |
3753 webView->setZoomLevel(WebView::zoomFactorToZoomLevel(1.0005)); | 3612 webView->setZoomLevel(WebView::zoomFactorToZoomLevel(1.0005)); |
3754 size = webView->contentsPreferredMinimumSize(); | 3613 size = webView->contentsPreferredMinimumSize(); |
3755 EXPECT_EQ(100, size.width); | 3614 EXPECT_EQ(100, size.width); |
3756 EXPECT_EQ(100, size.height); | 3615 EXPECT_EQ(100, size.height); |
3757 | 3616 |
3758 url = m_baseURL + "specify_size.html?1.5px:1.5px"; | 3617 url = m_baseURL + "specify_size.html?1.5px:1.5px"; |
3759 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); | 3618 URLTestHelpers::registerMockedURLLoad( |
3619 toKURL(url), testing::webTestDataPath("specify_size.html")); | |
3760 webView = m_webViewHelper.initializeAndLoad(url, true); | 3620 webView = m_webViewHelper.initializeAndLoad(url, true); |
3761 | 3621 |
3762 webView->setZoomLevel(WebView::zoomFactorToZoomLevel(1)); | 3622 webView->setZoomLevel(WebView::zoomFactorToZoomLevel(1)); |
3763 size = webView->contentsPreferredMinimumSize(); | 3623 size = webView->contentsPreferredMinimumSize(); |
3764 EXPECT_EQ(2, size.width); | 3624 EXPECT_EQ(2, size.width); |
3765 EXPECT_EQ(2, size.height); | 3625 EXPECT_EQ(2, size.height); |
3766 } | 3626 } |
3767 | 3627 |
3768 TEST_P(WebViewTest, PreferredSizeDirtyLayout) { | 3628 TEST_P(WebViewTest, PreferredSizeDirtyLayout) { |
3769 std::string url = m_baseURL + "specify_size.html?100px:100px"; | 3629 std::string url = m_baseURL + "specify_size.html?100px:100px"; |
3770 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); | 3630 URLTestHelpers::registerMockedURLLoad( |
3631 toKURL(url), testing::webTestDataPath("specify_size.html")); | |
3771 WebView* webView = m_webViewHelper.initializeAndLoad(url, true); | 3632 WebView* webView = m_webViewHelper.initializeAndLoad(url, true); |
3772 WebElement documentElement = | 3633 WebElement documentElement = |
3773 webView->mainFrame()->document().documentElement(); | 3634 webView->mainFrame()->document().documentElement(); |
3774 | 3635 |
3775 WebSize size = webView->contentsPreferredMinimumSize(); | 3636 WebSize size = webView->contentsPreferredMinimumSize(); |
3776 EXPECT_EQ(100, size.width); | 3637 EXPECT_EQ(100, size.width); |
3777 EXPECT_EQ(100, size.height); | 3638 EXPECT_EQ(100, size.height); |
3778 | 3639 |
3779 documentElement.setAttribute("style", "display: none"); | 3640 documentElement.setAttribute("style", "display: none"); |
3780 | 3641 |
(...skipping 27 matching lines...) Expand all Loading... | |
3808 | 3669 |
3809 private: | 3670 private: |
3810 bool m_wasCalled = false; | 3671 bool m_wasCalled = false; |
3811 IntPoint m_tappedPosition; | 3672 IntPoint m_tappedPosition; |
3812 WebNode m_tappedNode; | 3673 WebNode m_tappedNode; |
3813 bool m_pageChanged = false; | 3674 bool m_pageChanged = false; |
3814 }; | 3675 }; |
3815 | 3676 |
3816 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeeded) { | 3677 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeeded) { |
3817 std::string testFile = "show_unhandled_tap.html"; | 3678 std::string testFile = "show_unhandled_tap.html"; |
3818 URLTestHelpers::registerMockedURLFromBaseURL( | 3679 registerMockedHttpURLLoad("Ahem.ttf"); |
3819 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3680 registerMockedHttpURLLoad(testFile); |
3820 URLTestHelpers::registerMockedURLFromBaseURL( | |
3821 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8(testFile)); | |
3822 UnhandledTapWebViewClient client; | 3681 UnhandledTapWebViewClient client; |
3823 WebView* webView = | 3682 WebView* webView = |
3824 m_webViewHelper.initializeAndLoad(m_baseURL + testFile, true, 0, &client); | 3683 m_webViewHelper.initializeAndLoad(m_baseURL + testFile, true, 0, &client); |
3825 webView->resize(WebSize(500, 300)); | 3684 webView->resize(WebSize(500, 300)); |
3826 webView->updateAllLifecyclePhases(); | 3685 webView->updateAllLifecyclePhases(); |
3827 runPendingTasks(); | 3686 runPendingTasks(); |
3828 | 3687 |
3829 // Scroll the bottom into view so we can distinguish window coordinates from | 3688 // Scroll the bottom into view so we can distinguish window coordinates from |
3830 // document coordinates. | 3689 // document coordinates. |
3831 EXPECT_TRUE( | 3690 EXPECT_TRUE( |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3879 WebString::fromUTF8("target"))); \ | 3738 WebString::fromUTF8("target"))); \ |
3880 EXPECT_##EXPECT(client.getPageChanged()); \ | 3739 EXPECT_##EXPECT(client.getPageChanged()); \ |
3881 client.reset(); \ | 3740 client.reset(); \ |
3882 frame->executeScript(WebScriptSource("setTest('click-" handler "');")); \ | 3741 frame->executeScript(WebScriptSource("setTest('click-" handler "');")); \ |
3883 EXPECT_TRUE(tapElementById(WebInputEvent::GestureTap, \ | 3742 EXPECT_TRUE(tapElementById(WebInputEvent::GestureTap, \ |
3884 WebString::fromUTF8("target"))); \ | 3743 WebString::fromUTF8("target"))); \ |
3885 EXPECT_##EXPECT(client.getPageChanged()); | 3744 EXPECT_##EXPECT(client.getPageChanged()); |
3886 | 3745 |
3887 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithMutateDom) { | 3746 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithMutateDom) { |
3888 std::string testFile = "show_unhandled_tap.html"; | 3747 std::string testFile = "show_unhandled_tap.html"; |
3889 URLTestHelpers::registerMockedURLFromBaseURL( | 3748 registerMockedHttpURLLoad("Ahem.ttf"); |
3890 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3749 registerMockedHttpURLLoad(testFile); |
3891 URLTestHelpers::registerMockedURLFromBaseURL( | |
3892 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8(testFile)); | |
3893 UnhandledTapWebViewClient client; | 3750 UnhandledTapWebViewClient client; |
3894 WebViewImpl* webView = | 3751 WebViewImpl* webView = |
3895 m_webViewHelper.initializeAndLoad(m_baseURL + testFile, true, 0, &client); | 3752 m_webViewHelper.initializeAndLoad(m_baseURL + testFile, true, 0, &client); |
3896 webView->resize(WebSize(500, 300)); | 3753 webView->resize(WebSize(500, 300)); |
3897 webView->updateAllLifecyclePhases(); | 3754 webView->updateAllLifecyclePhases(); |
3898 runPendingTasks(); | 3755 runPendingTasks(); |
3899 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3756 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3900 | 3757 |
3901 // Test dom mutation. | 3758 // Test dom mutation. |
3902 TEST_EACH_MOUSEEVENT("mutateDom", TRUE); | 3759 TEST_EACH_MOUSEEVENT("mutateDom", TRUE); |
3903 | 3760 |
3904 // Test without any DOM mutation. | 3761 // Test without any DOM mutation. |
3905 client.reset(); | 3762 client.reset(); |
3906 frame->executeScript(WebScriptSource("setTest('none');")); | 3763 frame->executeScript(WebScriptSource("setTest('none');")); |
3907 EXPECT_TRUE( | 3764 EXPECT_TRUE( |
3908 tapElementById(WebInputEvent::GestureTap, WebString::fromUTF8("target"))); | 3765 tapElementById(WebInputEvent::GestureTap, WebString::fromUTF8("target"))); |
3909 EXPECT_FALSE(client.getPageChanged()); | 3766 EXPECT_FALSE(client.getPageChanged()); |
3910 | 3767 |
3911 m_webViewHelper.reset(); // Remove dependency on locally scoped client. | 3768 m_webViewHelper.reset(); // Remove dependency on locally scoped client. |
3912 } | 3769 } |
3913 | 3770 |
3914 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithMutateStyle) { | 3771 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithMutateStyle) { |
3915 std::string testFile = "show_unhandled_tap.html"; | 3772 std::string testFile = "show_unhandled_tap.html"; |
3916 URLTestHelpers::registerMockedURLFromBaseURL( | 3773 registerMockedHttpURLLoad("Ahem.ttf"); |
3917 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3774 registerMockedHttpURLLoad(testFile); |
3918 URLTestHelpers::registerMockedURLFromBaseURL( | |
3919 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8(testFile)); | |
3920 UnhandledTapWebViewClient client; | 3775 UnhandledTapWebViewClient client; |
3921 WebViewImpl* webView = | 3776 WebViewImpl* webView = |
3922 m_webViewHelper.initializeAndLoad(m_baseURL + testFile, true, 0, &client); | 3777 m_webViewHelper.initializeAndLoad(m_baseURL + testFile, true, 0, &client); |
3923 webView->resize(WebSize(500, 300)); | 3778 webView->resize(WebSize(500, 300)); |
3924 webView->updateAllLifecyclePhases(); | 3779 webView->updateAllLifecyclePhases(); |
3925 runPendingTasks(); | 3780 runPendingTasks(); |
3926 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3781 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3927 | 3782 |
3928 // Test style mutation. | 3783 // Test style mutation. |
3929 TEST_EACH_MOUSEEVENT("mutateStyle", TRUE); | 3784 TEST_EACH_MOUSEEVENT("mutateStyle", TRUE); |
(...skipping 12 matching lines...) Expand all Loading... | |
3942 frame->executeScript(WebScriptSource("setTest('none');")); | 3797 frame->executeScript(WebScriptSource("setTest('none');")); |
3943 EXPECT_TRUE( | 3798 EXPECT_TRUE( |
3944 tapElementById(WebInputEvent::GestureTap, WebString::fromUTF8("target"))); | 3799 tapElementById(WebInputEvent::GestureTap, WebString::fromUTF8("target"))); |
3945 EXPECT_FALSE(client.getPageChanged()); | 3800 EXPECT_FALSE(client.getPageChanged()); |
3946 | 3801 |
3947 m_webViewHelper.reset(); // Remove dependency on locally scoped client. | 3802 m_webViewHelper.reset(); // Remove dependency on locally scoped client. |
3948 } | 3803 } |
3949 | 3804 |
3950 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithPreventDefault) { | 3805 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithPreventDefault) { |
3951 std::string testFile = "show_unhandled_tap.html"; | 3806 std::string testFile = "show_unhandled_tap.html"; |
3952 URLTestHelpers::registerMockedURLFromBaseURL( | 3807 registerMockedHttpURLLoad("Ahem.ttf"); |
3953 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("Ahem.ttf")); | 3808 registerMockedHttpURLLoad(testFile); |
3954 URLTestHelpers::registerMockedURLFromBaseURL( | |
3955 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8(testFile)); | |
3956 UnhandledTapWebViewClient client; | 3809 UnhandledTapWebViewClient client; |
3957 WebViewImpl* webView = | 3810 WebViewImpl* webView = |
3958 m_webViewHelper.initializeAndLoad(m_baseURL + testFile, true, 0, &client); | 3811 m_webViewHelper.initializeAndLoad(m_baseURL + testFile, true, 0, &client); |
3959 webView->resize(WebSize(500, 300)); | 3812 webView->resize(WebSize(500, 300)); |
3960 webView->updateAllLifecyclePhases(); | 3813 webView->updateAllLifecyclePhases(); |
3961 runPendingTasks(); | 3814 runPendingTasks(); |
3962 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3815 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
3963 | 3816 |
3964 // Testswallowing. | 3817 // Testswallowing. |
3965 TEST_EACH_MOUSEEVENT("preventDefault", FALSE); | 3818 TEST_EACH_MOUSEEVENT("preventDefault", FALSE); |
(...skipping 24 matching lines...) Expand all Loading... | |
3990 "var win = window.open('javascript:false'); win.document")); | 3843 "var win = window.open('javascript:false'); win.document")); |
3991 ASSERT_TRUE(v8Value->IsObject()); | 3844 ASSERT_TRUE(v8Value->IsObject()); |
3992 Document* document = | 3845 Document* document = |
3993 V8Document::toImplWithTypeCheck(v8::Isolate::GetCurrent(), v8Value); | 3846 V8Document::toImplWithTypeCheck(v8::Isolate::GetCurrent(), v8Value); |
3994 ASSERT_TRUE(document); | 3847 ASSERT_TRUE(document); |
3995 EXPECT_FALSE(document->frame()->isLoading()); | 3848 EXPECT_FALSE(document->frame()->isLoading()); |
3996 } | 3849 } |
3997 | 3850 |
3998 #if OS(MACOSX) | 3851 #if OS(MACOSX) |
3999 TEST_P(WebViewTest, WebSubstringUtil) { | 3852 TEST_P(WebViewTest, WebSubstringUtil) { |
4000 URLTestHelpers::registerMockedURLFromBaseURL( | 3853 registerMockedHttpURLLoad("content_editable_populated.html"); |
4001 WebString::fromUTF8(m_baseURL.c_str()), | |
4002 WebString::fromUTF8("content_editable_populated.html")); | |
4003 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 3854 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
4004 m_baseURL + "content_editable_populated.html"); | 3855 m_baseURL + "content_editable_populated.html"); |
4005 webView->settings()->setDefaultFontSize(12); | 3856 webView->settings()->setDefaultFontSize(12); |
4006 webView->resize(WebSize(400, 400)); | 3857 webView->resize(WebSize(400, 400)); |
4007 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3858 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
4008 FrameView* frameView = frame->frame()->view(); | 3859 FrameView* frameView = frame->frame()->view(); |
4009 | 3860 |
4010 WebPoint baselinePoint; | 3861 WebPoint baselinePoint; |
4011 NSAttributedString* result = WebSubstringUtil::attributedSubstringInRange( | 3862 NSAttributedString* result = WebSubstringUtil::attributedSubstringInRange( |
4012 frame, 10, 3, &baselinePoint); | 3863 frame, 10, 3, &baselinePoint); |
(...skipping 10 matching lines...) Expand all Loading... | |
4023 WebSubstringUtil::attributedSubstringInRange(frame, 5, 5, &baselinePoint); | 3874 WebSubstringUtil::attributedSubstringInRange(frame, 5, 5, &baselinePoint); |
4024 ASSERT_TRUE(!!result); | 3875 ASSERT_TRUE(!!result); |
4025 | 3876 |
4026 point = WebPoint(baselinePoint.x, frameView->height() - baselinePoint.y); | 3877 point = WebPoint(baselinePoint.x, frameView->height() - baselinePoint.y); |
4027 result = WebSubstringUtil::attributedWordAtPoint(frame->frameWidget(), point, | 3878 result = WebSubstringUtil::attributedWordAtPoint(frame->frameWidget(), point, |
4028 baselinePoint); | 3879 baselinePoint); |
4029 ASSERT_TRUE(!!result); | 3880 ASSERT_TRUE(!!result); |
4030 } | 3881 } |
4031 | 3882 |
4032 TEST_P(WebViewTest, WebSubstringUtilIframe) { | 3883 TEST_P(WebViewTest, WebSubstringUtilIframe) { |
4033 URLTestHelpers::registerMockedURLFromBaseURL( | 3884 registerMockedHttpURLLoad("single_iframe.html"); |
4034 WebString::fromUTF8(m_baseURL.c_str()), | 3885 registerMockedHttpURLLoad("visible_iframe.html"); |
4035 WebString::fromUTF8("single_iframe.html")); | |
4036 URLTestHelpers::registerMockedURLFromBaseURL( | |
4037 WebString::fromUTF8(m_baseURL.c_str()), | |
4038 WebString::fromUTF8("visible_iframe.html")); | |
4039 WebViewImpl* webView = | 3886 WebViewImpl* webView = |
4040 m_webViewHelper.initializeAndLoad(m_baseURL + "single_iframe.html"); | 3887 m_webViewHelper.initializeAndLoad(m_baseURL + "single_iframe.html"); |
4041 webView->settings()->setDefaultFontSize(12); | 3888 webView->settings()->setDefaultFontSize(12); |
4042 webView->settings()->setJavaScriptEnabled(true); | 3889 webView->settings()->setJavaScriptEnabled(true); |
4043 webView->resize(WebSize(400, 400)); | 3890 webView->resize(WebSize(400, 400)); |
4044 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); | 3891 WebLocalFrameImpl* mainFrame = webView->mainFrameImpl(); |
4045 WebLocalFrameImpl* childFrame = WebLocalFrameImpl::fromFrame( | 3892 WebLocalFrameImpl* childFrame = WebLocalFrameImpl::fromFrame( |
4046 toLocalFrame(mainFrame->frame()->tree().firstChild())); | 3893 toLocalFrame(mainFrame->frame()->tree().firstChild())); |
4047 | 3894 |
4048 WebPoint baselinePoint; | 3895 WebPoint baselinePoint; |
(...skipping 17 matching lines...) Expand all Loading... | |
4066 result = WebSubstringUtil::attributedWordAtPoint(mainFrame->frameWidget(), | 3913 result = WebSubstringUtil::attributedWordAtPoint(mainFrame->frameWidget(), |
4067 point, baselinePoint); | 3914 point, baselinePoint); |
4068 ASSERT_NE(result, nullptr); | 3915 ASSERT_NE(result, nullptr); |
4069 | 3916 |
4070 EXPECT_EQ(yBeforeChange, baselinePoint.y + 100); | 3917 EXPECT_EQ(yBeforeChange, baselinePoint.y + 100); |
4071 } | 3918 } |
4072 | 3919 |
4073 #endif | 3920 #endif |
4074 | 3921 |
4075 TEST_P(WebViewTest, PasswordFieldEditingIsUserGesture) { | 3922 TEST_P(WebViewTest, PasswordFieldEditingIsUserGesture) { |
4076 URLTestHelpers::registerMockedURLFromBaseURL( | 3923 registerMockedHttpURLLoad("input_field_password.html"); |
4077 WebString::fromUTF8(m_baseURL.c_str()), | |
4078 WebString::fromUTF8("input_field_password.html")); | |
4079 MockAutofillClient client; | 3924 MockAutofillClient client; |
4080 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( | 3925 WebViewImpl* webView = m_webViewHelper.initializeAndLoad( |
4081 m_baseURL + "input_field_password.html", true); | 3926 m_baseURL + "input_field_password.html", true); |
4082 WebLocalFrameImpl* frame = webView->mainFrameImpl(); | 3927 WebLocalFrameImpl* frame = webView->mainFrameImpl(); |
4083 frame->setAutofillClient(&client); | 3928 frame->setAutofillClient(&client); |
4084 webView->setInitialFocus(false); | 3929 webView->setInitialFocus(false); |
4085 | 3930 |
4086 WebVector<WebCompositionUnderline> emptyUnderlines; | 3931 WebVector<WebCompositionUnderline> emptyUnderlines; |
4087 | 3932 |
4088 EXPECT_TRUE( | 3933 EXPECT_TRUE( |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4189 // ...but not yet detached. | 4034 // ...but not yet detached. |
4190 EXPECT_TRUE(mainFrame->host()); | 4035 EXPECT_TRUE(mainFrame->host()); |
4191 | 4036 |
4192 { | 4037 { |
4193 ScopedPageSuspender suspender; | 4038 ScopedPageSuspender suspender; |
4194 EXPECT_TRUE(page->suspended()); | 4039 EXPECT_TRUE(page->suspended()); |
4195 } | 4040 } |
4196 } | 4041 } |
4197 | 4042 |
4198 TEST_P(WebViewTest, ForceAndResetViewport) { | 4043 TEST_P(WebViewTest, ForceAndResetViewport) { |
4199 URLTestHelpers::registerMockedURLFromBaseURL( | 4044 registerMockedHttpURLLoad("200-by-300.html"); |
4200 WebString::fromUTF8(m_baseURL.c_str()), | |
4201 WebString::fromUTF8("200-by-300.html")); | |
4202 WebViewImpl* webViewImpl = | 4045 WebViewImpl* webViewImpl = |
4203 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); | 4046 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); |
4204 webViewImpl->resize(WebSize(100, 150)); | 4047 webViewImpl->resize(WebSize(100, 150)); |
4205 webViewImpl->layerTreeView()->setViewportSize(WebSize(100, 150)); | 4048 webViewImpl->layerTreeView()->setViewportSize(WebSize(100, 150)); |
4206 VisualViewport* visualViewport = | 4049 VisualViewport* visualViewport = |
4207 &webViewImpl->page()->frameHost().visualViewport(); | 4050 &webViewImpl->page()->frameHost().visualViewport(); |
4208 DevToolsEmulator* devToolsEmulator = webViewImpl->devToolsEmulator(); | 4051 DevToolsEmulator* devToolsEmulator = webViewImpl->devToolsEmulator(); |
4209 | 4052 |
4210 TransformationMatrix expectedMatrix; | 4053 TransformationMatrix expectedMatrix; |
4211 expectedMatrix.makeIdentity(); | 4054 expectedMatrix.makeIdentity(); |
(...skipping 25 matching lines...) Expand all Loading... | |
4237 // visual viewport clipping. | 4080 // visual viewport clipping. |
4238 devToolsEmulator->resetViewport(); | 4081 devToolsEmulator->resetViewport(); |
4239 expectedMatrix.makeIdentity(); | 4082 expectedMatrix.makeIdentity(); |
4240 EXPECT_EQ(expectedMatrix, | 4083 EXPECT_EQ(expectedMatrix, |
4241 webViewImpl->getDeviceEmulationTransformForTesting()); | 4084 webViewImpl->getDeviceEmulationTransformForTesting()); |
4242 EXPECT_FALSE(devToolsEmulator->visibleContentRectForPainting()); | 4085 EXPECT_FALSE(devToolsEmulator->visibleContentRectForPainting()); |
4243 EXPECT_TRUE(visualViewport->containerLayer()->masksToBounds()); | 4086 EXPECT_TRUE(visualViewport->containerLayer()->masksToBounds()); |
4244 } | 4087 } |
4245 | 4088 |
4246 TEST_P(WebViewTest, ViewportOverrideIntegratesDeviceMetricsOffsetAndScale) { | 4089 TEST_P(WebViewTest, ViewportOverrideIntegratesDeviceMetricsOffsetAndScale) { |
4247 URLTestHelpers::registerMockedURLFromBaseURL( | 4090 registerMockedHttpURLLoad("200-by-300.html"); |
4248 WebString::fromUTF8(m_baseURL.c_str()), | |
4249 WebString::fromUTF8("200-by-300.html")); | |
4250 WebViewImpl* webViewImpl = | 4091 WebViewImpl* webViewImpl = |
4251 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); | 4092 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); |
4252 webViewImpl->resize(WebSize(100, 150)); | 4093 webViewImpl->resize(WebSize(100, 150)); |
4253 | 4094 |
4254 TransformationMatrix expectedMatrix; | 4095 TransformationMatrix expectedMatrix; |
4255 expectedMatrix.makeIdentity(); | 4096 expectedMatrix.makeIdentity(); |
4256 EXPECT_EQ(expectedMatrix, | 4097 EXPECT_EQ(expectedMatrix, |
4257 webViewImpl->getDeviceEmulationTransformForTesting()); | 4098 webViewImpl->getDeviceEmulationTransformForTesting()); |
4258 | 4099 |
4259 WebDeviceEmulationParams emulationParams; | 4100 WebDeviceEmulationParams emulationParams; |
4260 emulationParams.offset = WebFloatPoint(50, 50); | 4101 emulationParams.offset = WebFloatPoint(50, 50); |
4261 emulationParams.scale = 2.f; | 4102 emulationParams.scale = 2.f; |
4262 webViewImpl->enableDeviceEmulation(emulationParams); | 4103 webViewImpl->enableDeviceEmulation(emulationParams); |
4263 expectedMatrix.makeIdentity().translate(50, 50).scale(2.f); | 4104 expectedMatrix.makeIdentity().translate(50, 50).scale(2.f); |
4264 EXPECT_EQ(expectedMatrix, | 4105 EXPECT_EQ(expectedMatrix, |
4265 webViewImpl->getDeviceEmulationTransformForTesting()); | 4106 webViewImpl->getDeviceEmulationTransformForTesting()); |
4266 | 4107 |
4267 // Device metrics offset and scale are applied before viewport override. | 4108 // Device metrics offset and scale are applied before viewport override. |
4268 webViewImpl->devToolsEmulator()->forceViewport(WebFloatPoint(5, 10), 1.5f); | 4109 webViewImpl->devToolsEmulator()->forceViewport(WebFloatPoint(5, 10), 1.5f); |
4269 expectedMatrix.makeIdentity() | 4110 expectedMatrix.makeIdentity() |
4270 .scale(1.5f) | 4111 .scale(1.5f) |
4271 .translate(-5, -10) | 4112 .translate(-5, -10) |
4272 .translate(50, 50) | 4113 .translate(50, 50) |
4273 .scale(2.f); | 4114 .scale(2.f); |
4274 EXPECT_EQ(expectedMatrix, | 4115 EXPECT_EQ(expectedMatrix, |
4275 webViewImpl->getDeviceEmulationTransformForTesting()); | 4116 webViewImpl->getDeviceEmulationTransformForTesting()); |
4276 } | 4117 } |
4277 | 4118 |
4278 TEST_P(WebViewTest, ViewportOverrideAdaptsToScaleAndScroll) { | 4119 TEST_P(WebViewTest, ViewportOverrideAdaptsToScaleAndScroll) { |
4279 URLTestHelpers::registerMockedURLFromBaseURL( | 4120 registerMockedHttpURLLoad("200-by-300.html"); |
4280 WebString::fromUTF8(m_baseURL.c_str()), | |
4281 WebString::fromUTF8("200-by-300.html")); | |
4282 WebViewImpl* webViewImpl = | 4121 WebViewImpl* webViewImpl = |
4283 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); | 4122 m_webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html"); |
4284 webViewImpl->resize(WebSize(100, 150)); | 4123 webViewImpl->resize(WebSize(100, 150)); |
4285 webViewImpl->layerTreeView()->setViewportSize(WebSize(100, 150)); | 4124 webViewImpl->layerTreeView()->setViewportSize(WebSize(100, 150)); |
4286 FrameView* frameView = webViewImpl->mainFrameImpl()->frame()->view(); | 4125 FrameView* frameView = webViewImpl->mainFrameImpl()->frame()->view(); |
4287 DevToolsEmulator* devToolsEmulator = webViewImpl->devToolsEmulator(); | 4126 DevToolsEmulator* devToolsEmulator = webViewImpl->devToolsEmulator(); |
4288 | 4127 |
4289 TransformationMatrix expectedMatrix; | 4128 TransformationMatrix expectedMatrix; |
4290 expectedMatrix.makeIdentity(); | 4129 expectedMatrix.makeIdentity(); |
4291 EXPECT_EQ(expectedMatrix, | 4130 EXPECT_EQ(expectedMatrix, |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4382 EXPECT_EQ(expectedWidth, vwElement->offsetWidth()); | 4221 EXPECT_EQ(expectedWidth, vwElement->offsetWidth()); |
4383 EXPECT_EQ(expectedHeight, vwElement->offsetHeight()); | 4222 EXPECT_EQ(expectedHeight, vwElement->offsetHeight()); |
4384 | 4223 |
4385 webView->resize(WebSize(800, 600)); | 4224 webView->resize(WebSize(800, 600)); |
4386 frame->printEnd(); | 4225 frame->printEnd(); |
4387 | 4226 |
4388 EXPECT_EQ(800, vwElement->offsetWidth()); | 4227 EXPECT_EQ(800, vwElement->offsetWidth()); |
4389 } | 4228 } |
4390 | 4229 |
4391 } // namespace blink | 4230 } // namespace blink |
OLD | NEW |