| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 591 TEST_F(WebViewTest, HitTestResultAtWithPageScale) | 591 TEST_F(WebViewTest, HitTestResultAtWithPageScale) |
| 592 { | 592 { |
| 593 std::string url = m_baseURL + "specify_size.html?" + "50px" + ":" + "50px"; | 593 std::string url = m_baseURL + "specify_size.html?" + "50px" + ":" + "50px"; |
| 594 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); | 594 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); |
| 595 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); | 595 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); |
| 596 webView->resize(WebSize(100, 100)); | 596 webView->resize(WebSize(100, 100)); |
| 597 WebPoint hitPoint(75, 75); | 597 WebPoint hitPoint(75, 75); |
| 598 | 598 |
| 599 // Image is at top left quandrant, so should not hit it. | 599 // Image is at top left quandrant, so should not hit it. |
| 600 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); | 600 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); |
| 601 ASSERT_EQ(WebNode::ElementNode, negativeResult.node().nodeType()); | |
| 602 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); | 601 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); |
| 603 negativeResult.reset(); | 602 negativeResult.reset(); |
| 604 | 603 |
| 605 // Scale page up 2x so image should occupy the whole viewport. | 604 // Scale page up 2x so image should occupy the whole viewport. |
| 606 webView->setPageScaleFactor(2.0f); | 605 webView->setPageScaleFactor(2.0f); |
| 607 WebHitTestResult positiveResult = webView->hitTestResultAt(hitPoint); | 606 WebHitTestResult positiveResult = webView->hitTestResultAt(hitPoint); |
| 608 ASSERT_EQ(WebNode::ElementNode, positiveResult.node().nodeType()); | |
| 609 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); | 607 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); |
| 610 positiveResult.reset(); | 608 positiveResult.reset(); |
| 611 } | 609 } |
| 612 | 610 |
| 613 TEST_F(WebViewTest, HitTestResultAtWithPageScaleAndPan) | 611 TEST_F(WebViewTest, HitTestResultAtWithPageScaleAndPan) |
| 614 { | 612 { |
| 615 std::string url = m_baseURL + "specify_size.html?" + "50px" + ":" + "50px"; | 613 std::string url = m_baseURL + "specify_size.html?" + "50px" + ":" + "50px"; |
| 616 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); | 614 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); |
| 617 WebView* webView = m_webViewHelper.initialize(true); | 615 WebView* webView = m_webViewHelper.initialize(true); |
| 618 loadFrame(webView->mainFrame(), url); | 616 loadFrame(webView->mainFrame(), url); |
| 619 webView->resize(WebSize(100, 100)); | 617 webView->resize(WebSize(100, 100)); |
| 620 WebPoint hitPoint(75, 75); | 618 WebPoint hitPoint(75, 75); |
| 621 | 619 |
| 622 // Image is at top left quandrant, so should not hit it. | 620 // Image is at top left quandrant, so should not hit it. |
| 623 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); | 621 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); |
| 624 ASSERT_EQ(WebNode::ElementNode, negativeResult.node().nodeType()); | |
| 625 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); | 622 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); |
| 626 negativeResult.reset(); | 623 negativeResult.reset(); |
| 627 | 624 |
| 628 // Scale page up 2x so image should occupy the whole viewport. | 625 // Scale page up 2x so image should occupy the whole viewport. |
| 629 webView->setPageScaleFactor(2.0f); | 626 webView->setPageScaleFactor(2.0f); |
| 630 WebHitTestResult positiveResult = webView->hitTestResultAt(hitPoint); | 627 WebHitTestResult positiveResult = webView->hitTestResultAt(hitPoint); |
| 631 ASSERT_EQ(WebNode::ElementNode, positiveResult.node().nodeType()); | |
| 632 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); | 628 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); |
| 633 positiveResult.reset(); | 629 positiveResult.reset(); |
| 634 | 630 |
| 635 // Pan around the zoomed in page so the image is not visible in viewport. | 631 // Pan around the zoomed in page so the image is not visible in viewport. |
| 636 webView->setVisualViewportOffset(WebFloatPoint(100, 100)); | 632 webView->setVisualViewportOffset(WebFloatPoint(100, 100)); |
| 637 WebHitTestResult negativeResult2 = webView->hitTestResultAt(hitPoint); | 633 WebHitTestResult negativeResult2 = webView->hitTestResultAt(hitPoint); |
| 638 ASSERT_EQ(WebNode::ElementNode, negativeResult2.node().nodeType()); | |
| 639 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); | 634 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); |
| 640 negativeResult2.reset(); | 635 negativeResult2.reset(); |
| 641 } | 636 } |
| 642 | 637 |
| 643 TEST_F(WebViewTest, HitTestResultForTapWithTapArea) | 638 TEST_F(WebViewTest, HitTestResultForTapWithTapArea) |
| 644 { | 639 { |
| 645 std::string url = m_baseURL + "hit_test.html"; | 640 std::string url = m_baseURL + "hit_test.html"; |
| 646 URLTestHelpers::registerMockedURLLoad(toKURL(url), "hit_test.html"); | 641 URLTestHelpers::registerMockedURLLoad(toKURL(url), "hit_test.html"); |
| 647 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); | 642 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); |
| 648 webView->resize(WebSize(100, 100)); | 643 webView->resize(WebSize(100, 100)); |
| 649 WebPoint hitPoint(55, 55); | 644 WebPoint hitPoint(55, 55); |
| 650 | 645 |
| 651 // Image is at top left quandrant, so should not hit it. | 646 // Image is at top left quandrant, so should not hit it. |
| 652 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); | 647 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); |
| 653 ASSERT_EQ(WebNode::ElementNode, negativeResult.node().nodeType()); | |
| 654 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); | 648 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); |
| 655 negativeResult.reset(); | 649 negativeResult.reset(); |
| 656 | 650 |
| 657 // The tap area is 20 by 20 square, centered at 55, 55. | 651 // The tap area is 20 by 20 square, centered at 55, 55. |
| 658 WebSize tapArea(20, 20); | 652 WebSize tapArea(20, 20); |
| 659 WebHitTestResult positiveResult = webView->hitTestResultForTap(hitPoint, tap
Area); | 653 WebHitTestResult positiveResult = webView->hitTestResultForTap(hitPoint, tap
Area); |
| 660 ASSERT_EQ(WebNode::ElementNode, positiveResult.node().nodeType()); | |
| 661 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); | 654 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); |
| 662 positiveResult.reset(); | 655 positiveResult.reset(); |
| 663 | 656 |
| 664 // Move the hit point the image is just outside the tapped area now. | 657 // Move the hit point the image is just outside the tapped area now. |
| 665 hitPoint = WebPoint(61, 61); | 658 hitPoint = WebPoint(61, 61); |
| 666 WebHitTestResult negativeResult2 = webView->hitTestResultForTap(hitPoint, ta
pArea); | 659 WebHitTestResult negativeResult2 = webView->hitTestResultForTap(hitPoint, ta
pArea); |
| 667 ASSERT_EQ(WebNode::ElementNode, negativeResult2.node().nodeType()); | |
| 668 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); | 660 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); |
| 669 negativeResult2.reset(); | 661 negativeResult2.reset(); |
| 670 } | 662 } |
| 671 | 663 |
| 672 TEST_F(WebViewTest, HitTestResultForTapWithTapAreaPageScaleAndPan) | 664 TEST_F(WebViewTest, HitTestResultForTapWithTapAreaPageScaleAndPan) |
| 673 { | 665 { |
| 674 std::string url = m_baseURL + "hit_test.html"; | 666 std::string url = m_baseURL + "hit_test.html"; |
| 675 URLTestHelpers::registerMockedURLLoad(toKURL(url), "hit_test.html"); | 667 URLTestHelpers::registerMockedURLLoad(toKURL(url), "hit_test.html"); |
| 676 WebView* webView = m_webViewHelper.initialize(true); | 668 WebView* webView = m_webViewHelper.initialize(true); |
| 677 loadFrame(webView->mainFrame(), url); | 669 loadFrame(webView->mainFrame(), url); |
| 678 webView->resize(WebSize(100, 100)); | 670 webView->resize(WebSize(100, 100)); |
| 679 WebPoint hitPoint(55, 55); | 671 WebPoint hitPoint(55, 55); |
| 680 | 672 |
| 681 // Image is at top left quandrant, so should not hit it. | 673 // Image is at top left quandrant, so should not hit it. |
| 682 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); | 674 WebHitTestResult negativeResult = webView->hitTestResultAt(hitPoint); |
| 683 ASSERT_EQ(WebNode::ElementNode, negativeResult.node().nodeType()); | |
| 684 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); | 675 EXPECT_FALSE(negativeResult.node().to<WebElement>().hasHTMLTagName("img")); |
| 685 negativeResult.reset(); | 676 negativeResult.reset(); |
| 686 | 677 |
| 687 // The tap area is 20 by 20 square, centered at 55, 55. | 678 // The tap area is 20 by 20 square, centered at 55, 55. |
| 688 WebSize tapArea(20, 20); | 679 WebSize tapArea(20, 20); |
| 689 WebHitTestResult positiveResult = webView->hitTestResultForTap(hitPoint, tap
Area); | 680 WebHitTestResult positiveResult = webView->hitTestResultForTap(hitPoint, tap
Area); |
| 690 ASSERT_EQ(WebNode::ElementNode, positiveResult.node().nodeType()); | |
| 691 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); | 681 EXPECT_TRUE(positiveResult.node().to<WebElement>().hasHTMLTagName("img")); |
| 692 positiveResult.reset(); | 682 positiveResult.reset(); |
| 693 | 683 |
| 694 // Zoom in and pan around the page so the image is not visible in viewport. | 684 // Zoom in and pan around the page so the image is not visible in viewport. |
| 695 webView->setPageScaleFactor(2.0f); | 685 webView->setPageScaleFactor(2.0f); |
| 696 webView->setVisualViewportOffset(WebFloatPoint(100, 100)); | 686 webView->setVisualViewportOffset(WebFloatPoint(100, 100)); |
| 697 WebHitTestResult negativeResult2 = webView->hitTestResultForTap(hitPoint, ta
pArea); | 687 WebHitTestResult negativeResult2 = webView->hitTestResultForTap(hitPoint, ta
pArea); |
| 698 ASSERT_EQ(WebNode::ElementNode, negativeResult2.node().nodeType()); | |
| 699 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); | 688 EXPECT_FALSE(negativeResult2.node().to<WebElement>().hasHTMLTagName("img")); |
| 700 negativeResult2.reset(); | 689 negativeResult2.reset(); |
| 701 } | 690 } |
| 702 | 691 |
| 703 void WebViewTest::testAutoResize(const WebSize& minAutoResize, const WebSize& ma
xAutoResize, | 692 void WebViewTest::testAutoResize(const WebSize& minAutoResize, const WebSize& ma
xAutoResize, |
| 704 const std::string& pageWidth, const std::string
& pageHeight, | 693 const std::string& pageWidth, const std::string
& pageHeight, |
| 705 int expectedWidth, int expectedHeight, | 694 int expectedWidth, int expectedHeight, |
| 706 HorizontalScrollbarState expectedHorizontalStat
e, VerticalScrollbarState expectedVerticalState) | 695 HorizontalScrollbarState expectedHorizontalStat
e, VerticalScrollbarState expectedVerticalState) |
| 707 { | 696 { |
| 708 AutoResizeWebViewClient client; | 697 AutoResizeWebViewClient client; |
| (...skipping 2361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3070 WebFrame* frame = mainWebView.webView()->mainFrame(); | 3059 WebFrame* frame = mainWebView.webView()->mainFrame(); |
| 3071 v8::HandleScope scope(v8::Isolate::GetCurrent()); | 3060 v8::HandleScope scope(v8::Isolate::GetCurrent()); |
| 3072 v8::Local<v8::Value> v8Value = frame->executeScriptAndReturnValue(WebScriptS
ource("var win = window.open('javascript:false'); win.document")); | 3061 v8::Local<v8::Value> v8Value = frame->executeScriptAndReturnValue(WebScriptS
ource("var win = window.open('javascript:false'); win.document")); |
| 3073 ASSERT_TRUE(v8Value->IsObject()); | 3062 ASSERT_TRUE(v8Value->IsObject()); |
| 3074 Document* document = V8Document::toImplWithTypeCheck(v8::Isolate::GetCurrent
(), v8Value); | 3063 Document* document = V8Document::toImplWithTypeCheck(v8::Isolate::GetCurrent
(), v8Value); |
| 3075 ASSERT_TRUE(document); | 3064 ASSERT_TRUE(document); |
| 3076 EXPECT_FALSE(document->frame()->isLoading()); | 3065 EXPECT_FALSE(document->frame()->isLoading()); |
| 3077 } | 3066 } |
| 3078 | 3067 |
| 3079 } // namespace blink | 3068 } // namespace blink |
| OLD | NEW |