Chromium Code Reviews| 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 99b80a6cfbac67a2c5b8653f5a92aa66d06c054c..7ff044fdf22ede2493db001096aad2ac78c7c7b0 100644 |
| --- a/third_party/WebKit/Source/core/layout/LayoutTableCellTest.cpp |
| +++ b/third_party/WebKit/Source/core/layout/LayoutTableCellTest.cpp |
| @@ -79,6 +79,9 @@ class LayoutTableCellTest : public RenderingTest { |
| bool HasEndBorderAdjoiningTable(const LayoutTableCell* cell) { |
| return cell->HasEndBorderAdjoiningTable(); |
| } |
| + LayoutRect LocalVisualRect(const LayoutTableCell* cell) { |
| + return cell->LocalVisualRect(); |
| + } |
| LayoutTableCell* GetCellByElementId(const char* id) { |
| return ToLayoutTableCell(GetLayoutObjectByElementId(id)); |
| @@ -251,4 +254,47 @@ TEST_F(LayoutTableCellTest, HasBorderAdjoiningTableRTL) { |
| EXPECT_FALSE(HasEndBorderAdjoiningTable(cell32)); |
| } |
| +TEST_F(LayoutTableCellTest, LocalVisualRectWithCollapedBorders) { |
|
wkorman
2017/05/08 17:51:23
Collaped -> Collapsed
Xianzhu
2017/05/09 03:55:42
Done.
|
| + SetBodyInnerHTML( |
| + "<style>" |
| + " table { border-collapse: collapse }" |
| + " td { border: 0px solid blue; padding: 0 }" |
| + " div { width: 100px; height: 100px }" |
| + "</style>" |
| + "<table>" |
| + " <tr>" |
| + " <td id='cell1' style='border-bottom-width: 10px;" |
| + " outline: 3px solid blue'><div></div></td>" |
| + " <td id='cell2' style='border-width: 3px 15px'><div></div></td>" |
| + " </tr>" |
| + "</table>"); |
| + |
| + auto* cell1 = GetCellByElementId("cell1"); |
| + auto* cell2 = GetCellByElementId("cell2"); |
| + EXPECT_TRUE(cell1->Table()->ShouldCollapseBorders()); |
| + |
| + EXPECT_EQ(0, cell1->BorderLeft()); |
| + EXPECT_EQ(7, cell1->BorderRight()); |
| + EXPECT_EQ(0, cell1->BorderTop()); |
| + EXPECT_EQ(5, cell1->BorderBottom()); |
| + EXPECT_EQ(8, cell2->BorderLeft()); |
| + EXPECT_EQ(7, cell2->BorderRight()); |
| + EXPECT_EQ(2, cell2->BorderTop()); |
| + EXPECT_EQ(1, cell2->BorderBottom()); |
| + |
| + LayoutRect expected_visual_rect1 = cell1->BorderBoxRect(); |
| + // Expand top, left for outline, right and bottom for collapsed border. |
| + expected_visual_rect1.ExpandEdges(LayoutUnit(3), LayoutUnit(8), LayoutUnit(5), |
| + LayoutUnit(3)); |
| + EXPECT_EQ(expected_visual_rect1, LocalVisualRect(cell1)); |
| + |
| + LayoutRect expected_visual_rect2 = cell2->BorderBoxRect(); |
| + // Expand outer half border width at each side. For the bottom side, expand |
| + // more because the left border is lengthened to cover the joint with the |
| + // bottom border of the cell to the left. |
| + expected_visual_rect2.ExpandEdges(LayoutUnit(1), LayoutUnit(8), LayoutUnit(5), |
| + LayoutUnit(7)); |
| + EXPECT_EQ(expected_visual_rect2, LocalVisualRect(cell2)); |
| +} |
| + |
| } // namespace blink |