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/paint/PaintLayer.h" | 5 #include "core/paint/PaintLayer.h" |
6 | 6 |
7 #include "core/html/HTMLIFrameElement.h" | 7 #include "core/html/HTMLIFrameElement.h" |
8 #include "core/layout/LayoutBoxModelObject.h" | 8 #include "core/layout/LayoutBoxModelObject.h" |
9 #include "core/layout/LayoutTestHelper.h" | 9 #include "core/layout/LayoutTestHelper.h" |
10 #include "core/layout/LayoutView.h" | 10 #include "core/layout/LayoutView.h" |
11 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h" | |
11 #include "platform/testing/UnitTestHelpers.h" | 12 #include "platform/testing/UnitTestHelpers.h" |
12 | 13 |
13 namespace blink { | 14 namespace blink { |
14 | 15 |
15 class PaintLayerTest : public RenderingTest { | 16 typedef std::pair<bool, bool> SlimmingPaintAndRootLayerScrolling; |
17 class PaintLayerTest | |
18 : public ::testing::WithParamInterface<SlimmingPaintAndRootLayerScrolling>, | |
19 private ScopedSlimmingPaintV2ForTest, | |
20 private ScopedRootLayerScrollingForTest, | |
21 public RenderingTest { | |
16 public: | 22 public: |
17 PaintLayerTest() : RenderingTest(SingleChildFrameLoaderClient::create()) {} | 23 PaintLayerTest() |
24 : ScopedSlimmingPaintV2ForTest(GetParam().first), | |
25 ScopedRootLayerScrollingForTest(GetParam().second), | |
26 RenderingTest(SingleChildFrameLoaderClient::create()) {} | |
18 }; | 27 }; |
19 | 28 |
20 TEST_F(PaintLayerTest, CompositedBoundsAbsPosGrandchild) { | 29 SlimmingPaintAndRootLayerScrolling foo[] = { |
30 SlimmingPaintAndRootLayerScrolling(false, false), | |
31 SlimmingPaintAndRootLayerScrolling(true, false), | |
32 SlimmingPaintAndRootLayerScrolling(false, true), | |
33 SlimmingPaintAndRootLayerScrolling(true, true)}; | |
34 | |
35 INSTANTIATE_TEST_CASE_P(All, PaintLayerTest, ::testing::ValuesIn(foo)); | |
36 | |
37 TEST_P(PaintLayerTest, CompositedBoundsAbsPosGrandchild) { | |
38 // TODO(chrishtr): fix this test for SPv2 | |
pdr.
2016/12/07 00:02:05
Can you file a bug for this?
chrishtr
2016/12/07 01:00:34
Done. crbug.com/671864
| |
39 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) | |
40 return; | |
41 | |
21 setBodyInnerHTML( | 42 setBodyInnerHTML( |
22 " <div id='parent'><div id='absposparent'><div id='absposchild'>" | 43 " <div id='parent'><div id='absposparent'><div id='absposchild'>" |
23 " </div></div></div>" | 44 " </div></div></div>" |
24 "<style>" | 45 "<style>" |
25 " #parent { position: absolute; z-index: 0; overflow: hidden;" | 46 " #parent { position: absolute; z-index: 0; overflow: hidden;" |
26 " background: lightgray; width: 150px; height: 150px;" | 47 " background: lightgray; width: 150px; height: 150px;" |
27 " will-change: transform; }" | 48 " will-change: transform; }" |
28 " #absposparent { position: absolute; z-index: 0; }" | 49 " #absposparent { position: absolute; z-index: 0; }" |
29 " #absposchild { position: absolute; top: 0px; left: 0px; height: 200px;" | 50 " #absposchild { position: absolute; top: 0px; left: 0px; height: 200px;" |
30 " width: 200px; background: lightblue; }</style>"); | 51 " width: 200px; background: lightblue; }</style>"); |
31 | 52 |
32 PaintLayer* parentLayer = | 53 PaintLayer* parentLayer = |
33 toLayoutBoxModelObject(getLayoutObjectByElementId("parent"))->layer(); | 54 toLayoutBoxModelObject(getLayoutObjectByElementId("parent"))->layer(); |
34 // Since "absposchild" is clipped by "parent", it should not expand the | 55 // Since "absposchild" is clipped by "parent", it should not expand the |
35 // composited bounds for "parent" beyond its intrinsic size of 150x150. | 56 // composited bounds for "parent" beyond its intrinsic size of 150x150. |
36 EXPECT_EQ(LayoutRect(0, 0, 150, 150), | 57 EXPECT_EQ(LayoutRect(0, 0, 150, 150), |
37 parentLayer->boundingBoxForCompositing()); | 58 parentLayer->boundingBoxForCompositing()); |
38 } | 59 } |
39 | 60 |
40 TEST_F(PaintLayerTest, PaintingExtentReflection) { | 61 TEST_P(PaintLayerTest, PaintingExtentReflection) { |
41 setBodyInnerHTML( | 62 setBodyInnerHTML( |
42 "<div id='target' style='background-color: blue; position: absolute;" | 63 "<div id='target' style='background-color: blue; position: absolute;" |
43 " width: 110px; height: 120px; top: 40px; left: 60px;" | 64 " width: 110px; height: 120px; top: 40px; left: 60px;" |
44 " -webkit-box-reflect: below 3px'>" | 65 " -webkit-box-reflect: below 3px'>" |
45 "</div>"); | 66 "</div>"); |
46 | 67 |
47 PaintLayer* layer = | 68 PaintLayer* layer = |
48 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); | 69 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); |
49 EXPECT_EQ( | 70 EXPECT_EQ( |
50 LayoutRect(60, 40, 110, 243), | 71 LayoutRect(60, 40, 110, 243), |
51 layer->paintingExtent(document().layoutView()->layer(), LayoutSize(), 0)); | 72 layer->paintingExtent(document().layoutView()->layer(), LayoutSize(), 0)); |
52 } | 73 } |
53 | 74 |
54 TEST_F(PaintLayerTest, PaintingExtentReflectionWithTransform) { | 75 TEST_P(PaintLayerTest, PaintingExtentReflectionWithTransform) { |
55 setBodyInnerHTML( | 76 setBodyInnerHTML( |
56 "<div id='target' style='background-color: blue; position: absolute;" | 77 "<div id='target' style='background-color: blue; position: absolute;" |
57 " width: 110px; height: 120px; top: 40px; left: 60px;" | 78 " width: 110px; height: 120px; top: 40px; left: 60px;" |
58 " -webkit-box-reflect: below 3px; transform: translateX(30px)'>" | 79 " -webkit-box-reflect: below 3px; transform: translateX(30px)'>" |
59 "</div>"); | 80 "</div>"); |
60 | 81 |
61 PaintLayer* layer = | 82 PaintLayer* layer = |
62 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); | 83 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); |
63 EXPECT_EQ( | 84 EXPECT_EQ( |
64 LayoutRect(90, 40, 110, 243), | 85 LayoutRect(90, 40, 110, 243), |
65 layer->paintingExtent(document().layoutView()->layer(), LayoutSize(), 0)); | 86 layer->paintingExtent(document().layoutView()->layer(), LayoutSize(), 0)); |
66 } | 87 } |
67 | 88 |
68 TEST_F(PaintLayerTest, CompositedScrollingNoNeedsRepaint) { | 89 TEST_P(PaintLayerTest, ScrollsWithViewportRelativePosition) { |
90 setBodyInnerHTML("<div id='target' style='position: relative'></div>"); | |
91 | |
92 PaintLayer* layer = | |
93 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); | |
94 EXPECT_FALSE(layer->sticksToViewport()); | |
95 } | |
96 | |
97 TEST_P(PaintLayerTest, ScrollsWithViewportFixedPosition) { | |
98 setBodyInnerHTML("<div id='target' style='position: fixed'></div>"); | |
99 | |
100 PaintLayer* layer = | |
101 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); | |
102 EXPECT_TRUE(layer->sticksToViewport()); | |
103 } | |
104 | |
105 TEST_P(PaintLayerTest, ScrollsWithViewportFixedPositionInsideTransform) { | |
106 // We don't intend to launch SPv2 without root layer scrolling, so skip this | |
107 // test in that configuration because it's broken. | |
108 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled() && | |
109 !RuntimeEnabledFeatures::rootLayerScrollingEnabled()) | |
110 return; | |
111 setBodyInnerHTML( | |
112 "<div style='transform: translateZ(0)'>" | |
113 " <div id='target' style='position: fixed'></div>" | |
114 "</div>" | |
115 "<div style='width: 10px; height: 1000px'></div>"); | |
116 PaintLayer* layer = | |
117 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); | |
118 EXPECT_FALSE(layer->sticksToViewport()); | |
119 } | |
120 | |
121 TEST_P(PaintLayerTest, | |
122 ScrollsWithViewportFixedPositionInsideTransformNoScroll) { | |
123 setBodyInnerHTML( | |
124 "<div style='transform: translateZ(0)'>" | |
125 " <div id='target' style='position: fixed'></div>" | |
126 "</div>"); | |
127 PaintLayer* layer = | |
128 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); | |
129 | |
130 // In SPv2 mode, we correctly determine that the frame doesn't scroll at all, | |
131 // and so return true. | |
132 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) | |
133 EXPECT_TRUE(layer->sticksToViewport()); | |
134 else | |
135 EXPECT_FALSE(layer->sticksToViewport()); | |
136 } | |
137 | |
138 TEST_P(PaintLayerTest, ScrollsWithViewportStickyPosition) { | |
139 setBodyInnerHTML( | |
140 "<div style='transform: translateZ(0)'>" | |
141 " <div id='target' style='position: sticky'></div>" | |
142 "</div>" | |
143 "<div style='width: 10px; height: 1000px'></div>"); | |
144 | |
145 PaintLayer* layer = | |
146 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); | |
147 EXPECT_TRUE(layer->sticksToViewport()); | |
148 } | |
149 | |
150 TEST_P(PaintLayerTest, ScrollsWithViewportStickyPositionNoScroll) { | |
151 setBodyInnerHTML( | |
152 "<div style='transform: translateZ(0)'>" | |
153 " <div id='target' style='position: sticky'></div>" | |
154 "</div>"); | |
155 | |
156 PaintLayer* layer = | |
157 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); | |
158 EXPECT_TRUE(layer->sticksToViewport()); | |
159 } | |
160 | |
161 TEST_P(PaintLayerTest, ScrollsWithViewportStickyPositionInsideScroller) { | |
162 setBodyInnerHTML( | |
163 "<div style='overflow:scroll; width: 100px; height: 100px;'>" | |
164 " <div id='target' style='position: sticky'></div>" | |
165 " <div style='width: 50px; height: 1000px;'></div>" | |
166 "</div>"); | |
167 | |
168 PaintLayer* layer = | |
169 toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer(); | |
170 EXPECT_FALSE(layer->sticksToViewport()); | |
171 } | |
172 | |
173 TEST_P(PaintLayerTest, CompositedScrollingNoNeedsRepaint) { | |
174 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) | |
175 return; | |
176 | |
69 enableCompositing(); | 177 enableCompositing(); |
70 setBodyInnerHTML( | 178 setBodyInnerHTML( |
71 "<div id='scroll' style='width: 100px; height: 100px; overflow: scroll;" | 179 "<div id='scroll' style='width: 100px; height: 100px; overflow: scroll;" |
72 " will-change: transform'>" | 180 " will-change: transform'>" |
73 " <div id='content' style='position: relative; background: blue;" | 181 " <div id='content' style='position: relative; background: blue;" |
74 " width: 2000px; height: 2000px'></div>" | 182 " width: 2000px; height: 2000px'></div>" |
75 "</div>"); | 183 "</div>"); |
76 | 184 |
77 PaintLayer* scrollLayer = | 185 PaintLayer* scrollLayer = |
78 toLayoutBoxModelObject(getLayoutObjectByElementId("scroll"))->layer(); | 186 toLayoutBoxModelObject(getLayoutObjectByElementId("scroll"))->layer(); |
79 EXPECT_EQ(PaintsIntoOwnBacking, scrollLayer->compositingState()); | 187 EXPECT_EQ(PaintsIntoOwnBacking, scrollLayer->compositingState()); |
80 | 188 |
81 PaintLayer* contentLayer = | 189 PaintLayer* contentLayer = |
82 toLayoutBoxModelObject(getLayoutObjectByElementId("content"))->layer(); | 190 toLayoutBoxModelObject(getLayoutObjectByElementId("content"))->layer(); |
83 EXPECT_EQ(NotComposited, contentLayer->compositingState()); | 191 EXPECT_EQ(NotComposited, contentLayer->compositingState()); |
84 EXPECT_EQ(LayoutPoint(), contentLayer->location()); | 192 EXPECT_EQ(LayoutPoint(), contentLayer->location()); |
85 | 193 |
86 scrollLayer->getScrollableArea()->setScrollOffset(ScrollOffset(1000, 1000), | 194 scrollLayer->getScrollableArea()->setScrollOffset(ScrollOffset(1000, 1000), |
87 ProgrammaticScroll); | 195 ProgrammaticScroll); |
88 document().view()->updateAllLifecyclePhasesExceptPaint(); | 196 document().view()->updateAllLifecyclePhasesExceptPaint(); |
89 EXPECT_EQ(LayoutPoint(-1000, -1000), contentLayer->location()); | 197 EXPECT_EQ(LayoutPoint(-1000, -1000), contentLayer->location()); |
90 EXPECT_FALSE(contentLayer->needsRepaint()); | 198 EXPECT_FALSE(contentLayer->needsRepaint()); |
91 EXPECT_FALSE(scrollLayer->needsRepaint()); | 199 EXPECT_FALSE(scrollLayer->needsRepaint()); |
92 document().view()->updateAllLifecyclePhases(); | 200 document().view()->updateAllLifecyclePhases(); |
93 } | 201 } |
94 | 202 |
95 TEST_F(PaintLayerTest, NonCompositedScrollingNeedsRepaint) { | 203 TEST_P(PaintLayerTest, NonCompositedScrollingNeedsRepaint) { |
96 setBodyInnerHTML( | 204 setBodyInnerHTML( |
97 "<div id='scroll' style='width: 100px; height: 100px; overflow: scroll'>" | 205 "<div id='scroll' style='width: 100px; height: 100px; overflow: scroll'>" |
98 " <div id='content' style='position: relative; background: blue;" | 206 " <div id='content' style='position: relative; background: blue;" |
99 " width: 2000px; height: 2000px'></div>" | 207 " width: 2000px; height: 2000px'></div>" |
100 "</div>"); | 208 "</div>"); |
101 | 209 |
102 PaintLayer* scrollLayer = | 210 PaintLayer* scrollLayer = |
103 toLayoutBoxModelObject(getLayoutObjectByElementId("scroll"))->layer(); | 211 toLayoutBoxModelObject(getLayoutObjectByElementId("scroll"))->layer(); |
104 EXPECT_EQ(NotComposited, scrollLayer->compositingState()); | 212 EXPECT_EQ(NotComposited, scrollLayer->compositingState()); |
105 | 213 |
106 PaintLayer* contentLayer = | 214 PaintLayer* contentLayer = |
107 toLayoutBoxModelObject(getLayoutObjectByElementId("content"))->layer(); | 215 toLayoutBoxModelObject(getLayoutObjectByElementId("content"))->layer(); |
108 EXPECT_EQ(NotComposited, scrollLayer->compositingState()); | 216 EXPECT_EQ(NotComposited, scrollLayer->compositingState()); |
109 EXPECT_EQ(LayoutPoint(), contentLayer->location()); | 217 EXPECT_EQ(LayoutPoint(), contentLayer->location()); |
110 | 218 |
111 scrollLayer->getScrollableArea()->setScrollOffset(ScrollOffset(1000, 1000), | 219 scrollLayer->getScrollableArea()->setScrollOffset(ScrollOffset(1000, 1000), |
112 ProgrammaticScroll); | 220 ProgrammaticScroll); |
113 document().view()->updateAllLifecyclePhasesExceptPaint(); | 221 document().view()->updateAllLifecyclePhasesExceptPaint(); |
114 EXPECT_EQ(LayoutPoint(-1000, -1000), contentLayer->location()); | 222 EXPECT_EQ(LayoutPoint(-1000, -1000), contentLayer->location()); |
115 EXPECT_TRUE(contentLayer->needsRepaint()); | 223 EXPECT_TRUE(contentLayer->needsRepaint()); |
116 EXPECT_TRUE(scrollLayer->needsRepaint()); | 224 EXPECT_TRUE(scrollLayer->needsRepaint()); |
117 document().view()->updateAllLifecyclePhases(); | 225 document().view()->updateAllLifecyclePhases(); |
118 } | 226 } |
119 | 227 |
120 TEST_F(PaintLayerTest, HasNonIsolatedDescendantWithBlendMode) { | 228 TEST_P(PaintLayerTest, HasNonIsolatedDescendantWithBlendMode) { |
121 setBodyInnerHTML( | 229 setBodyInnerHTML( |
122 "<div id='stacking-grandparent' style='isolation: isolate'>" | 230 "<div id='stacking-grandparent' style='isolation: isolate'>" |
123 " <div id='stacking-parent' style='isolation: isolate'>" | 231 " <div id='stacking-parent' style='isolation: isolate'>" |
124 " <div id='non-stacking-parent' style='position:relative'>" | 232 " <div id='non-stacking-parent' style='position:relative'>" |
125 " <div id='blend-mode' style='mix-blend-mode: overlay'>" | 233 " <div id='blend-mode' style='mix-blend-mode: overlay'>" |
126 " </div>" | 234 " </div>" |
127 " </div>" | 235 " </div>" |
128 " </div>" | 236 " </div>" |
129 "</div>"); | 237 "</div>"); |
130 PaintLayer* stackingGrandparent = | 238 PaintLayer* stackingGrandparent = |
131 toLayoutBoxModelObject(getLayoutObjectByElementId("stacking-grandparent")) | 239 toLayoutBoxModelObject(getLayoutObjectByElementId("stacking-grandparent")) |
132 ->layer(); | 240 ->layer(); |
133 PaintLayer* stackingParent = | 241 PaintLayer* stackingParent = |
134 toLayoutBoxModelObject(getLayoutObjectByElementId("stacking-parent")) | 242 toLayoutBoxModelObject(getLayoutObjectByElementId("stacking-parent")) |
135 ->layer(); | 243 ->layer(); |
136 PaintLayer* parent = | 244 PaintLayer* parent = |
137 toLayoutBoxModelObject(getLayoutObjectByElementId("non-stacking-parent")) | 245 toLayoutBoxModelObject(getLayoutObjectByElementId("non-stacking-parent")) |
138 ->layer(); | 246 ->layer(); |
139 | 247 |
140 EXPECT_TRUE(parent->hasNonIsolatedDescendantWithBlendMode()); | 248 EXPECT_TRUE(parent->hasNonIsolatedDescendantWithBlendMode()); |
141 EXPECT_TRUE(stackingParent->hasNonIsolatedDescendantWithBlendMode()); | 249 EXPECT_TRUE(stackingParent->hasNonIsolatedDescendantWithBlendMode()); |
142 EXPECT_FALSE(stackingGrandparent->hasNonIsolatedDescendantWithBlendMode()); | 250 EXPECT_FALSE(stackingGrandparent->hasNonIsolatedDescendantWithBlendMode()); |
143 | 251 |
144 EXPECT_FALSE(parent->hasDescendantWithClipPath()); | 252 EXPECT_FALSE(parent->hasDescendantWithClipPath()); |
145 EXPECT_TRUE(parent->hasVisibleDescendant()); | 253 EXPECT_TRUE(parent->hasVisibleDescendant()); |
146 } | 254 } |
147 | 255 |
148 TEST_F(PaintLayerTest, HasDescendantWithClipPath) { | 256 TEST_P(PaintLayerTest, HasDescendantWithClipPath) { |
149 setBodyInnerHTML( | 257 setBodyInnerHTML( |
150 "<div id='parent' style='position:relative'>" | 258 "<div id='parent' style='position:relative'>" |
151 " <div id='clip-path' style='clip-path: circle(50px at 0 100px)'>" | 259 " <div id='clip-path' style='clip-path: circle(50px at 0 100px)'>" |
152 " </div>" | 260 " </div>" |
153 "</div>"); | 261 "</div>"); |
154 PaintLayer* parent = | 262 PaintLayer* parent = |
155 toLayoutBoxModelObject(getLayoutObjectByElementId("parent"))->layer(); | 263 toLayoutBoxModelObject(getLayoutObjectByElementId("parent"))->layer(); |
156 PaintLayer* clipPath = | 264 PaintLayer* clipPath = |
157 toLayoutBoxModelObject(getLayoutObjectByElementId("clip-path"))->layer(); | 265 toLayoutBoxModelObject(getLayoutObjectByElementId("clip-path"))->layer(); |
158 | 266 |
159 EXPECT_TRUE(parent->hasDescendantWithClipPath()); | 267 EXPECT_TRUE(parent->hasDescendantWithClipPath()); |
160 EXPECT_FALSE(clipPath->hasDescendantWithClipPath()); | 268 EXPECT_FALSE(clipPath->hasDescendantWithClipPath()); |
161 | 269 |
162 EXPECT_FALSE(parent->hasNonIsolatedDescendantWithBlendMode()); | 270 EXPECT_FALSE(parent->hasNonIsolatedDescendantWithBlendMode()); |
163 EXPECT_TRUE(parent->hasVisibleDescendant()); | 271 EXPECT_TRUE(parent->hasVisibleDescendant()); |
164 } | 272 } |
165 | 273 |
166 TEST_F(PaintLayerTest, HasVisibleDescendant) { | 274 TEST_P(PaintLayerTest, HasVisibleDescendant) { |
167 enableCompositing(); | 275 enableCompositing(); |
168 setBodyInnerHTML( | 276 setBodyInnerHTML( |
169 "<div id='invisible' style='position:relative'>" | 277 "<div id='invisible' style='position:relative'>" |
170 " <div id='visible' style='visibility: visible; position: relative'>" | 278 " <div id='visible' style='visibility: visible; position: relative'>" |
171 " </div>" | 279 " </div>" |
172 "</div>"); | 280 "</div>"); |
173 PaintLayer* invisible = | 281 PaintLayer* invisible = |
174 toLayoutBoxModelObject(getLayoutObjectByElementId("invisible"))->layer(); | 282 toLayoutBoxModelObject(getLayoutObjectByElementId("invisible"))->layer(); |
175 PaintLayer* visible = | 283 PaintLayer* visible = |
176 toLayoutBoxModelObject(getLayoutObjectByElementId("visible"))->layer(); | 284 toLayoutBoxModelObject(getLayoutObjectByElementId("visible"))->layer(); |
177 | 285 |
178 EXPECT_TRUE(invisible->hasVisibleDescendant()); | 286 EXPECT_TRUE(invisible->hasVisibleDescendant()); |
179 EXPECT_FALSE(visible->hasVisibleDescendant()); | 287 EXPECT_FALSE(visible->hasVisibleDescendant()); |
180 | 288 |
181 EXPECT_FALSE(invisible->hasNonIsolatedDescendantWithBlendMode()); | 289 EXPECT_FALSE(invisible->hasNonIsolatedDescendantWithBlendMode()); |
182 EXPECT_FALSE(invisible->hasDescendantWithClipPath()); | 290 EXPECT_FALSE(invisible->hasDescendantWithClipPath()); |
183 } | 291 } |
184 | 292 |
185 TEST_F(PaintLayerTest, DescendantDependentFlagsStopsAtThrottledFrames) { | 293 TEST_P(PaintLayerTest, DescendantDependentFlagsStopsAtThrottledFrames) { |
186 enableCompositing(); | 294 enableCompositing(); |
187 setBodyInnerHTML( | 295 setBodyInnerHTML( |
188 "<style>body { margin: 0; }</style>" | 296 "<style>body { margin: 0; }</style>" |
189 "<div id='transform' style='transform: translate3d(4px, 5px, 6px);'>" | 297 "<div id='transform' style='transform: translate3d(4px, 5px, 6px);'>" |
190 "</div>" | 298 "</div>" |
191 "<iframe id='iframe' sandbox></iframe>"); | 299 "<iframe id='iframe' sandbox></iframe>"); |
192 setChildFrameHTML( | 300 setChildFrameHTML( |
193 "<style>body { margin: 0; }</style>" | 301 "<style>body { margin: 0; }</style>" |
194 "<div id='iframeTransform'" | 302 "<div id='iframeTransform'" |
195 " style='transform: translate3d(4px, 5px, 6px);'/>"); | 303 " style='transform: translate3d(4px, 5px, 6px);'/>"); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
231 | 339 |
232 document().view()->updateAllLifecyclePhases(); | 340 document().view()->updateAllLifecyclePhases(); |
233 EXPECT_FALSE(childDocument() | 341 EXPECT_FALSE(childDocument() |
234 .view() | 342 .view() |
235 ->layoutView() | 343 ->layoutView() |
236 ->layer() | 344 ->layer() |
237 ->m_needsDescendantDependentFlagsUpdate); | 345 ->m_needsDescendantDependentFlagsUpdate); |
238 } | 346 } |
239 | 347 |
240 } // namespace blink | 348 } // namespace blink |
OLD | NEW |