Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp

Issue 2258523006: Convert Settings::rootLayerScrolls to RuntimeEnabledFeatures (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add RAII-style helper to toggle REF. Rebase. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/LayoutTestHelper.h" 5 #include "core/layout/LayoutTestHelper.h"
6 #include "core/layout/LayoutTreeAsText.h" 6 #include "core/layout/LayoutTreeAsText.h"
7 #include "core/layout/api/LayoutViewItem.h" 7 #include "core/layout/api/LayoutViewItem.h"
8 #include "core/paint/ObjectPaintProperties.h" 8 #include "core/paint/ObjectPaintProperties.h"
9 #include "platform/graphics/paint/GeometryMapper.h" 9 #include "platform/graphics/paint/GeometryMapper.h"
10 #include "platform/graphics/paint/TransformPaintPropertyNode.h" 10 #include "platform/graphics/paint/TransformPaintPropertyNode.h"
11 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h"
11 #include "platform/testing/UnitTestHelpers.h" 12 #include "platform/testing/UnitTestHelpers.h"
12 #include "platform/text/TextStream.h" 13 #include "platform/text/TextStream.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 #include "wtf/HashMap.h" 15 #include "wtf/HashMap.h"
15 #include "wtf/Vector.h" 16 #include "wtf/Vector.h"
16 17
17 namespace blink { 18 namespace blink {
18 19
20 typedef bool TestParamRootLayerScrolling;
19 class PaintPropertyTreeBuilderTest 21 class PaintPropertyTreeBuilderTest
20 : public RenderingTest 22 : public ::testing::WithParamInterface<TestParamRootLayerScrolling>
21 , public ::testing::WithParamInterface<FrameSettingOverrideFunction> { 23 , private ScopedSlimmingPaintV2ForTest
24 , private ScopedRootLayerScrollingForTest
25 , public RenderingTest {
22 public: 26 public:
23 PaintPropertyTreeBuilderTest() 27 PaintPropertyTreeBuilderTest()
24 : RenderingTest(SingleChildFrameLoaderClient::create()) 28 : ScopedSlimmingPaintV2ForTest(true)
25 , m_originalSlimmingPaintV2Enabled(RuntimeEnabledFeatures::slimmingPaint V2Enabled()) { } 29 , ScopedRootLayerScrollingForTest(GetParam())
30 , RenderingTest(SingleChildFrameLoaderClient::create()) { }
26 31
27 void loadTestData(const char* fileName) 32 void loadTestData(const char* fileName)
28 { 33 {
29 String fullPath = testing::blinkRootDir(); 34 String fullPath = testing::blinkRootDir();
30 fullPath.append("/Source/core/paint/test_data/"); 35 fullPath.append("/Source/core/paint/test_data/");
31 fullPath.append(fileName); 36 fullPath.append(fileName);
32 RefPtr<SharedBuffer> inputBuffer = testing::readFromFile(fullPath); 37 RefPtr<SharedBuffer> inputBuffer = testing::readFromFile(fullPath);
33 setBodyInnerHTML(String(inputBuffer->data(), inputBuffer->size())); 38 setBodyInnerHTML(String(inputBuffer->data(), inputBuffer->size()));
34 } 39 }
35 40
36 bool rootLayerScrolls()
37 {
38 return document().settings() && document().settings()->rootLayerScrolls( );
39 }
40
41 const TransformPaintPropertyNode* rootTransform() 41 const TransformPaintPropertyNode* rootTransform()
42 { 42 {
43 FrameView* frameView = document().view(); 43 FrameView* frameView = document().view();
44 if (rootLayerScrolls()) 44 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled())
45 return frameView->layoutView()->objectPaintProperties()->paintOffset Translation(); 45 return frameView->layoutView()->objectPaintProperties()->paintOffset Translation();
46 return frameView->rootTransform(); 46 return frameView->rootTransform();
47 } 47 }
48 48
49 const ClipPaintPropertyNode* rootClip() 49 const ClipPaintPropertyNode* rootClip()
50 { 50 {
51 if (rootLayerScrolls()) 51 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled())
52 return document().view()->layoutView()->objectPaintProperties()->loc alBorderBoxProperties()->propertyTreeState.clip.get(); 52 return document().view()->layoutView()->objectPaintProperties()->loc alBorderBoxProperties()->propertyTreeState.clip.get();
53 return document().view()->rootClip(); 53 return document().view()->rootClip();
54 } 54 }
55 55
56 const TransformPaintPropertyNode* framePreTranslation() 56 const TransformPaintPropertyNode* framePreTranslation()
57 { 57 {
58 FrameView* frameView = document().view(); 58 FrameView* frameView = document().view();
59 if (rootLayerScrolls()) 59 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled())
60 return frameView->layoutView()->objectPaintProperties()->paintOffset Translation(); 60 return frameView->layoutView()->objectPaintProperties()->paintOffset Translation();
61 return frameView->preTranslation(); 61 return frameView->preTranslation();
62 } 62 }
63 63
64 const TransformPaintPropertyNode* frameScrollTranslation() 64 const TransformPaintPropertyNode* frameScrollTranslation()
65 { 65 {
66 FrameView* frameView = document().view(); 66 FrameView* frameView = document().view();
67 if (rootLayerScrolls()) 67 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled())
68 return frameView->layoutView()->objectPaintProperties()->scrollTrans lation(); 68 return frameView->layoutView()->objectPaintProperties()->scrollTrans lation();
69 return frameView->scrollTranslation(); 69 return frameView->scrollTranslation();
70 } 70 }
71 71
72 const ClipPaintPropertyNode* frameContentClip() 72 const ClipPaintPropertyNode* frameContentClip()
73 { 73 {
74 FrameView* frameView = document().view(); 74 FrameView* frameView = document().view();
75 if (rootLayerScrolls()) 75 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled())
76 return frameView->layoutView()->objectPaintProperties()->overflowCli p(); 76 return frameView->layoutView()->objectPaintProperties()->overflowCli p();
77 return frameView->contentClip(); 77 return frameView->contentClip();
78 } 78 }
79 79
80 FrameSettingOverrideFunction settingOverrider() const override { return GetP aram(); }
81
82 private: 80 private:
83 void SetUp() override 81 void SetUp() override
84 { 82 {
85 RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(true);
86 Settings::setMockScrollbarsEnabled(true); 83 Settings::setMockScrollbarsEnabled(true);
87 84
88 RenderingTest::SetUp(); 85 RenderingTest::SetUp();
89 enableCompositing(); 86 enableCompositing();
90 } 87 }
91 88
92 void TearDown() override 89 void TearDown() override
93 { 90 {
94 RenderingTest::TearDown(); 91 RenderingTest::TearDown();
95 92
96 Settings::setMockScrollbarsEnabled(false); 93 Settings::setMockScrollbarsEnabled(false);
97 RuntimeEnabledFeatures::setSlimmingPaintV2Enabled(m_originalSlimmingPain tV2Enabled);
98 } 94 }
99
100 bool m_originalSlimmingPaintV2Enabled;
101 }; 95 };
102 96
103 #define CHECK_VISUAL_RECT(expected, sourceLayoutObject, ancestorLayoutObject, sl opFactor) \ 97 #define CHECK_VISUAL_RECT(expected, sourceLayoutObject, ancestorLayoutObject, sl opFactor) \
104 do { \ 98 do { \
105 GeometryMapper geometryMapper; \ 99 GeometryMapper geometryMapper; \
106 LayoutRect source((sourceLayoutObject)->localOverflowRectForPaintInvalidatio n()); \ 100 LayoutRect source((sourceLayoutObject)->localOverflowRectForPaintInvalidatio n()); \
107 source.moveBy((sourceLayoutObject)->objectPaintProperties()->localBorderBoxP roperties()->paintOffset); \ 101 source.moveBy((sourceLayoutObject)->objectPaintProperties()->localBorderBoxP roperties()->paintOffset); \
108 bool success = false; \ 102 bool success = false; \
109 FloatRect actual = geometryMapper.mapToVisualRectInDestinationSpace( \ 103 FloatRect actual = geometryMapper.mapToVisualRectInDestinationSpace( \
110 FloatRect(source), \ 104 FloatRect(source), \
(...skipping 12 matching lines...) Expand all
123 SCOPED_TRACE(String::format("Old path rect: %s, Actual: %s, Inflated act ual: %s", slowPathRect.toString().ascii().data(), actual.toString().ascii().data (), inflatedActual.toString().ascii().data())); \ 117 SCOPED_TRACE(String::format("Old path rect: %s, Actual: %s, Inflated act ual: %s", slowPathRect.toString().ascii().data(), actual.toString().ascii().data (), inflatedActual.toString().ascii().data())); \
124 EXPECT_TRUE(slowPathRect.contains(LayoutRect(actual))); \ 118 EXPECT_TRUE(slowPathRect.contains(LayoutRect(actual))); \
125 EXPECT_TRUE(inflatedActual.contains(slowPathRect)); \ 119 EXPECT_TRUE(inflatedActual.contains(slowPathRect)); \
126 } else { \ 120 } else { \
127 EXPECT_EQ(slowPathRect, LayoutRect(actual)); \ 121 EXPECT_EQ(slowPathRect, LayoutRect(actual)); \
128 } \ 122 } \
129 } while (0) 123 } while (0)
130 124
131 #define CHECK_EXACT_VISUAL_RECT(expected, sourceLayoutObject, ancestorLayoutObje ct) CHECK_VISUAL_RECT(expected, sourceLayoutObject, ancestorLayoutObject, 0) 125 #define CHECK_EXACT_VISUAL_RECT(expected, sourceLayoutObject, ancestorLayoutObje ct) CHECK_VISUAL_RECT(expected, sourceLayoutObject, ancestorLayoutObject, 0)
132 126
133 INSTANTIATE_TEST_CASE_P(All, PaintPropertyTreeBuilderTest, ::testing::Values(nul lptr, &RootLayerScrollsFrameSettingOverride)); 127 INSTANTIATE_TEST_CASE_P(All, PaintPropertyTreeBuilderTest, ::testing::Bool());
134 128
135 TEST_P(PaintPropertyTreeBuilderTest, FixedPosition) 129 TEST_P(PaintPropertyTreeBuilderTest, FixedPosition)
136 { 130 {
137 loadTestData("fixed-position.html"); 131 loadTestData("fixed-position.html");
138 132
139 FrameView* frameView = document().view(); 133 FrameView* frameView = document().view();
140 134
141 // target1 is a fixed-position element inside an absolute-position scrolling element. 135 // target1 is a fixed-position element inside an absolute-position scrolling element.
142 // It should be attached under the viewport to skip scrolling and offset of the parent. 136 // It should be attached under the viewport to skip scrolling and offset of the parent.
143 Element* target1 = document().getElementById("target1"); 137 Element* target1 = document().getElementById("target1");
(...skipping 28 matching lines...) Expand all
172 scroller->scrollTo(0, 100); 166 scroller->scrollTo(0, 100);
173 FrameView* frameView = document().view(); 167 FrameView* frameView = document().view();
174 frameView->updateAllLifecyclePhases(); 168 frameView->updateAllLifecyclePhases();
175 const ObjectPaintProperties* scrollerProperties = scroller->layoutObject()-> objectPaintProperties(); 169 const ObjectPaintProperties* scrollerProperties = scroller->layoutObject()-> objectPaintProperties();
176 EXPECT_EQ(TransformationMatrix().translate(0, -100), scrollerProperties->scr ollTranslation()->matrix()); 170 EXPECT_EQ(TransformationMatrix().translate(0, -100), scrollerProperties->scr ollTranslation()->matrix());
177 EXPECT_EQ(frameScrollTranslation(), scrollerProperties->scrollTranslation()- >parent()); 171 EXPECT_EQ(frameScrollTranslation(), scrollerProperties->scrollTranslation()- >parent());
178 EXPECT_EQ(frameScrollTranslation(), scrollerProperties->overflowClip()->loca lTransformSpace()); 172 EXPECT_EQ(frameScrollTranslation(), scrollerProperties->overflowClip()->loca lTransformSpace());
179 EXPECT_EQ(FloatRoundedRect(120, 340, 400, 300), scrollerProperties->overflow Clip()->clipRect()); 173 EXPECT_EQ(FloatRoundedRect(120, 340, 400, 300), scrollerProperties->overflow Clip()->clipRect());
180 EXPECT_EQ(frameContentClip(), scrollerProperties->overflowClip()->parent()); 174 EXPECT_EQ(frameContentClip(), scrollerProperties->overflowClip()->parent());
181 // http://crbug.com/638415 175 // http://crbug.com/638415
182 if (!rootLayerScrolls()) { 176 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
183 CHECK_EXACT_VISUAL_RECT(LayoutRect(120, 340, 400, 300), scroller->layout Object(), frameView->layoutView()); 177 CHECK_EXACT_VISUAL_RECT(LayoutRect(120, 340, 400, 300), scroller->layout Object(), frameView->layoutView());
184 } 178 }
185 179
186 // The relative-positioned element should have accumulated box offset (exclu de scrolling), 180 // The relative-positioned element should have accumulated box offset (exclu de scrolling),
187 // and should be affected by ancestor scroll transforms. 181 // and should be affected by ancestor scroll transforms.
188 Element* relPos = document().getElementById("rel-pos"); 182 Element* relPos = document().getElementById("rel-pos");
189 const ObjectPaintProperties* relPosProperties = relPos->layoutObject()->obje ctPaintProperties(); 183 const ObjectPaintProperties* relPosProperties = relPos->layoutObject()->obje ctPaintProperties();
190 EXPECT_EQ(TransformationMatrix().translate(680, 1120), relPosProperties->pai ntOffsetTranslation()->matrix()); 184 EXPECT_EQ(TransformationMatrix().translate(680, 1120), relPosProperties->pai ntOffsetTranslation()->matrix());
191 EXPECT_EQ(scrollerProperties->scrollTranslation(), relPosProperties->paintOf fsetTranslation()->parent()); 185 EXPECT_EQ(scrollerProperties->scrollTranslation(), relPosProperties->paintOf fsetTranslation()->parent());
192 EXPECT_EQ(relPosProperties->transform(), relPosProperties->overflowClip()->l ocalTransformSpace()); 186 EXPECT_EQ(relPosProperties->transform(), relPosProperties->overflowClip()->l ocalTransformSpace());
193 EXPECT_EQ(FloatRoundedRect(0, 0, 100, 200), relPosProperties->overflowClip() ->clipRect()); 187 EXPECT_EQ(FloatRoundedRect(0, 0, 100, 200), relPosProperties->overflowClip() ->clipRect());
194 EXPECT_EQ(scrollerProperties->overflowClip(), relPosProperties->overflowClip ()->parent()); 188 EXPECT_EQ(scrollerProperties->overflowClip(), relPosProperties->overflowClip ()->parent());
195 CHECK_EXACT_VISUAL_RECT(LayoutRect(), relPos->layoutObject(), frameView->lay outView()); 189 CHECK_EXACT_VISUAL_RECT(LayoutRect(), relPos->layoutObject(), frameView->lay outView());
196 190
197 // The absolute-positioned element should not be affected by non-positioned scroller at all. 191 // The absolute-positioned element should not be affected by non-positioned scroller at all.
198 Element* absPos = document().getElementById("abs-pos"); 192 Element* absPos = document().getElementById("abs-pos");
199 const ObjectPaintProperties* absPosProperties = absPos->layoutObject()->obje ctPaintProperties(); 193 const ObjectPaintProperties* absPosProperties = absPos->layoutObject()->obje ctPaintProperties();
200 EXPECT_EQ(TransformationMatrix().translate(123, 456), absPosProperties->pain tOffsetTranslation()->matrix()); 194 EXPECT_EQ(TransformationMatrix().translate(123, 456), absPosProperties->pain tOffsetTranslation()->matrix());
201 EXPECT_EQ(frameScrollTranslation(), absPosProperties->paintOffsetTranslation ()->parent()); 195 EXPECT_EQ(frameScrollTranslation(), absPosProperties->paintOffsetTranslation ()->parent());
202 EXPECT_EQ(absPosProperties->transform(), absPosProperties->overflowClip()->l ocalTransformSpace()); 196 EXPECT_EQ(absPosProperties->transform(), absPosProperties->overflowClip()->l ocalTransformSpace());
203 EXPECT_EQ(FloatRoundedRect(0, 0, 300, 400), absPosProperties->overflowClip() ->clipRect()); 197 EXPECT_EQ(FloatRoundedRect(0, 0, 300, 400), absPosProperties->overflowClip() ->clipRect());
204 EXPECT_EQ(frameContentClip(), absPosProperties->overflowClip()->parent()); 198 EXPECT_EQ(frameContentClip(), absPosProperties->overflowClip()->parent());
205 // http://crbug.com/638415 199 // http://crbug.com/638415
206 if (!rootLayerScrolls()) { 200 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
207 CHECK_EXACT_VISUAL_RECT(LayoutRect(123, 456, 300, 400), absPos->layoutOb ject(), frameView->layoutView()); 201 CHECK_EXACT_VISUAL_RECT(LayoutRect(123, 456, 300, 400), absPos->layoutOb ject(), frameView->layoutView());
208 } 202 }
209 } 203 }
210 204
211 TEST_P(PaintPropertyTreeBuilderTest, FrameScrollingTraditional) 205 TEST_P(PaintPropertyTreeBuilderTest, FrameScrollingTraditional)
212 { 206 {
213 setBodyInnerHTML("<style> body { height: 10000px; } </style>"); 207 setBodyInnerHTML("<style> body { height: 10000px; } </style>");
214 208
215 document().domWindow()->scrollTo(0, 100); 209 document().domWindow()->scrollTo(0, 100);
216 210
217 FrameView* frameView = document().view(); 211 FrameView* frameView = document().view();
218 frameView->updateAllLifecyclePhases(); 212 frameView->updateAllLifecyclePhases();
219 EXPECT_EQ(TransformationMatrix(), framePreTranslation()->matrix()); 213 EXPECT_EQ(TransformationMatrix(), framePreTranslation()->matrix());
220 if (!rootLayerScrolls()) 214 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled())
221 EXPECT_EQ(rootTransform(), framePreTranslation()->parent()); 215 EXPECT_EQ(rootTransform(), framePreTranslation()->parent());
222 EXPECT_EQ(nullptr, rootTransform()->parent()); 216 EXPECT_EQ(nullptr, rootTransform()->parent());
223 EXPECT_EQ(TransformationMatrix().translate(0, -100), frameScrollTranslation( )->matrix()); 217 EXPECT_EQ(TransformationMatrix().translate(0, -100), frameScrollTranslation( )->matrix());
224 EXPECT_EQ(framePreTranslation(), frameScrollTranslation()->parent()); 218 EXPECT_EQ(framePreTranslation(), frameScrollTranslation()->parent());
225 EXPECT_EQ(framePreTranslation(), frameContentClip()->localTransformSpace()); 219 EXPECT_EQ(framePreTranslation(), frameContentClip()->localTransformSpace());
226 EXPECT_EQ(FloatRoundedRect(0, 0, 800, 600), frameContentClip()->clipRect()); 220 EXPECT_EQ(FloatRoundedRect(0, 0, 800, 600), frameContentClip()->clipRect());
227 EXPECT_EQ(rootClip(), frameContentClip()->parent()); 221 EXPECT_EQ(rootClip(), frameContentClip()->parent());
228 if (!rootLayerScrolls()) 222 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled())
229 EXPECT_EQ(nullptr, rootClip()->parent()); 223 EXPECT_EQ(nullptr, rootClip()->parent());
230 224
231 LayoutViewItem layoutViewItem = document().layoutViewItem(); 225 LayoutViewItem layoutViewItem = document().layoutViewItem();
232 const ObjectPaintProperties* layoutViewProperties = layoutViewItem.objectPai ntProperties(); 226 const ObjectPaintProperties* layoutViewProperties = layoutViewItem.objectPai ntProperties();
233 // http://crbug.com/638415 227 // http://crbug.com/638415
234 if (!rootLayerScrolls()) { 228 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
235 EXPECT_EQ(nullptr, layoutViewProperties->scrollTranslation()); 229 EXPECT_EQ(nullptr, layoutViewProperties->scrollTranslation());
236 CHECK_EXACT_VISUAL_RECT(LayoutRect(8, 8, 784, 10000), document().body()- >layoutObject(), frameView->layoutView()); 230 CHECK_EXACT_VISUAL_RECT(LayoutRect(8, 8, 784, 10000), document().body()- >layoutObject(), frameView->layoutView());
237 } 231 }
238 } 232 }
239 233
240 TEST_P(PaintPropertyTreeBuilderTest, Perspective) 234 TEST_P(PaintPropertyTreeBuilderTest, Perspective)
241 { 235 {
242 loadTestData("perspective.html"); 236 loadTestData("perspective.html");
243 237
244 Element* perspective = document().getElementById("perspective"); 238 Element* perspective = document().getElementById("perspective");
(...skipping 16 matching lines...) Expand all
261 loadTestData("transform.html"); 255 loadTestData("transform.html");
262 256
263 Element* transform = document().getElementById("transform"); 257 Element* transform = document().getElementById("transform");
264 const ObjectPaintProperties* transformProperties = transform->layoutObject() ->objectPaintProperties(); 258 const ObjectPaintProperties* transformProperties = transform->layoutObject() ->objectPaintProperties();
265 EXPECT_EQ(TransformationMatrix().translate3d(123, 456, 789), transformProper ties->transform()->matrix()); 259 EXPECT_EQ(TransformationMatrix().translate3d(123, 456, 789), transformProper ties->transform()->matrix());
266 EXPECT_EQ(FloatPoint3D(200, 150, 0), transformProperties->transform()->origi n()); 260 EXPECT_EQ(FloatPoint3D(200, 150, 0), transformProperties->transform()->origi n());
267 EXPECT_EQ(transformProperties->paintOffsetTranslation(), transformProperties ->transform()->parent()); 261 EXPECT_EQ(transformProperties->paintOffsetTranslation(), transformProperties ->transform()->parent());
268 EXPECT_EQ(TransformationMatrix().translate(50, 100), transformProperties->pa intOffsetTranslation()->matrix()); 262 EXPECT_EQ(TransformationMatrix().translate(50, 100), transformProperties->pa intOffsetTranslation()->matrix());
269 EXPECT_EQ(frameScrollTranslation(), transformProperties->paintOffsetTranslat ion()->parent()); 263 EXPECT_EQ(frameScrollTranslation(), transformProperties->paintOffsetTranslat ion()->parent());
270 // http://crbug.com/638415 264 // http://crbug.com/638415
271 if (!rootLayerScrolls()) { 265 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
272 CHECK_EXACT_VISUAL_RECT(LayoutRect(173, 556, 400, 300), transform->layou tObject(), document().view()->layoutView()); 266 CHECK_EXACT_VISUAL_RECT(LayoutRect(173, 556, 400, 300), transform->layou tObject(), document().view()->layoutView());
273 } 267 }
274 } 268 }
275 269
276 TEST_P(PaintPropertyTreeBuilderTest, RelativePositionInline) 270 TEST_P(PaintPropertyTreeBuilderTest, RelativePositionInline)
277 { 271 {
278 loadTestData("relative-position-inline.html"); 272 loadTestData("relative-position-inline.html");
279 273
280 Element* inlineBlock = document().getElementById("inline-block"); 274 Element* inlineBlock = document().getElementById("inline-block");
281 const ObjectPaintProperties* inlineBlockProperties = inlineBlock->layoutObje ct()->objectPaintProperties(); 275 const ObjectPaintProperties* inlineBlockProperties = inlineBlock->layoutObje ct()->objectPaintProperties();
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 "</div>"); 735 "</div>");
742 Document& frameDocument = setupChildIframe("frame", 736 Document& frameDocument = setupChildIframe("frame",
743 "<style>body { margin: 0; }</style><div id='transform' style='transform: translate3d(4px, 5px, 6px); width: 100px; height: 200px'></div>"); 737 "<style>body { margin: 0; }</style><div id='transform' style='transform: translate3d(4px, 5px, 6px); width: 100px; height: 200px'></div>");
744 FrameView* frameView = document().view(); 738 FrameView* frameView = document().view();
745 frameView->updateAllLifecyclePhases(); 739 frameView->updateAllLifecyclePhases();
746 740
747 LayoutObject* divWithTransform = document().getElementById("divWithTransform ")->layoutObject(); 741 LayoutObject* divWithTransform = document().getElementById("divWithTransform ")->layoutObject();
748 const ObjectPaintProperties* divWithTransformProperties = divWithTransform-> objectPaintProperties(); 742 const ObjectPaintProperties* divWithTransformProperties = divWithTransform-> objectPaintProperties();
749 EXPECT_EQ(TransformationMatrix().translate3d(1, 2, 3), divWithTransformPrope rties->transform()->matrix()); 743 EXPECT_EQ(TransformationMatrix().translate3d(1, 2, 3), divWithTransformPrope rties->transform()->matrix());
750 // http://crbug.com/638415 744 // http://crbug.com/638415
751 if (!rootLayerScrolls()) { 745 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
752 CHECK_EXACT_VISUAL_RECT(LayoutRect(1, 2, 800, 164), divWithTransform, fr ameView->layoutView()); 746 CHECK_EXACT_VISUAL_RECT(LayoutRect(1, 2, 800, 164), divWithTransform, fr ameView->layoutView());
753 } 747 }
754 748
755 LayoutObject* innerDivWithTransform = frameDocument.getElementById("transfor m")->layoutObject(); 749 LayoutObject* innerDivWithTransform = frameDocument.getElementById("transfor m")->layoutObject();
756 const ObjectPaintProperties* innerDivWithTransformProperties = innerDivWithT ransform->objectPaintProperties(); 750 const ObjectPaintProperties* innerDivWithTransformProperties = innerDivWithT ransform->objectPaintProperties();
757 auto* innerDivTransform = innerDivWithTransformProperties->transform(); 751 auto* innerDivTransform = innerDivWithTransformProperties->transform();
758 EXPECT_EQ(TransformationMatrix().translate3d(4, 5, 6), innerDivTransform->ma trix()); 752 EXPECT_EQ(TransformationMatrix().translate3d(4, 5, 6), innerDivTransform->ma trix());
759 CHECK_EXACT_VISUAL_RECT(LayoutRect(12, 14, 100, 145), innerDivWithTransform, frameView->layoutView()); 753 CHECK_EXACT_VISUAL_RECT(LayoutRect(12, 14, 100, 145), innerDivWithTransform, frameView->layoutView());
760 754
761 // Ensure that the inner div's transform is correctly rooted in the root fra me's transform tree. 755 // Ensure that the inner div's transform is correctly rooted in the root fra me's transform tree.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 auto* iframeTransform = iframePreTranslation->parent(); 802 auto* iframeTransform = iframePreTranslation->parent();
809 EXPECT_EQ(TransformationMatrix().translate3d(4, 5, 6), iframeTransform->matr ix()); 803 EXPECT_EQ(TransformationMatrix().translate3d(4, 5, 6), iframeTransform->matr ix());
810 auto* iframePaintOffsetTranslation = iframeTransform->parent(); 804 auto* iframePaintOffsetTranslation = iframeTransform->parent();
811 EXPECT_EQ(TransformationMatrix().translate3d(7, 7, 0), iframePaintOffsetTran slation->matrix()); 805 EXPECT_EQ(TransformationMatrix().translate3d(7, 7, 0), iframePaintOffsetTran slation->matrix());
812 auto* divWithTransformTransform = iframePaintOffsetTranslation->parent(); 806 auto* divWithTransformTransform = iframePaintOffsetTranslation->parent();
813 EXPECT_EQ(TransformationMatrix().translate3d(1, 2, 3), divWithTransformTrans form->matrix()); 807 EXPECT_EQ(TransformationMatrix().translate3d(1, 2, 3), divWithTransformTrans form->matrix());
814 808
815 LayoutObject* divWithTransform = document().getElementById("divWithTransform ")->layoutObject(); 809 LayoutObject* divWithTransform = document().getElementById("divWithTransform ")->layoutObject();
816 EXPECT_EQ(divWithTransformTransform, divWithTransform->objectPaintProperties ()->transform()); 810 EXPECT_EQ(divWithTransformTransform, divWithTransform->objectPaintProperties ()->transform());
817 // http://crbug.com/638415 811 // http://crbug.com/638415
818 if (!rootLayerScrolls()) { 812 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
819 CHECK_EXACT_VISUAL_RECT(LayoutRect(1, 2, 800, 248), divWithTransform, fr ameView->layoutView()); 813 CHECK_EXACT_VISUAL_RECT(LayoutRect(1, 2, 800, 248), divWithTransform, fr ameView->layoutView());
820 } 814 }
821 } 815 }
822 816
823 TEST_P(PaintPropertyTreeBuilderTest, TreeContextClipByNonStackingContext) 817 TEST_P(PaintPropertyTreeBuilderTest, TreeContextClipByNonStackingContext)
824 { 818 {
825 // This test verifies the tree builder correctly computes and records the pr operty tree context 819 // This test verifies the tree builder correctly computes and records the pr operty tree context
826 // for a (pseudo) stacking context that is scrolled by a containing block th at is not one of 820 // for a (pseudo) stacking context that is scrolled by a containing block th at is not one of
827 // the painting ancestors. 821 // the painting ancestors.
828 setBodyInnerHTML( 822 setBodyInnerHTML(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
861 ); 855 );
862 856
863 LayoutObject& scroller = *document().getElementById("scroller")->layoutObjec t(); 857 LayoutObject& scroller = *document().getElementById("scroller")->layoutObjec t();
864 const ObjectPaintProperties* scrollerProperties = scroller.objectPaintProper ties(); 858 const ObjectPaintProperties* scrollerProperties = scroller.objectPaintProper ties();
865 LayoutObject& child = *document().getElementById("child")->layoutObject(); 859 LayoutObject& child = *document().getElementById("child")->layoutObject();
866 const ObjectPaintProperties* childProperties = child.objectPaintProperties() ; 860 const ObjectPaintProperties* childProperties = child.objectPaintProperties() ;
867 861
868 EXPECT_EQ(frameContentClip(), childProperties->localBorderBoxProperties()->p ropertyTreeState.clip); 862 EXPECT_EQ(frameContentClip(), childProperties->localBorderBoxProperties()->p ropertyTreeState.clip);
869 EXPECT_EQ(frameScrollTranslation(), childProperties->localBorderBoxPropertie s()->propertyTreeState.transform); 863 EXPECT_EQ(frameScrollTranslation(), childProperties->localBorderBoxPropertie s()->propertyTreeState.transform);
870 EXPECT_EQ(scrollerProperties->effect(), childProperties->localBorderBoxPrope rties()->propertyTreeState.effect); 864 EXPECT_EQ(scrollerProperties->effect(), childProperties->localBorderBoxPrope rties()->propertyTreeState.effect);
871 if (!rootLayerScrolls()) { 865 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
872 CHECK_EXACT_VISUAL_RECT(LayoutRect(0, 0, 800, 10000), &scroller, documen t().view()->layoutView()); 866 CHECK_EXACT_VISUAL_RECT(LayoutRect(0, 0, 800, 10000), &scroller, documen t().view()->layoutView());
873 } 867 }
874 CHECK_EXACT_VISUAL_RECT(LayoutRect(0, 0, 100, 200), &child, document().view( )->layoutView()); 868 CHECK_EXACT_VISUAL_RECT(LayoutRect(0, 0, 100, 200), &child, document().view( )->layoutView());
875 } 869 }
876 870
877 TEST_P(PaintPropertyTreeBuilderTest, TableCellLayoutLocation) 871 TEST_P(PaintPropertyTreeBuilderTest, TableCellLayoutLocation)
878 { 872 {
879 // This test verifies that the border box space of a table cell is being cor rectly computed. 873 // This test verifies that the border box space of a table cell is being cor rectly computed.
880 // Table cells have weird location adjustment in our layout/paint implementa tion. 874 // Table cells have weird location adjustment in our layout/paint implementa tion.
881 setBodyInnerHTML( 875 setBodyInnerHTML(
(...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after
1588 EXPECT_EQ(cProperties, c->layoutObject()->objectPaintProperties()); 1582 EXPECT_EQ(cProperties, c->layoutObject()->objectPaintProperties());
1589 EXPECT_EQ(cTransformNode, cProperties->transform()); 1583 EXPECT_EQ(cTransformNode, cProperties->transform());
1590 EXPECT_EQ(bTransformNode, cTransformNode->parent()); 1584 EXPECT_EQ(bTransformNode, cTransformNode->parent());
1591 1585
1592 CHECK_EXACT_VISUAL_RECT(LayoutRect(33, 44, 50, 60), a->layoutObject(), frame View->layoutView()); 1586 CHECK_EXACT_VISUAL_RECT(LayoutRect(33, 44, 50, 60), a->layoutObject(), frame View->layoutView());
1593 CHECK_EXACT_VISUAL_RECT(LayoutRect(37, 49, 50, 20), b->layoutObject(), frame View->layoutView()); 1587 CHECK_EXACT_VISUAL_RECT(LayoutRect(37, 49, 50, 20), b->layoutObject(), frame View->layoutView());
1594 CHECK_EXACT_VISUAL_RECT(LayoutRect(114, 137, 10, 20), c->layoutObject(), fra meView->layoutView()); 1588 CHECK_EXACT_VISUAL_RECT(LayoutRect(114, 137, 10, 20), c->layoutObject(), fra meView->layoutView());
1595 } 1589 }
1596 1590
1597 } // namespace blink 1591 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698