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

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

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

Powered by Google App Engine
This is Rietveld 408576698