| Index: Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp
|
| diff --git a/Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp b/Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp
|
| index 719607c5ca475f7d9268619f57a29b3fdf2d1841..4a3192755170aadb39ac3f48fd6d06d2a8451543 100644
|
| --- a/Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp
|
| +++ b/Source/core/rendering/RenderMultiColumnFlowThreadTest.cpp
|
| @@ -7,7 +7,7 @@
|
| #include "core/rendering/RenderMultiColumnFlowThread.h"
|
|
|
| #include "core/rendering/RenderMultiColumnSet.h"
|
| -#include "core/rendering/RenderMultiColumnSpannerSet.h"
|
| +#include "core/rendering/RenderMultiColumnSpannerPlaceholder.h"
|
| #include "core/rendering/RenderingTestHelper.h"
|
|
|
| #include <gtest/gtest.h>
|
| @@ -20,9 +20,9 @@ class MultiColumnRenderingTest : public RenderingTest {
|
| public:
|
| RenderMultiColumnFlowThread* findFlowThread(const char* id) const;
|
|
|
| - // Generate a signature string based on what kind of column sets the flow thread has
|
| - // established. There will be one character for each column set. 'c' is used for regular column
|
| - // content sets, while 's' is used for spanner sets.
|
| + // Generate a signature string based on what kind of column boxes the flow thread has
|
| + // established. 'c' is used for regular column content sets, while 's' is used for spanners.
|
| + // '?' is used when there's an unknown box type (which should be considered a failure).
|
| String columnSetSignature(RenderMultiColumnFlowThread*);
|
| String columnSetSignature(const char* multicolId);
|
|
|
| @@ -43,11 +43,15 @@ RenderMultiColumnFlowThread* MultiColumnRenderingTest::findFlowThread(const char
|
| String MultiColumnRenderingTest::columnSetSignature(RenderMultiColumnFlowThread* flowThread)
|
| {
|
| String signature = "";
|
| - for (RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet(); columnSet; columnSet = columnSet->nextSiblingMultiColumnSet()) {
|
| - if (columnSet->isRenderMultiColumnSpannerSet())
|
| + for (RenderBox* columnBox = flowThread->firstMultiColumnBox();
|
| + columnBox;
|
| + columnBox = columnBox->nextSiblingMultiColumnBox()) {
|
| + if (columnBox->isRenderMultiColumnSpannerPlaceholder())
|
| signature.append('s');
|
| - else
|
| + else if (columnBox->isRenderMultiColumnSet())
|
| signature.append('c');
|
| + else
|
| + signature.append('?');
|
| }
|
| return signature;
|
| }
|
| @@ -119,8 +123,10 @@ TEST_F(MultiColumnRenderingTest, Spanner)
|
| setMulticolHTML("<div id='mc'><div id='spanner'></div></div>");
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| ASSERT_EQ(columnSetSignature(flowThread), "s");
|
| - RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner")->renderer()), columnSet);
|
| + RenderBox* columnBox = flowThread->firstMultiColumnBox();
|
| + EXPECT_EQ(flowThread->firstMultiColumnSet(), nullptr);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner")->renderer()), columnBox);
|
| + EXPECT_EQ(document().getElementById("spanner")->renderer()->spannerPlaceholder(), columnBox);
|
| }
|
|
|
| TEST_F(MultiColumnRenderingTest, ContentThenSpanner)
|
| @@ -129,9 +135,9 @@ TEST_F(MultiColumnRenderingTest, ContentThenSpanner)
|
| setMulticolHTML("<div id='mc'><div id='columnContent'></div><div id='spanner'></div></div>");
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| ASSERT_EQ(columnSetSignature(flowThread), "cs");
|
| - RenderMultiColumnSet* columnSet = flowThread->lastMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner")->renderer()), columnSet);
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("columnContent")->renderer()), nullptr);
|
| + RenderBox* columnBox = flowThread->lastMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner")->renderer()), columnBox);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("columnContent")->renderer()), nullptr);
|
| }
|
|
|
| TEST_F(MultiColumnRenderingTest, SpannerThenContent)
|
| @@ -140,9 +146,9 @@ TEST_F(MultiColumnRenderingTest, SpannerThenContent)
|
| setMulticolHTML("<div id='mc'><div id='spanner'></div><div id='columnContent'></div></div>");
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| ASSERT_EQ(columnSetSignature(flowThread), "sc");
|
| - RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner")->renderer()), columnSet);
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("columnContent")->renderer()), nullptr);
|
| + RenderBox* columnBox = flowThread->firstMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner")->renderer()), columnBox);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("columnContent")->renderer()), nullptr);
|
| }
|
|
|
| TEST_F(MultiColumnRenderingTest, ContentThenSpannerThenContent)
|
| @@ -152,10 +158,10 @@ TEST_F(MultiColumnRenderingTest, ContentThenSpannerThenContent)
|
| setMulticolHTML("<div id='mc'><div id='columnContentBefore'></div><div id='spanner'></div><div id='columnContentAfter'></div></div>");
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| ASSERT_EQ(columnSetSignature(flowThread), "csc");
|
| - RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet()->nextSiblingMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("columnContentBefore")->renderer()), nullptr);
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner")->renderer()), columnSet);
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("columnContentAfter")->renderer()), nullptr);
|
| + RenderBox* columnBox = flowThread->firstMultiColumnSet()->nextSiblingMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("columnContentBefore")->renderer()), nullptr);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner")->renderer()), columnBox);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("columnContentAfter")->renderer()), nullptr);
|
| }
|
|
|
| TEST_F(MultiColumnRenderingTest, TwoSpanners)
|
| @@ -164,10 +170,13 @@ TEST_F(MultiColumnRenderingTest, TwoSpanners)
|
| setMulticolHTML("<div id='mc'><div id='spanner1'></div><div id='spanner2'></div></div>");
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| ASSERT_EQ(columnSetSignature(flowThread), "ss");
|
| - RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner1")->renderer()), columnSet);
|
| - columnSet = columnSet->nextSiblingMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner2")->renderer()), columnSet);
|
| + RenderBox* columnBox = flowThread->firstMultiColumnBox();
|
| + EXPECT_EQ(flowThread->firstMultiColumnSet(), nullptr);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner1")->renderer()), columnBox);
|
| + EXPECT_EQ(document().getElementById("spanner1")->renderer()->spannerPlaceholder(), columnBox);
|
| + columnBox = columnBox->nextSiblingMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner2")->renderer()), columnBox);
|
| + EXPECT_EQ(document().getElementById("spanner2")->renderer()->spannerPlaceholder(), columnBox);
|
| }
|
|
|
| TEST_F(MultiColumnRenderingTest, SpannerThenContentThenSpanner)
|
| @@ -177,10 +186,14 @@ TEST_F(MultiColumnRenderingTest, SpannerThenContentThenSpanner)
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| ASSERT_EQ(columnSetSignature(flowThread), "scs");
|
| RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner1")->renderer()), columnSet);
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("columnContent")->renderer()), nullptr);
|
| - columnSet = columnSet->nextSiblingMultiColumnSet()->nextSiblingMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner2")->renderer()), columnSet);
|
| + EXPECT_EQ(columnSet->nextSiblingMultiColumnSet(), nullptr);
|
| + RenderBox* columnBox = flowThread->firstMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner1")->renderer()), columnBox);
|
| + columnBox = columnBox->nextSiblingMultiColumnBox();
|
| + EXPECT_EQ(columnBox, columnSet);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("columnContent")->renderer()), nullptr);
|
| + columnBox = columnBox->nextSiblingMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner2")->renderer()), columnBox);
|
| }
|
|
|
| TEST_F(MultiColumnRenderingTest, SpannerWithSpanner)
|
| @@ -189,10 +202,12 @@ TEST_F(MultiColumnRenderingTest, SpannerWithSpanner)
|
| setMulticolHTML("<div id='mc'><div id='spanner'><div id='invalidSpanner' class='s'></div></div></div>");
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| ASSERT_EQ(columnSetSignature(flowThread), "s");
|
| - RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner")->renderer()), columnSet);
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("invalidSpanner")->renderer()), columnSet);
|
| - EXPECT_EQ(toRenderMultiColumnSpannerSet(columnSet)->rendererInFlowThread(), document().getElementById("spanner")->renderer());
|
| + RenderBox* columnBox = flowThread->firstMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner")->renderer()), columnBox);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("invalidSpanner")->renderer()), columnBox);
|
| + EXPECT_EQ(toRenderMultiColumnSpannerPlaceholder(columnBox)->rendererInFlowThread(), document().getElementById("spanner")->renderer());
|
| + EXPECT_EQ(document().getElementById("spanner")->renderer()->spannerPlaceholder(), columnBox);
|
| + EXPECT_EQ(document().getElementById("invalidSpanner")->renderer()->spannerPlaceholder(), nullptr);
|
| }
|
|
|
| TEST_F(MultiColumnRenderingTest, SubtreeWithSpanner)
|
| @@ -200,12 +215,13 @@ TEST_F(MultiColumnRenderingTest, SubtreeWithSpanner)
|
| setMulticolHTML("<div id='mc'><div id='outer'><div id='block1'></div><div id='spanner'></div><div id='block2'></div></div></div>");
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| EXPECT_EQ(columnSetSignature(flowThread), "csc");
|
| - RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet()->nextSiblingMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner")->renderer()), columnSet);
|
| - EXPECT_EQ(toRenderMultiColumnSpannerSet(columnSet)->rendererInFlowThread(), document().getElementById("spanner")->renderer());
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("outer")->renderer()), nullptr);
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("block1")->renderer()), nullptr);
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("block2")->renderer()), nullptr);
|
| + RenderBox* columnBox = flowThread->firstMultiColumnSet()->nextSiblingMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner")->renderer()), columnBox);
|
| + EXPECT_EQ(document().getElementById("spanner")->renderer()->spannerPlaceholder(), columnBox);
|
| + EXPECT_EQ(toRenderMultiColumnSpannerPlaceholder(columnBox)->rendererInFlowThread(), document().getElementById("spanner")->renderer());
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("outer")->renderer()), nullptr);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("block1")->renderer()), nullptr);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("block2")->renderer()), nullptr);
|
| }
|
|
|
| TEST_F(MultiColumnRenderingTest, SubtreeWithSpannerAfterSpanner)
|
| @@ -213,14 +229,16 @@ TEST_F(MultiColumnRenderingTest, SubtreeWithSpannerAfterSpanner)
|
| setMulticolHTML("<div id='mc'><div id='spanner1'></div><div id='outer'>text<div id='spanner2'></div><div id='after'></div></div></div>");
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| EXPECT_EQ(columnSetSignature(flowThread), "scsc");
|
| - RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner1")->renderer()), columnSet);
|
| - EXPECT_EQ(toRenderMultiColumnSpannerSet(columnSet)->rendererInFlowThread(), document().getElementById("spanner1")->renderer());
|
| - columnSet = columnSet->nextSiblingMultiColumnSet()->nextSiblingMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner2")->renderer()), columnSet);
|
| - EXPECT_EQ(toRenderMultiColumnSpannerSet(columnSet)->rendererInFlowThread(), document().getElementById("spanner2")->renderer());
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("outer")->renderer()), nullptr);
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("after")->renderer()), nullptr);
|
| + RenderBox* columnBox = flowThread->firstMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner1")->renderer()), columnBox);
|
| + EXPECT_EQ(toRenderMultiColumnSpannerPlaceholder(columnBox)->rendererInFlowThread(), document().getElementById("spanner1")->renderer());
|
| + EXPECT_EQ(document().getElementById("spanner1")->renderer()->spannerPlaceholder(), columnBox);
|
| + columnBox = columnBox->nextSiblingMultiColumnBox()->nextSiblingMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner2")->renderer()), columnBox);
|
| + EXPECT_EQ(toRenderMultiColumnSpannerPlaceholder(columnBox)->rendererInFlowThread(), document().getElementById("spanner2")->renderer());
|
| + EXPECT_EQ(document().getElementById("spanner2")->renderer()->spannerPlaceholder(), columnBox);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("outer")->renderer()), nullptr);
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("after")->renderer()), nullptr);
|
| }
|
|
|
| TEST_F(MultiColumnRenderingTest, SubtreeWithSpannerBeforeSpanner)
|
| @@ -228,13 +246,15 @@ TEST_F(MultiColumnRenderingTest, SubtreeWithSpannerBeforeSpanner)
|
| setMulticolHTML("<div id='mc'><div id='outer'>text<div id='spanner1'></div>text</div><div id='spanner2'></div></div>");
|
| RenderMultiColumnFlowThread* flowThread = findFlowThread("mc");
|
| EXPECT_EQ(columnSetSignature(flowThread), "cscs");
|
| - RenderMultiColumnSet* columnSet = flowThread->firstMultiColumnSet()->nextSiblingMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner1")->renderer()), columnSet);
|
| - EXPECT_EQ(toRenderMultiColumnSpannerSet(columnSet)->rendererInFlowThread(), document().getElementById("spanner1")->renderer());
|
| - columnSet = columnSet->nextSiblingMultiColumnSet()->nextSiblingMultiColumnSet();
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("spanner2")->renderer()), columnSet);
|
| - EXPECT_EQ(toRenderMultiColumnSpannerSet(columnSet)->rendererInFlowThread(), document().getElementById("spanner2")->renderer());
|
| - EXPECT_EQ(flowThread->containingColumnSpannerSet(document().getElementById("outer")->renderer()), nullptr);
|
| + RenderBox* columnBox = flowThread->firstMultiColumnSet()->nextSiblingMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner1")->renderer()), columnBox);
|
| + EXPECT_EQ(document().getElementById("spanner1")->renderer()->spannerPlaceholder(), columnBox);
|
| + EXPECT_EQ(toRenderMultiColumnSpannerPlaceholder(columnBox)->rendererInFlowThread(), document().getElementById("spanner1")->renderer());
|
| + columnBox = columnBox->nextSiblingMultiColumnBox()->nextSiblingMultiColumnBox();
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("spanner2")->renderer()), columnBox);
|
| + EXPECT_EQ(document().getElementById("spanner2")->renderer()->spannerPlaceholder(), columnBox);
|
| + EXPECT_EQ(toRenderMultiColumnSpannerPlaceholder(columnBox)->rendererInFlowThread(), document().getElementById("spanner2")->renderer());
|
| + EXPECT_EQ(flowThread->containingColumnSpannerPlaceholder(document().getElementById("outer")->renderer()), nullptr);
|
| }
|
|
|
| } // anonymous namespace
|
|
|