Chromium Code Reviews| 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(); |