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 |