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

Unified Diff: third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp

Issue 2073563002: Rework mapToVisualRectInAncestorSpace to handle flipped blocks correctly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sync to head. Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp
diff --git a/third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp b/third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp
index 416f838353bb0cb319c2973c21e37aaac2de3f59..1436b167804e8e542325d07661e7d8faafab1f89 100644
--- a/third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp
+++ b/third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp
@@ -171,11 +171,18 @@ TEST_F(VisualRectMappingTest, SelfFlippedWritingMode)
EXPECT_EQ(LayoutRect(-40, 0, 140, 70), overflowRect);
LayoutRect rect = overflowRect;
+ // TODO(wkorman): The calls to flipForWritingMode() here and in other test
+ // cases below are necessary because mapToVisualRectInAncestorSpace()
+ // currently expects the input rect to be in "physical coordinates" (*not*
+ // "physical coordinates with flipped block-flow direction"), see
+ // LayoutBoxModelObject.h.
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(target, rect));
// This rect is in physical coordinates of target.
EXPECT_EQ(LayoutRect(0, 0, 140, 70), rect);
rect = overflowRect;
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(&layoutView(), rect));
EXPECT_EQ(LayoutRect(222, 111, 140, 70), rect);
checkPaintInvalidationStateRectMapping(rect, overflowRect, *target, layoutView(), layoutView());
@@ -197,16 +204,19 @@ TEST_F(VisualRectMappingTest, ContainerFlippedWritingMode)
EXPECT_EQ(LayoutRect(-40, 0, 140, 110), targetOverflowRect);
LayoutRect rect = targetOverflowRect;
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(target, rect));
// This rect is in physical coordinates of target.
EXPECT_EQ(LayoutRect(0, 0, 140, 110), rect);
LayoutBlock* container = toLayoutBlock(getLayoutObjectByElementId("container"));
rect = targetOverflowRect;
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(container, rect));
// 100 is the physical x location of target in container.
EXPECT_EQ(LayoutRect(100, 0, 140, 110), rect);
rect = targetOverflowRect;
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(&layoutView(), rect));
EXPECT_EQ(LayoutRect(322, 111, 140, 110), rect);
checkPaintInvalidationStateRectMapping(rect, targetOverflowRect, *target, layoutView(), layoutView());
@@ -214,9 +224,11 @@ TEST_F(VisualRectMappingTest, ContainerFlippedWritingMode)
LayoutRect containerOverflowRect = container->localOverflowRectForPaintInvalidation();
EXPECT_EQ(LayoutRect(0, 0, 200, 100), containerOverflowRect);
rect = containerOverflowRect;
+ container->flipForWritingMode(rect);
EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(container, rect));
EXPECT_EQ(LayoutRect(0, 0, 200, 100), rect);
rect = containerOverflowRect;
+ container->flipForWritingMode(rect);
EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(&layoutView(), rect));
EXPECT_EQ(LayoutRect(222, 111, 200, 100), rect);
checkPaintInvalidationStateRectMapping(rect, containerOverflowRect, *container, layoutView(), layoutView());
@@ -303,11 +315,13 @@ TEST_F(VisualRectMappingTest, ContainerFlippedWritingModeAndOverflowScroll)
EXPECT_EQ(LayoutRect(-40, 0, 140, 110), targetOverflowRect);
LayoutRect rect = targetOverflowRect;
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(target, rect));
// This rect is in physical coordinates of target.
EXPECT_EQ(LayoutRect(0, 0, 140, 110), rect);
rect = targetOverflowRect;
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(container, rect));
// -2 = target_physical_x(100) + container_border_left(40) - scroll_left(142)
// 3 = target_y(0) + container_border_top(10) - scroll_top(7)
@@ -315,6 +329,7 @@ TEST_F(VisualRectMappingTest, ContainerFlippedWritingModeAndOverflowScroll)
EXPECT_EQ(LayoutRect(-2, 3, 140, 110), rect);
rect = targetOverflowRect;
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(&layoutView(), rect));
// (-2, 3, 140, 100) is first clipped by container's overflow clip, to (40, 10, 50, 80),
// then is added by container's offset in LayoutView (111, 222).
@@ -330,10 +345,12 @@ TEST_F(VisualRectMappingTest, ContainerFlippedWritingModeAndOverflowScroll)
EXPECT_EQ(LayoutRect(0, 0, 110, 120), containerOverflowRect);
rect = containerOverflowRect;
+ container->flipForWritingMode(rect);
EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(container, rect));
EXPECT_EQ(LayoutRect(0, 0, 110, 120), rect);
rect = containerOverflowRect;
+ container->flipForWritingMode(rect);
EXPECT_TRUE(container->mapToVisualRectInAncestorSpace(&layoutView(), rect));
// TODO(crbug.com/600039): rect.x() should be 222 (left), but is offset by extra horizontal
// border-widths because of layout error.
@@ -398,11 +415,13 @@ TEST_F(VisualRectMappingTest, ContainerFlippedWritingModeAndOverflowHidden)
EXPECT_EQ(LayoutRect(-40, 0, 140, 110), targetOverflowRect);
LayoutRect rect = targetOverflowRect;
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(target, rect));
// This rect is in physical coordinates of target.
EXPECT_EQ(LayoutRect(0, 0, 140, 110), rect);
rect = targetOverflowRect;
+ target->flipForWritingMode(rect);
EXPECT_TRUE(target->mapToVisualRectInAncestorSpace(container, rect));
// 58 = target_physical_x(100) + container_border_left(40) - scroll_left(58)
// The other sides of the rect are clipped by container's overflow clip.

Powered by Google App Engine
This is Rietveld 408576698