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

Unified Diff: Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp

Issue 869583002: [New Multicolumn] Support dynamic insertion and removal of multicol content. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: code review Created 5 years, 11 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: Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp
diff --git a/Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp b/Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp
index e5407a90b93423fd7182535f7be3b6a8b4eb16ae..750bdc70cfc64e40e2b9327673d1b44dc2062f76 100644
--- a/Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp
+++ b/Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp
@@ -341,6 +341,466 @@ TEST_F(MultiColumnRenderingTest, columnSetAtBlockOffsetVerticalLr)
EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(10000)), thirdRow); // overflow
}
+class MultiColumnTreeModifyingTest : public MultiColumnRenderingTest {
+public:
+ void setMulticolHTML(const char*);
+ void reparentRenderer(const char* newParentId, const char* childId, const char* insertBeforeId = 0);
+ void destroyRenderer(RenderObject* child);
+ void destroyRenderer(const char* childId);
+};
+
+void MultiColumnTreeModifyingTest::setMulticolHTML(const char* html)
+{
+ MultiColumnRenderingTest::setMulticolHTML(html);
+ // Allow modifications to the render tree structure, because that's what we want to test.
+ document().lifecycle().advanceTo(DocumentLifecycle::InStyleRecalc);
+}
+
+void MultiColumnTreeModifyingTest::reparentRenderer(const char* newParentId, const char* childId, const char* insertBeforeId)
+{
+ RenderObject* newParent = document().getElementById(newParentId)->renderer();
+ RenderObject* child = document().getElementById(childId)->renderer();
+ RenderObject* insertBefore = insertBeforeId ? document().getElementById(insertBeforeId)->renderer() : 0;
+ child->remove();
+ newParent->addChild(child, insertBefore);
+}
+
+void MultiColumnTreeModifyingTest::destroyRenderer(RenderObject* child)
+{
+ // Remove and destroy in separate steps, so that we get to test removal of subtrees.
+ child->remove();
+ child->node()->detach();
+}
+
+void MultiColumnTreeModifyingTest::destroyRenderer(const char* childId)
+{
+ destroyRenderer(document().getElementById(childId)->renderer());
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertFirstContentAndRemove)
+{
+ setMulticolHTML("<div id='block'></div><div id='mc'></div>");
+ RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
+ RenderBlockFlow* block = toRenderBlockFlow(document().getElementById("block")->renderer());
+ RenderBlockFlow* multicolContainer = toRenderBlockFlow(document().getElementById("mc")->renderer());
+ block->remove();
+ multicolContainer->addChild(block);
+ EXPECT_EQ(block->parent(), flowThread);
+ // A set should have appeared, now that the multicol container has content.
+ EXPECT_EQ(columnSetSignature(flowThread), "c");
+
+ destroyRenderer(block);
+ // The set should be gone again now, since there's nothing inside the multicol container anymore.
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertContentBeforeContentAndRemove)
+{
+ setMulticolHTML("<div id='block'></div><div id='mc'><div id='insertBefore'></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+ reparentRenderer("mc", "block", "insertBefore");
+ // There was already some content prior to our insertion, so no new set should be inserted.
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+ destroyRenderer("block");
+ // There's still some content after the removal, so the set should remain.
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertContentAfterContentAndRemove)
+{
+ setMulticolHTML("<div id='block'></div><div id='mc'><div></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+ reparentRenderer("mc", "block");
+ // There was already some content prior to our insertion, so no new set should be inserted.
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+ destroyRenderer("block");
+ // There's still some content after the removal, so the set should remain.
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'></div>");
+ RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
+ RenderBlockFlow* spanner = toRenderBlockFlow(document().getElementById("spanner")->renderer());
+ RenderBlockFlow* multicolContainer = toRenderBlockFlow(document().getElementById("mc")->renderer());
+ spanner->remove();
+ multicolContainer->addChild(spanner);
+ EXPECT_EQ(spanner->parent(), flowThread);
+ // We should now have a spanner placeholder, since we just moved a spanner into the multicol container.
+ EXPECT_EQ(columnSetSignature(flowThread), "s");
+ destroyRenderer(spanner);
+ EXPECT_EQ(columnSetSignature(flowThread), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertTwoSpannersAndRemove)
+{
+ setMulticolHTML("<div id='block'>ee<div class='s'></div><div class='s'></div></div><div id='mc'></div>");
+ reparentRenderer("mc", "block");
+ EXPECT_EQ(columnSetSignature("mc"), "css");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerAfterContentAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div></div>");
+ reparentRenderer("mc", "spanner");
+ // We should now have a spanner placeholder, since we just moved a spanner into the multicol container.
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerBeforeContentAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'><div id='columnContent'></div></div>");
+ reparentRenderer("mc", "spanner", "columnContent");
+ // We should now have a spanner placeholder, since we just moved a spanner into the multicol container.
+ EXPECT_EQ(columnSetSignature("mc"), "sc");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerBetweenContentAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div><div id='insertBefore'></div></div>");
+ reparentRenderer("mc", "spanner", "insertBefore");
+ // Since the spanner was inserted in the middle of column content, what used to be one column
+ // set had to be split in two, in order to get a spot to insert the spanner placeholder.
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("spanner");
+ // The spanner placeholder should be gone again now, and the two sets be merged into one.
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithContentAndSpannerAndRemove)
+{
+ setMulticolHTML("<div id='block'>text<div id='spanner'></div>text</div><div id='mc'></div>");
+ reparentRenderer("mc", "block");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertInsideSpannerAndRemove)
+{
+ setMulticolHTML("<div id='block'>text</div><div id='mc'><div id='spanner'></div></div>");
+ reparentRenderer("spanner", "block");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerInContentBeforeSpannerAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div><div id='insertBefore'></div><div class='s'></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+ reparentRenderer("mc", "spanner", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "cscs");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerInContentAfterSpannerAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'><div class='s'></div><div></div><div id='insertBefore'></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "sc");
+ reparentRenderer("mc", "spanner", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "scsc");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "sc");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerAfterSpannerAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'><div class='s'></div></div>");
+ reparentRenderer("mc", "spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "ss");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerBeforeSpannerAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'><div id='insertBefore' class='s'></div></div>");
+ reparentRenderer("mc", "spanner", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "ss");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertContentBeforeSpannerAndRemove)
+{
+ setMulticolHTML("<div id='block'></div><div id='mc'><div id='insertBefore' class='s'></div></div>");
+ reparentRenderer("mc", "block", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertContentAfterContentBeforeSpannerAndRemove)
+{
+ setMulticolHTML("<div id='block'></div><div id='mc'>text<div id='insertBefore' class='s'></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+ reparentRenderer("mc", "block", "insertBefore");
+ // There was already some content before the spanner prior to our insertion, so no new set
+ // should be inserted.
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertContentAfterContentAndSpannerAndRemove)
+{
+ setMulticolHTML("<div id='block'></div><div id='mc'>content<div class='s'></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+ reparentRenderer("mc", "block");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertContentBeforeSpannerAndContentAndRemove)
+{
+ setMulticolHTML("<div id='block'></div><div id='mc'><div id='insertBefore' class='s'></div>content</div>");
+ EXPECT_EQ(columnSetSignature("mc"), "sc");
+ reparentRenderer("mc", "block", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "sc");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerIntoContentBeforeSpannerAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div><div id='insertBefore'></div><div class='s'></div><div class='s'></div><div></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cssc");
+ reparentRenderer("mc", "spanner", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "cscssc");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "cssc");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerIntoContentAfterSpannerAndRemove)
+{
+ setMulticolHTML("<div id='spanner'></div><div id='mc'><div></div><div class='s'></div><div class='s'></div><div></div><div id='insertBefore'></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cssc");
+ reparentRenderer("mc", "spanner", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "csscsc");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "cssc");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertInvalidSpannerAndRemove)
+{
+ setMulticolHTML("<div class='s' id='invalidSpanner'></div><div id='mc'><div id='spanner'></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+ reparentRenderer("spanner", "invalidSpanner");
+ // It's not allowed to nest spanners.
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+ destroyRenderer("invalidSpanner");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSpannerWithInvalidSpannerAndRemove)
+{
+ setMulticolHTML("<div id='spanner'><div class='s' id='invalidSpanner'></div></div><div id='mc'></div>");
+ reparentRenderer("mc", "spanner");
+ // It's not allowed to nest spanners.
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertInvalidSpannerInSpannerBetweenContentAndRemove)
+{
+ setMulticolHTML("<div class='s' id='invalidSpanner'></div><div id='mc'>text<div id='spanner'></div>text</div>");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ reparentRenderer("spanner", "invalidSpanner");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("invalidSpanner");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertContentAndSpannerAndRemove)
+{
+ setMulticolHTML("<div id='block'>text<div id='spanner'></div></div><div id='mc'>text</div>");
+ reparentRenderer("mc", "block");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertContentAndSpannerAndContentAndRemove)
+{
+ setMulticolHTML("<div id='block'><div id='spanner'></div>text</div><div id='mc'></div>");
+ reparentRenderer("mc", "block");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerAndRemove)
+{
+ setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id='mc'></div>");
+ reparentRenderer("mc", "block");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerAfterContentAndRemove)
+{
+ setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id='mc'>column content</div>");
+ reparentRenderer("mc", "block");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerBeforeContentAndRemove)
+{
+ setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id='mc'><div id='insertBefore'>column content</div></div>");
+ reparentRenderer("mc", "block", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerInsideContentAndRemove)
+{
+ setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id='mc'><div>outside<div id='insertBefore'>outside</div></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+ reparentRenderer("mc", "block", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerAfterSpannerAndRemove)
+{
+ setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id='mc'><div class='s'></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+ reparentRenderer("mc", "block");
+ EXPECT_EQ(columnSetSignature("mc"), "scsc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, InsertSubtreeWithSpannerBeforeSpannerAndRemove)
+{
+ setMulticolHTML("<div id='block'>text<div class='s'></div>text</div><div id='mc'><div id='insertBefore' class='s'></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+ reparentRenderer("mc", "block", "insertBefore");
+ EXPECT_EQ(columnSetSignature("mc"), "cscs");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "s");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndContent)
+{
+ setMulticolHTML("<div id='mc'><div id='block'>text<div class='s'></div>text</div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndSomeContentBefore)
+{
+ setMulticolHTML("<div id='mc'>text<div id='block'>text<div class='s'></div></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndAllContentBefore)
+{
+ setMulticolHTML("<div id='mc'><div id='block'>text<div class='s'></div></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cs");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndAllContentBeforeWithContentAfter)
+{
+ setMulticolHTML("<div id='mc'><div id='block'>text<div class='s'></div></div>text</div>");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndSomeContentAfter)
+{
+ setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div>text</div>text</div>");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndAllContentAfter)
+{
+ setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div>text</div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndAllContentAfterWithContentBefore)
+{
+ setMulticolHTML("<div id='mc'>text<div id='block'><div class='s'></div>text</div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveTwoSpannersBeforeContent)
+{
+ setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div><div class='s'></div></div>text</div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cssc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndContentAndSpanner)
+{
+ setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div>text<div class='s'></div>text</div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cscsc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndContentAndSpannerBeforeContent)
+{
+ setMulticolHTML("<div id='mc'><div id='block'><div class='s'></div>text<div class='s'></div></div>text</div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cscsc");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerAndContentAndSpannerAfterContent)
+{
+ setMulticolHTML("<div id='mc'>text<div id='block'><div class='s'></div>text<div class='s'></div></div></div>");
+ EXPECT_EQ(columnSetSignature("mc"), "cscs");
+ destroyRenderer("block");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveInvalidSpannerInSpannerBetweenContent)
+{
+ setMulticolHTML("<div id='mc'>text<div class='s'><div id='spanner'></div></div>text</div>");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+}
+
+TEST_F(MultiColumnTreeModifyingTest, RemoveSpannerWithInvalidSpannerBetweenContent)
+{
+ setMulticolHTML("<div id='mc'>text<div id='spanner'><div class='s'></div></div>text</div>");
+ EXPECT_EQ(columnSetSignature("mc"), "csc");
+ destroyRenderer("spanner");
+ EXPECT_EQ(columnSetSignature("mc"), "c");
+}
+
} // anonymous namespace
} // namespace blink
« no previous file with comments | « Source/core/rendering/RenderMultiColumnFlowThread.cpp ('k') | Source/core/rendering/RenderMultiColumnSpannerPlaceholder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698