OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/LayoutBox.h" | 5 #include "core/layout/LayoutBox.h" |
6 | 6 |
7 #include "core/html/HTMLElement.h" | 7 #include "core/html/HTMLElement.h" |
8 #include "core/layout/ImageQualityController.h" | 8 #include "core/layout/ImageQualityController.h" |
9 #include "core/layout/LayoutTestHelper.h" | 9 #include "core/layout/LayoutTestHelper.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 "#target5 { background: none border-box, green content-box;}" | 48 "#target5 { background: none border-box, green content-box;}" |
49 "#target6 { background: green content-box local; }" | 49 "#target6 { background: green content-box local; }" |
50 "</style>" | 50 "</style>" |
51 "<div id='target1'></div>" | 51 "<div id='target1'></div>" |
52 "<div id='target2'></div>" | 52 "<div id='target2'></div>" |
53 "<div id='target3'></div>" | 53 "<div id='target3'></div>" |
54 "<div id='target4'></div>" | 54 "<div id='target4'></div>" |
55 "<div id='target5'></div>" | 55 "<div id='target5'></div>" |
56 "<div id='target6'></div>"); | 56 "<div id='target6'></div>"); |
57 | 57 |
58 // #target1's opaque background color only fills the content box but its trans
lucent image extends to the borders. | 58 // #target1's opaque background color only fills the content box but its |
| 59 // translucent image extends to the borders. |
59 LayoutBox* layoutBox = toLayoutBox(getLayoutObjectByElementId("target1")); | 60 LayoutBox* layoutBox = toLayoutBox(getLayoutObjectByElementId("target1")); |
60 EXPECT_EQ(LayoutRect(20, 20, 100, 100), | 61 EXPECT_EQ(LayoutRect(20, 20, 100, 100), |
61 layoutBox->backgroundRect(BackgroundKnownOpaqueRect)); | 62 layoutBox->backgroundRect(BackgroundKnownOpaqueRect)); |
62 EXPECT_EQ(LayoutRect(0, 0, 140, 140), | 63 EXPECT_EQ(LayoutRect(0, 0, 140, 140), |
63 layoutBox->backgroundRect(BackgroundClipRect)); | 64 layoutBox->backgroundRect(BackgroundClipRect)); |
64 | 65 |
65 // #target2's background color is opaque but only fills the padding-box becaus
e it has local attachment. | 66 // #target2's background color is opaque but only fills the padding-box |
66 // This eclipses the content-box image. | 67 // because it has local attachment. This eclipses the content-box image. |
67 layoutBox = toLayoutBox(getLayoutObjectByElementId("target2")); | 68 layoutBox = toLayoutBox(getLayoutObjectByElementId("target2")); |
68 EXPECT_EQ(LayoutRect(10, 10, 120, 120), | 69 EXPECT_EQ(LayoutRect(10, 10, 120, 120), |
69 layoutBox->backgroundRect(BackgroundKnownOpaqueRect)); | 70 layoutBox->backgroundRect(BackgroundKnownOpaqueRect)); |
70 EXPECT_EQ(LayoutRect(10, 10, 120, 120), | 71 EXPECT_EQ(LayoutRect(10, 10, 120, 120), |
71 layoutBox->backgroundRect(BackgroundClipRect)); | 72 layoutBox->backgroundRect(BackgroundClipRect)); |
72 | 73 |
73 // #target3's background color is not opaque so we only have a clip rect. | 74 // #target3's background color is not opaque so we only have a clip rect. |
74 layoutBox = toLayoutBox(getLayoutObjectByElementId("target3")); | 75 layoutBox = toLayoutBox(getLayoutObjectByElementId("target3")); |
75 EXPECT_TRUE(layoutBox->backgroundRect(BackgroundKnownOpaqueRect).isEmpty()); | 76 EXPECT_TRUE(layoutBox->backgroundRect(BackgroundKnownOpaqueRect).isEmpty()); |
76 EXPECT_EQ(LayoutRect(0, 0, 140, 140), | 77 EXPECT_EQ(LayoutRect(0, 0, 140, 140), |
77 layoutBox->backgroundRect(BackgroundClipRect)); | 78 layoutBox->backgroundRect(BackgroundClipRect)); |
78 | 79 |
79 // #target4's background color has a blend mode so it isn't opaque. | 80 // #target4's background color has a blend mode so it isn't opaque. |
80 layoutBox = toLayoutBox(getLayoutObjectByElementId("target4")); | 81 layoutBox = toLayoutBox(getLayoutObjectByElementId("target4")); |
81 EXPECT_TRUE(layoutBox->backgroundRect(BackgroundKnownOpaqueRect).isEmpty()); | 82 EXPECT_TRUE(layoutBox->backgroundRect(BackgroundKnownOpaqueRect).isEmpty()); |
82 EXPECT_EQ(LayoutRect(0, 0, 140, 140), | 83 EXPECT_EQ(LayoutRect(0, 0, 140, 140), |
83 layoutBox->backgroundRect(BackgroundClipRect)); | 84 layoutBox->backgroundRect(BackgroundClipRect)); |
84 | 85 |
85 // #target5's solid background only covers the content-box but it has a "none"
background | 86 // #target5's solid background only covers the content-box but it has a "none" |
86 // covering the border box. | 87 // background covering the border box. |
87 layoutBox = toLayoutBox(getLayoutObjectByElementId("target5")); | 88 layoutBox = toLayoutBox(getLayoutObjectByElementId("target5")); |
88 EXPECT_EQ(LayoutRect(20, 20, 100, 100), | 89 EXPECT_EQ(LayoutRect(20, 20, 100, 100), |
89 layoutBox->backgroundRect(BackgroundKnownOpaqueRect)); | 90 layoutBox->backgroundRect(BackgroundKnownOpaqueRect)); |
90 EXPECT_EQ(LayoutRect(0, 0, 140, 140), | 91 EXPECT_EQ(LayoutRect(0, 0, 140, 140), |
91 layoutBox->backgroundRect(BackgroundClipRect)); | 92 layoutBox->backgroundRect(BackgroundClipRect)); |
92 | 93 |
93 // Because it can scroll due to local attachment, the opaque local background
in #target6 | 94 // Because it can scroll due to local attachment, the opaque local background |
94 // is treated as padding box for the clip rect, but remains the content box fo
r the known | 95 // in #target6 is treated as padding box for the clip rect, but remains the |
95 // opaque rect. | 96 // content box for the known opaque rect. |
96 layoutBox = toLayoutBox(getLayoutObjectByElementId("target6")); | 97 layoutBox = toLayoutBox(getLayoutObjectByElementId("target6")); |
97 EXPECT_EQ(LayoutRect(20, 20, 100, 100), | 98 EXPECT_EQ(LayoutRect(20, 20, 100, 100), |
98 layoutBox->backgroundRect(BackgroundKnownOpaqueRect)); | 99 layoutBox->backgroundRect(BackgroundKnownOpaqueRect)); |
99 EXPECT_EQ(LayoutRect(10, 10, 120, 120), | 100 EXPECT_EQ(LayoutRect(10, 10, 120, 120), |
100 layoutBox->backgroundRect(BackgroundClipRect)); | 101 layoutBox->backgroundRect(BackgroundClipRect)); |
101 } | 102 } |
102 | 103 |
103 TEST_F(LayoutBoxTest, LocationContainer) { | 104 TEST_F(LayoutBoxTest, LocationContainer) { |
104 setBodyInnerHTML( | 105 setBodyInnerHTML( |
105 "<div id='div'>" | 106 "<div id='div'>" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 const LayoutBox* row2 = toLayoutBox(getLayoutObjectByElementId("row2")); | 176 const LayoutBox* row2 = toLayoutBox(getLayoutObjectByElementId("row2")); |
176 EXPECT_EQ(LayoutPoint(100, 0), row2->location()); | 177 EXPECT_EQ(LayoutPoint(100, 0), row2->location()); |
177 EXPECT_EQ(LayoutPoint(0, 0), row2->topLeftLocation()); | 178 EXPECT_EQ(LayoutPoint(0, 0), row2->topLeftLocation()); |
178 | 179 |
179 const LayoutBox* cell2 = toLayoutBox(getLayoutObjectByElementId("cell2")); | 180 const LayoutBox* cell2 = toLayoutBox(getLayoutObjectByElementId("cell2")); |
180 EXPECT_EQ(LayoutPoint(100, 0), cell2->location()); | 181 EXPECT_EQ(LayoutPoint(100, 0), cell2->location()); |
181 EXPECT_EQ(LayoutPoint(0, 0), cell2->topLeftLocation()); | 182 EXPECT_EQ(LayoutPoint(0, 0), cell2->topLeftLocation()); |
182 } | 183 } |
183 | 184 |
184 } // namespace blink | 185 } // namespace blink |
OLD | NEW |