| 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
|
|
|