Index: third_party/WebKit/Source/core/layout/LayoutTableCellTest.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutTableCellTest.cpp b/third_party/WebKit/Source/core/layout/LayoutTableCellTest.cpp |
index 8ae6c8cdd6f6fb8cd4d74e6daa11b5b003d5fcdd..054b13fe255fcd5df459d944f43178059dfa3ee3 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutTableCellTest.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutTableCellTest.cpp |
@@ -245,6 +245,80 @@ TEST_F(LayoutTableCellTest, HasBorderAdjoiningTableRTL) { |
EXPECT_FALSE(HasEndBorderAdjoiningTable(cell32)); |
} |
+TEST_F(LayoutTableCellTest, EffectiveColumnIndex) { |
+ SetBodyInnerHTML( |
+ "<table id='table'>" |
+ " <tr>" |
+ " <td id='cell11' colspan='2000'></td>" |
+ " <td id='cell12'></td>" |
+ " <td id='cell13'></td>" |
+ " </tr>" |
+ " <tr>" |
+ " <td id='cell21' rowspan='2'></td>" |
+ " <td id='cell22'></td>" |
+ " <td id='cell23' colspan='2000'></td>" |
+ " </tr>" |
+ " <tr>" |
+ " <td id='cell31'></td>" |
+ " <td id='cell32'></td>" |
+ " </tr>" |
+ "</table>"); |
+ |
+ // Effective column spans of absolute columns: |
+ // 1 1 1 1997 1 1 |
+ // +-------------------+---+---+ |
+ // | 4 (2000) | 1 | 1 | |
+ // |-------+-----------+---+---+ |
+ // | | 1 | 4 (2000) | |
+ // | 1 |---+---+---------------| |
+ // | | 1 | 1 | |
+ // +---+---+---+ |
+ // Each number not in () is the span of effective columns of the cell. |
+ // Each number in () is the span of absolute columns of the cell if it's |
+ // different from the span of effective columns. |
+ |
+ const auto* cell11 = GetCellByElementId("cell11"); |
+ EXPECT_EQ(6u, cell11->Table()->NumEffectiveColumns()); |
+ EXPECT_EQ(0u, cell11->EffectiveColumnIndex()); |
+ EXPECT_EQ(0u, cell11->AbsoluteColumnIndex()); |
+ EXPECT_EQ(4u, cell11->EffectiveColumnIndexOfCellAfter()); |
+ |
+ const auto* cell12 = GetCellByElementId("cell12"); |
+ EXPECT_EQ(4u, cell12->EffectiveColumnIndex()); |
+ EXPECT_EQ(2000u, cell12->AbsoluteColumnIndex()); |
+ EXPECT_EQ(5u, cell12->EffectiveColumnIndexOfCellAfter()); |
+ |
+ const auto* cell13 = GetCellByElementId("cell13"); |
+ EXPECT_EQ(5u, cell13->EffectiveColumnIndex()); |
+ EXPECT_EQ(2001u, cell13->AbsoluteColumnIndex()); |
+ EXPECT_EQ(6u, cell13->EffectiveColumnIndexOfCellAfter()); |
+ |
+ const auto* cell21 = GetCellByElementId("cell21"); |
+ EXPECT_EQ(0u, cell21->EffectiveColumnIndex()); |
+ EXPECT_EQ(0u, cell21->AbsoluteColumnIndex()); |
+ EXPECT_EQ(1u, cell21->EffectiveColumnIndexOfCellAfter()); |
+ |
+ const auto* cell22 = GetCellByElementId("cell22"); |
+ EXPECT_EQ(1u, cell22->EffectiveColumnIndex()); |
+ EXPECT_EQ(1u, cell22->AbsoluteColumnIndex()); |
+ EXPECT_EQ(2u, cell22->EffectiveColumnIndexOfCellAfter()); |
+ |
+ const auto* cell23 = GetCellByElementId("cell23"); |
+ EXPECT_EQ(2u, cell23->EffectiveColumnIndex()); |
+ EXPECT_EQ(2u, cell23->AbsoluteColumnIndex()); |
+ EXPECT_EQ(6u, cell23->EffectiveColumnIndexOfCellAfter()); |
+ |
+ const auto* cell31 = GetCellByElementId("cell31"); |
+ EXPECT_EQ(1u, cell31->EffectiveColumnIndex()); |
+ EXPECT_EQ(1u, cell31->AbsoluteColumnIndex()); |
+ EXPECT_EQ(2u, cell31->EffectiveColumnIndexOfCellAfter()); |
+ |
+ const auto* cell32 = GetCellByElementId("cell32"); |
+ EXPECT_EQ(2u, cell32->EffectiveColumnIndex()); |
+ EXPECT_EQ(2u, cell32->AbsoluteColumnIndex()); |
+ EXPECT_EQ(3u, cell32->EffectiveColumnIndexOfCellAfter()); |
+} |
+ |
TEST_F(LayoutTableCellTest, LocalVisualRectWithCollapsedBorders) { |
SetBodyInnerHTML( |
"<style>" |