Index: third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp b/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp |
index 10cd9e977478096c7ba27eefd8e83055a8e5be3b..52a7d7520b75cc66640e17f41e6769bd235ae6b5 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutObjectTest.cpp |
@@ -139,6 +139,7 @@ TEST_F(LayoutObjectTest, FloatUnderBlock) { |
toLayoutBoxModelObject(getLayoutObjectByElementId("container")); |
LayoutObject* floating = getLayoutObjectByElementId("floating"); |
+ EXPECT_TRUE(container->canContainFloatingObject(*floating)); |
EXPECT_EQ(layeredDiv->layer(), layeredDiv->paintingLayer()); |
EXPECT_EQ(layeredDiv->layer(), floating->paintingLayer()); |
EXPECT_EQ(container, floating->container()); |
@@ -149,7 +150,7 @@ TEST_F(LayoutObjectTest, FloatUnderInline) { |
setBodyInnerHTML( |
"<div id='layered-div' style='position: absolute'>" |
" <div id='container'>" |
- " <span id='layered-span' style='position: relative'>" |
+ " <span id='stacked-span' style='position: relative'>" |
" <div id='floating' style='float: left'>FLOAT</div>" |
" </span>" |
" </div>" |
@@ -159,17 +160,18 @@ TEST_F(LayoutObjectTest, FloatUnderInline) { |
toLayoutBoxModelObject(getLayoutObjectByElementId("layered-div")); |
LayoutBoxModelObject* container = |
toLayoutBoxModelObject(getLayoutObjectByElementId("container")); |
- LayoutBoxModelObject* layeredSpan = |
- toLayoutBoxModelObject(getLayoutObjectByElementId("layered-span")); |
+ LayoutBoxModelObject* stackedSpan = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("stacked-span")); |
LayoutObject* floating = getLayoutObjectByElementId("floating"); |
+ EXPECT_FALSE(stackedSpan->canContainFloatingObject(*floating)); |
EXPECT_EQ(layeredDiv->layer(), layeredDiv->paintingLayer()); |
- EXPECT_EQ(layeredSpan->layer(), layeredSpan->paintingLayer()); |
+ EXPECT_EQ(stackedSpan->layer(), stackedSpan->paintingLayer()); |
EXPECT_EQ(layeredDiv->layer(), floating->paintingLayer()); |
EXPECT_EQ(container, floating->container()); |
EXPECT_EQ(container, floating->containingBlock()); |
- LayoutObject::AncestorSkipInfo skipInfo(layeredSpan); |
+ LayoutObject::AncestorSkipInfo skipInfo(stackedSpan); |
EXPECT_EQ(container, floating->container(&skipInfo)); |
EXPECT_TRUE(skipInfo.ancestorSkipped()); |
@@ -178,6 +180,112 @@ TEST_F(LayoutObjectTest, FloatUnderInline) { |
EXPECT_FALSE(skipInfo.ancestorSkipped()); |
} |
+TEST_F(LayoutObjectTest, StackedFloatUnderStaticInline) { |
+ setBodyInnerHTML( |
+ "<div id='layered-div' style='position: absolute'>" |
+ " <div id='container'>" |
+ " <span id='span'>" |
+ " <div id='floating' style='position: relative; float: left'>F</div>" |
+ " </span>" |
+ " </div>" |
+ "</div>"); |
+ |
+ LayoutBoxModelObject* layeredDiv = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("layered-div")); |
+ LayoutBoxModelObject* container = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("container")); |
+ LayoutObject* span = getLayoutObjectByElementId("span"); |
+ LayoutBoxModelObject* floating = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("floating")); |
+ |
+ EXPECT_FALSE(span->canContainFloatingObject(*floating)); |
+ EXPECT_EQ(layeredDiv->layer(), layeredDiv->paintingLayer()); |
+ EXPECT_EQ(layeredDiv->layer(), span->paintingLayer()); |
+ EXPECT_EQ(floating->layer(), floating->paintingLayer()); |
+ EXPECT_EQ(container, floating->container()); |
+ EXPECT_EQ(container, floating->containingBlock()); |
+ |
+ LayoutObject::AncestorSkipInfo skipInfo(span); |
+ EXPECT_EQ(container, floating->container(&skipInfo)); |
+ EXPECT_TRUE(skipInfo.ancestorSkipped()); |
+ |
+ skipInfo = LayoutObject::AncestorSkipInfo(container); |
+ EXPECT_EQ(container, floating->container(&skipInfo)); |
+ EXPECT_FALSE(skipInfo.ancestorSkipped()); |
+} |
+ |
+TEST_F(LayoutObjectTest, StackedFloatUnderStackedInline) { |
+ setBodyInnerHTML( |
+ "<div id='layered-div' style='position: absolute'>" |
+ " <div id='container'>" |
+ " <span id='stacked-span' style='position: relative'>" |
+ " <div id='floating' style='position: relative; float: left'>F</div>" |
+ " </span>" |
+ " </div>" |
+ "</div>"); |
+ |
+ LayoutBoxModelObject* layeredDiv = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("layered-div")); |
+ LayoutBoxModelObject* container = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("container")); |
+ LayoutBoxModelObject* stackedSpan = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("stacked-span")); |
+ LayoutBoxModelObject* floating = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("floating")); |
+ |
+ EXPECT_TRUE(stackedSpan->canContainFloatingObject(*floating)); |
+ EXPECT_EQ(layeredDiv->layer(), layeredDiv->paintingLayer()); |
+ EXPECT_EQ(stackedSpan->layer(), stackedSpan->paintingLayer()); |
+ EXPECT_EQ(floating->layer(), floating->paintingLayer()); |
+ EXPECT_EQ(stackedSpan, floating->container()); |
+ EXPECT_EQ(container, floating->containingBlock()); |
chrishtr
2017/01/21 02:14:59
Can you explain to me why containingBlock disagree
|
+ |
+ LayoutObject::AncestorSkipInfo skipInfo(stackedSpan); |
+ EXPECT_EQ(stackedSpan, floating->container(&skipInfo)); |
+ EXPECT_FALSE(skipInfo.ancestorSkipped()); |
+} |
+ |
+TEST_F(LayoutObjectTest, StackedFloatIndirectlyUnderStackedInline) { |
+ setBodyInnerHTML( |
+ "<div id='layered-div' style='position: absolute'>" |
+ " <div id='container'>" |
+ " <span id='stacked-span' style='opacity: 0.5'>" |
+ " <span id='span'>" |
+ " <div id='floating' style='position: relative; float: left'>" |
+ " FLOAT" |
+ " </div>" |
+ " </span>" |
+ " </span>" |
+ " </div>" |
+ "</div>"); |
+ |
+ LayoutBoxModelObject* layeredDiv = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("layered-div")); |
+ LayoutBoxModelObject* container = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("container")); |
+ LayoutBoxModelObject* stackedSpan = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("stacked-span")); |
+ LayoutObject* span = getLayoutObjectByElementId("span"); |
+ LayoutBoxModelObject* floating = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("floating")); |
+ |
+ EXPECT_TRUE(stackedSpan->canContainFloatingObject(*floating)); |
+ EXPECT_FALSE(span->canContainFloatingObject(*floating)); |
+ EXPECT_EQ(layeredDiv->layer(), layeredDiv->paintingLayer()); |
+ EXPECT_EQ(stackedSpan->layer(), stackedSpan->paintingLayer()); |
+ EXPECT_EQ(floating->layer(), floating->paintingLayer()); |
+ EXPECT_EQ(stackedSpan, floating->container()); |
+ EXPECT_EQ(container, floating->containingBlock()); |
+ |
+ LayoutObject::AncestorSkipInfo skipInfo(span); |
+ EXPECT_EQ(stackedSpan, floating->container(&skipInfo)); |
+ EXPECT_TRUE(skipInfo.ancestorSkipped()); |
+ |
+ skipInfo = LayoutObject::AncestorSkipInfo(stackedSpan); |
+ EXPECT_EQ(stackedSpan, floating->container(&skipInfo)); |
+ EXPECT_FALSE(skipInfo.ancestorSkipped()); |
+} |
+ |
TEST_F(LayoutObjectTest, MutableForPaintingClearPaintFlags) { |
LayoutObject* object = document().body()->layoutObject(); |
object->setShouldDoFullPaintInvalidation(); |