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

Side by Side Diff: third_party/WebKit/Source/core/layout/MapCoordinatesTest.cpp

Issue 2504573002: Don't call isURLAllowed() from layout. (Closed)
Patch Set: Fix bad formatting that caused clang-format-diff to get confused. Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/layout/LayoutInline.h" 5 #include "core/layout/LayoutInline.h"
6 #include "core/layout/LayoutTestHelper.h" 6 #include "core/layout/LayoutTestHelper.h"
7 #include "core/layout/LayoutView.h" 7 #include "core/layout/LayoutView.h"
8 #include "platform/geometry/TransformState.h" 8 #include "platform/geometry/TransformState.h"
9 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h" 9 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 mappedPoint = mapAncestorToLocal(container, view, mappedPoint); 681 mappedPoint = mapAncestorToLocal(container, view, mappedPoint);
682 EXPECT_EQ(FloatPoint(), mappedPoint); 682 EXPECT_EQ(FloatPoint(), mappedPoint);
683 } 683 }
684 684
685 // TODO(chrishtr): add more multi-frame tests. 685 // TODO(chrishtr): add more multi-frame tests.
686 TEST_P(MapCoordinatesTest, FixedPosInIFrameWhenMainFrameScrolled) { 686 TEST_P(MapCoordinatesTest, FixedPosInIFrameWhenMainFrameScrolled) {
687 document().setBaseURLOverride(KURL(ParsedURLString, "http://test.com")); 687 document().setBaseURLOverride(KURL(ParsedURLString, "http://test.com"));
688 setBodyInnerHTML( 688 setBodyInnerHTML(
689 "<style>body { margin: 0; }</style>" 689 "<style>body { margin: 0; }</style>"
690 "<div style='width: 200; height: 8000px'></div>" 690 "<div style='width: 200; height: 8000px'></div>"
691 "<iframe id=frame src='http://test.com' width='500' height='500' " 691 "<iframe src='http://test.com' width='500' height='500' "
692 "frameBorder='0'>" 692 "frameBorder='0'>"
693 "</iframe>"); 693 "</iframe>");
694 694 setChildFrameHTML(
695 Document& frameDocument = setupChildIframe(
696 "frame",
697 "<style>body { margin: 0; } #target { width: 200px; height: 200px; " 695 "<style>body { margin: 0; } #target { width: 200px; height: 200px; "
698 "position:fixed}</style><div id=target></div>"); 696 "position:fixed}</style><div id=target></div>");
699 697
700 document().view()->layoutViewportScrollableArea()->setScrollOffset( 698 document().view()->layoutViewportScrollableArea()->setScrollOffset(
701 ScrollOffset(0.0, 1000), ProgrammaticScroll); 699 ScrollOffset(0.0, 1000), ProgrammaticScroll);
702 document().view()->updateAllLifecyclePhases(); 700 document().view()->updateAllLifecyclePhases();
703 701
704 Element* target = frameDocument.getElementById("target"); 702 Element* target = childDocument().getElementById("target");
705 ASSERT_TRUE(target); 703 ASSERT_TRUE(target);
706 FloatPoint mappedPoint = 704 FloatPoint mappedPoint =
707 mapAncestorToLocal(target->layoutObject(), nullptr, FloatPoint(10, 70), 705 mapAncestorToLocal(target->layoutObject(), nullptr, FloatPoint(10, 70),
708 TraverseDocumentBoundaries); 706 TraverseDocumentBoundaries);
709 707
710 // y = 70 - 8000, since the iframe is offset by 8000px from the main frame. 708 // y = 70 - 8000, since the iframe is offset by 8000px from the main frame.
711 // The scroll is not taken into account because the element is not fixed to 709 // The scroll is not taken into account because the element is not fixed to
712 // the root LayoutView, and the space of the root LayoutView does not include 710 // the root LayoutView, and the space of the root LayoutView does not include
713 // scroll. 711 // scroll.
714 EXPECT_EQ(FloatPoint(10, -7930), adjustForFrameScroll(mappedPoint)); 712 EXPECT_EQ(FloatPoint(10, -7930), adjustForFrameScroll(mappedPoint));
715 } 713 }
716 714
717 TEST_P(MapCoordinatesTest, IFrameTransformed) { 715 TEST_P(MapCoordinatesTest, IFrameTransformed) {
718 document().setBaseURLOverride(KURL(ParsedURLString, "http://test.com")); 716 document().setBaseURLOverride(KURL(ParsedURLString, "http://test.com"));
719 setBodyInnerHTML( 717 setBodyInnerHTML(
720 "<style>body { margin: 0; }</style>" 718 "<style>body { margin: 0; }</style>"
721 "<iframe style='transform: scale(2)' id=frame src='http://test.com' " 719 "<iframe style='transform: scale(2)' src='http://test.com' "
722 "width='500' height='500' frameBorder='0'>" 720 "width='500' height='500' frameBorder='0'>"
723 "</iframe>"); 721 "</iframe>");
724 722 setChildFrameHTML(
725 Document& frameDocument = 723 "<style>body { margin: 0; } #target { width: 200px; "
726 setupChildIframe("frame", 724 "height: 8000px}</style><div id=target></div>");
727 "<style>body { margin: 0; } #target { width: 200px; "
728 "height: 8000px}</style><div id=target></div>");
729 725
730 document().view()->updateAllLifecyclePhases(); 726 document().view()->updateAllLifecyclePhases();
731 727
732 frameDocument.view()->layoutViewportScrollableArea()->setScrollOffset( 728 childDocument().view()->layoutViewportScrollableArea()->setScrollOffset(
733 ScrollOffset(0.0, 1000), ProgrammaticScroll); 729 ScrollOffset(0.0, 1000), ProgrammaticScroll);
734 frameDocument.view()->updateAllLifecyclePhases(); 730 childDocument().view()->updateAllLifecyclePhases();
735 731
736 Element* target = frameDocument.getElementById("target"); 732 Element* target = childDocument().getElementById("target");
737 ASSERT_TRUE(target); 733 ASSERT_TRUE(target);
738 FloatPoint mappedPoint = 734 FloatPoint mappedPoint =
739 mapAncestorToLocal(target->layoutObject(), nullptr, FloatPoint(200, 200), 735 mapAncestorToLocal(target->layoutObject(), nullptr, FloatPoint(200, 200),
740 TraverseDocumentBoundaries | UseTransforms); 736 TraverseDocumentBoundaries | UseTransforms);
741 737
742 // Derivation: 738 // Derivation:
743 // (200, 200) -> (-50, -50) (Adjust for transform origin of scale, which is 739 // (200, 200) -> (-50, -50) (Adjust for transform origin of scale, which is
744 // at the center of the 500x500 iframe) 740 // at the center of the 500x500 iframe)
745 // (-50, -50) -> (-25, -25) (Divide by 2 to invert the scale) 741 // (-50, -50) -> (-25, -25) (Divide by 2 to invert the scale)
746 // (-25, -25) -> (225, 225) (Add the origin back in) 742 // (-25, -25) -> (225, 225) (Add the origin back in)
747 // (225, 225) -> (225, 1225) (Adjust by scroll offset of y=1000) 743 // (225, 225) -> (225, 1225) (Adjust by scroll offset of y=1000)
748 EXPECT_EQ(FloatPoint(225, 1225), mappedPoint); 744 EXPECT_EQ(FloatPoint(225, 1225), mappedPoint);
749 } 745 }
750 746
751 TEST_P(MapCoordinatesTest, FixedPosInScrolledIFrameWithTransform) { 747 TEST_P(MapCoordinatesTest, FixedPosInScrolledIFrameWithTransform) {
752 document().setBaseURLOverride(KURL(ParsedURLString, "http://test.com")); 748 document().setBaseURLOverride(KURL(ParsedURLString, "http://test.com"));
753 setBodyInnerHTML( 749 setBodyInnerHTML(
754 "<style>* { margin: 0; }</style>" 750 "<style>* { margin: 0; }</style>"
755 "<div style='position: absolute; left: 0px; top: 0px; width: 1024px; " 751 "<div style='position: absolute; left: 0px; top: 0px; width: 1024px; "
756 "height: 768px; transform-origin: 0 0; transform: scale(0.5, 0.5);'>" 752 "height: 768px; transform-origin: 0 0; transform: scale(0.5, 0.5);'>"
757 " <iframe id='frame' frameborder=0 src='http://test.com' " 753 " <iframe frameborder=0 src='http://test.com' "
758 "class='frame' sandbox='allow-same-origin' width='1024' " 754 "sandbox='allow-same-origin' width='1024' height='768'></iframe>"
759 "height='768'></iframe>"
760 "</div>"); 755 "</div>");
761 756 setChildFrameHTML(
762 Document& frameDocument = setupChildIframe(
763 "frame",
764 "<style>* { margin: 0; } #target { width: 200px; height: 200px; " 757 "<style>* { margin: 0; } #target { width: 200px; height: 200px; "
765 "position:fixed}</style><div id=target></div>" 758 "position:fixed}</style><div id=target></div>"
766 "<div style='width: 200; height: 8000px'></div>"); 759 "<div style='width: 200; height: 8000px'></div>");
767 760
768 document().view()->updateAllLifecyclePhases(); 761 document().view()->updateAllLifecyclePhases();
769 frameDocument.view()->layoutViewportScrollableArea()->setScrollOffset( 762 childDocument().view()->layoutViewportScrollableArea()->setScrollOffset(
770 ScrollOffset(0.0, 1000), ProgrammaticScroll); 763 ScrollOffset(0.0, 1000), ProgrammaticScroll);
771 document().view()->updateAllLifecyclePhases(); 764 document().view()->updateAllLifecyclePhases();
772 765
773 Element* target = frameDocument.getElementById("target"); 766 Element* target = childDocument().getElementById("target");
774 ASSERT_TRUE(target); 767 ASSERT_TRUE(target);
775 FloatPoint mappedPoint = 768 FloatPoint mappedPoint =
776 mapAncestorToLocal(target->layoutObject(), nullptr, FloatPoint(0, 0), 769 mapAncestorToLocal(target->layoutObject(), nullptr, FloatPoint(0, 0),
777 UseTransforms | TraverseDocumentBoundaries); 770 UseTransforms | TraverseDocumentBoundaries);
778 771
779 EXPECT_EQ(FloatPoint(0, 0), mappedPoint); 772 EXPECT_EQ(FloatPoint(0, 0), mappedPoint);
780 } 773 }
781 774
782 TEST_P(MapCoordinatesTest, MulticolWithText) { 775 TEST_P(MapCoordinatesTest, MulticolWithText) {
783 setBodyInnerHTML( 776 setBodyInnerHTML(
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 LayoutUnit::epsilon()); 1552 LayoutUnit::epsilon());
1560 EXPECT_NEAR(50.0, matrix.projectPoint(FloatPoint(100.0, 50.0)).y(), 1553 EXPECT_NEAR(50.0, matrix.projectPoint(FloatPoint(100.0, 50.0)).y(),
1561 LayoutUnit::epsilon()); 1554 LayoutUnit::epsilon());
1562 EXPECT_NEAR(25.0, matrix.projectPoint(FloatPoint(50.0, 100.0)).x(), 1555 EXPECT_NEAR(25.0, matrix.projectPoint(FloatPoint(50.0, 100.0)).x(),
1563 LayoutUnit::epsilon()); 1556 LayoutUnit::epsilon());
1564 EXPECT_NEAR(100.0, matrix.projectPoint(FloatPoint(50.0, 100.0)).y(), 1557 EXPECT_NEAR(100.0, matrix.projectPoint(FloatPoint(50.0, 100.0)).y(),
1565 LayoutUnit::epsilon()); 1558 LayoutUnit::epsilon());
1566 } 1559 }
1567 1560
1568 } // namespace blink 1561 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698