| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/layout/LayoutTableSection.h" | 5 #include "core/layout/LayoutTableSection.h" |
| 6 | 6 |
| 7 #include "core/layout/LayoutTestHelper.h" | 7 #include "core/layout/LayoutTestHelper.h" |
| 8 | 8 |
| 9 namespace blink { | 9 namespace blink { |
| 10 | 10 |
| 11 namespace { | 11 namespace { |
| 12 | 12 |
| 13 using LayoutTableSectionTest = RenderingTest; | 13 using LayoutTableSectionTest = RenderingTest; |
| 14 | 14 |
| 15 TEST_F(LayoutTableSectionTest, | 15 TEST_F(LayoutTableSectionTest, |
| 16 BackgroundIsKnownToBeOpaqueWithLayerAndCollapsedBorder) { | 16 BackgroundIsKnownToBeOpaqueWithLayerAndCollapsedBorder) { |
| 17 setBodyInnerHTML( | 17 setBodyInnerHTML( |
| 18 "<table style='border-collapse: collapse'>" | 18 "<table style='border-collapse: collapse'>" |
| 19 " <thead style='will-change: transform; background-color: blue'>" | 19 " <thead id='section' style='will-change: transform; background-color: " |
| 20 "blue'>" |
| 20 " <tr><td>Cell</td></tr>" | 21 " <tr><td>Cell</td></tr>" |
| 21 " </thead>" | 22 " </thead>" |
| 22 "</table>"); | 23 "</table>"); |
| 23 | 24 |
| 24 LayoutTableSection* section = toLayoutTableSection( | 25 LayoutTableSection* section = |
| 25 document().body()->firstChild()->firstChild()->layoutObject()); | 26 toLayoutTableSection(getLayoutObjectByElementId("section")); |
| 27 EXPECT_TRUE(section); |
| 26 EXPECT_FALSE( | 28 EXPECT_FALSE( |
| 27 section->backgroundIsKnownToBeOpaqueInRect(LayoutRect(0, 0, 1, 1))); | 29 section->backgroundIsKnownToBeOpaqueInRect(LayoutRect(0, 0, 1, 1))); |
| 28 } | 30 } |
| 29 | 31 |
| 30 TEST_F(LayoutTableSectionTest, BackgroundIsKnownToBeOpaqueWithBorderSpacing) { | 32 TEST_F(LayoutTableSectionTest, BackgroundIsKnownToBeOpaqueWithBorderSpacing) { |
| 31 setBodyInnerHTML( | 33 setBodyInnerHTML( |
| 32 "<table style='border-spacing: 10px'>" | 34 "<table style='border-spacing: 10px'>" |
| 33 " <thead style='background-color: blue'>" | 35 " <thead id='section' style='background-color: blue'>" |
| 34 " <tr><td>Cell</td></tr>" | 36 " <tr><td>Cell</td></tr>" |
| 35 " </thead>" | 37 " </thead>" |
| 36 "</table>"); | 38 "</table>"); |
| 37 | 39 |
| 38 LayoutTableSection* section = toLayoutTableSection( | 40 LayoutTableSection* section = |
| 39 document().body()->firstChild()->firstChild()->layoutObject()); | 41 toLayoutTableSection(getLayoutObjectByElementId("section")); |
| 42 EXPECT_TRUE(section); |
| 40 EXPECT_FALSE( | 43 EXPECT_FALSE( |
| 41 section->backgroundIsKnownToBeOpaqueInRect(LayoutRect(0, 0, 1, 1))); | 44 section->backgroundIsKnownToBeOpaqueInRect(LayoutRect(0, 0, 1, 1))); |
| 42 } | 45 } |
| 43 | 46 |
| 44 TEST_F(LayoutTableSectionTest, BackgroundIsKnownToBeOpaqueWithEmptyCell) { | 47 TEST_F(LayoutTableSectionTest, BackgroundIsKnownToBeOpaqueWithEmptyCell) { |
| 45 setBodyInnerHTML( | 48 setBodyInnerHTML( |
| 46 "<table style='border-spacing: 10px'>" | 49 "<table style='border-spacing: 10px'>" |
| 47 " <thead style='background-color: blue'>" | 50 " <thead id='section' style='background-color: blue'>" |
| 48 " <tr><td>Cell</td></tr>" | 51 " <tr><td>Cell</td></tr>" |
| 49 " <tr><td>Cell</td><td>Cell</td></tr>" | 52 " <tr><td>Cell</td><td>Cell</td></tr>" |
| 50 " </thead>" | 53 " </thead>" |
| 51 "</table>"); | 54 "</table>"); |
| 52 | 55 |
| 53 LayoutTableSection* section = toLayoutTableSection( | 56 LayoutTableSection* section = |
| 54 document().body()->firstChild()->firstChild()->layoutObject()); | 57 toLayoutTableSection(getLayoutObjectByElementId("section")); |
| 58 EXPECT_TRUE(section); |
| 55 EXPECT_FALSE( | 59 EXPECT_FALSE( |
| 56 section->backgroundIsKnownToBeOpaqueInRect(LayoutRect(0, 0, 1, 1))); | 60 section->backgroundIsKnownToBeOpaqueInRect(LayoutRect(0, 0, 1, 1))); |
| 57 } | 61 } |
| 58 | 62 |
| 59 TEST_F(LayoutTableSectionTest, EmptySectionDirtiedRows) { | 63 TEST_F(LayoutTableSectionTest, EmptySectionDirtiedRows) { |
| 60 setBodyInnerHTML( | 64 setBodyInnerHTML( |
| 61 "<table style='border: 100px solid red'>" | 65 "<table style='border: 100px solid red'>" |
| 62 " <thead id='section'></thead>" | 66 " <thead id='section'></thead>" |
| 63 "</table>"); | 67 "</table>"); |
| 64 | 68 |
| 65 LayoutTableSection* section = | 69 LayoutTableSection* section = |
| 66 toLayoutTableSection(getLayoutObjectByElementId("section")); | 70 toLayoutTableSection(getLayoutObjectByElementId("section")); |
| 71 EXPECT_TRUE(section); |
| 67 CellSpan cellSpan = section->dirtiedRows(LayoutRect(50, 50, 100, 100)); | 72 CellSpan cellSpan = section->dirtiedRows(LayoutRect(50, 50, 100, 100)); |
| 68 EXPECT_EQ(0u, cellSpan.start()); | 73 EXPECT_EQ(0u, cellSpan.start()); |
| 69 EXPECT_EQ(0u, cellSpan.end()); | 74 EXPECT_EQ(0u, cellSpan.end()); |
| 70 } | 75 } |
| 71 | 76 |
| 72 TEST_F(LayoutTableSectionTest, EmptySectionDirtiedEffectiveColumns) { | 77 TEST_F(LayoutTableSectionTest, EmptySectionDirtiedEffectiveColumns) { |
| 73 setBodyInnerHTML( | 78 setBodyInnerHTML( |
| 74 "<table style='border: 100px solid red'>" | 79 "<table style='border: 100px solid red'>" |
| 75 " <thead id='section'></thead>" | 80 " <thead id='section'></thead>" |
| 76 "</table>"); | 81 "</table>"); |
| 77 | 82 |
| 78 LayoutTableSection* section = | 83 LayoutTableSection* section = |
| 79 toLayoutTableSection(getLayoutObjectByElementId("section")); | 84 toLayoutTableSection(getLayoutObjectByElementId("section")); |
| 85 EXPECT_TRUE(section); |
| 80 CellSpan cellSpan = | 86 CellSpan cellSpan = |
| 81 section->dirtiedEffectiveColumns(LayoutRect(50, 50, 100, 100)); | 87 section->dirtiedEffectiveColumns(LayoutRect(50, 50, 100, 100)); |
| 82 // The table has at least 1 column even if there is no cell. | 88 // The table has at least 1 column even if there is no cell. |
| 83 EXPECT_EQ(1u, section->table()->numEffectiveColumns()); | 89 EXPECT_EQ(1u, section->table()->numEffectiveColumns()); |
| 84 EXPECT_EQ(1u, cellSpan.start()); | 90 EXPECT_EQ(1u, cellSpan.start()); |
| 85 EXPECT_EQ(1u, cellSpan.end()); | 91 EXPECT_EQ(1u, cellSpan.end()); |
| 86 } | 92 } |
| 87 | 93 |
| 88 } // anonymous namespace | 94 } // anonymous namespace |
| 89 | 95 |
| 90 } // namespace blink | 96 } // namespace blink |
| OLD | NEW |