OLD | NEW |
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/paint/PaintLayerPainter.h" | 5 #include "core/paint/PaintLayerPainter.h" |
6 | 6 |
7 #include "core/layout/LayoutBoxModelObject.h" | 7 #include "core/layout/LayoutBoxModelObject.h" |
8 #include "core/layout/compositing/CompositedLayerMapping.h" | 8 #include "core/layout/compositing/CompositedLayerMapping.h" |
9 #include "core/paint/PaintControllerPaintTest.h" | 9 #include "core/paint/PaintControllerPaintTest.h" |
10 #include "platform/graphics/GraphicsContext.h" | 10 #include "platform/graphics/GraphicsContext.h" |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 EXPECT_DISPLAY_LIST( | 138 EXPECT_DISPLAY_LIST( |
139 RootPaintController().GetDisplayItemList(), 5, | 139 RootPaintController().GetDisplayItemList(), 5, |
140 TestDisplayItem(GetLayoutView(), kDocumentBackgroundType), | 140 TestDisplayItem(GetLayoutView(), kDocumentBackgroundType), |
141 TestDisplayItem(container1, kBackgroundType), | 141 TestDisplayItem(container1, kBackgroundType), |
142 TestDisplayItem(content1, kBackgroundType), | 142 TestDisplayItem(content1, kBackgroundType), |
143 TestDisplayItem(container2, kBackgroundType), | 143 TestDisplayItem(container2, kBackgroundType), |
144 TestDisplayItem(content2, kBackgroundType)); | 144 TestDisplayItem(content2, kBackgroundType)); |
145 } | 145 } |
146 } | 146 } |
147 | 147 |
148 TEST_P(PaintLayerPainterTest, CachedSubsequenceForSVGRoot) { | |
149 SetBodyInnerHTML( | |
150 "<svg id='svg' style='position: relative'>" | |
151 " <rect id='rect' x='10' y='10' width='100' height='100' rx='15' " | |
152 "ry='15'/>" | |
153 "</svg>" | |
154 "<div id='div' style='position: relative; width: 50x; height: " | |
155 "50px'></div>"); | |
156 GetDocument().View()->UpdateAllLifecyclePhases(); | |
157 | |
158 LayoutObject& svg = *GetDocument().getElementById("svg")->GetLayoutObject(); | |
159 LayoutObject& rect = *GetDocument().getElementById("rect")->GetLayoutObject(); | |
160 LayoutObject& div = *GetDocument().getElementById("div")->GetLayoutObject(); | |
161 | |
162 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { | |
163 // SPv2 slips the clip box (see BoxClipper). | |
164 EXPECT_DISPLAY_LIST( | |
165 RootPaintController().GetDisplayItemList(), 2, | |
166 TestDisplayItem(GetLayoutView(), kDocumentBackgroundType), | |
167 TestDisplayItem(rect, kForegroundType)); | |
168 } else { | |
169 EXPECT_DISPLAY_LIST( | |
170 RootPaintController().GetDisplayItemList(), 6, | |
171 TestDisplayItem(GetLayoutView(), kDocumentBackgroundType), | |
172 TestDisplayItem(svg, DisplayItem::kClipLayerForeground), | |
173 TestDisplayItem(svg, DisplayItem::kBeginTransform), | |
174 TestDisplayItem(rect, kForegroundType), | |
175 TestDisplayItem(svg, DisplayItem::kEndTransform), | |
176 TestDisplayItem(svg, DisplayItem::ClipTypeToEndClipType( | |
177 DisplayItem::kClipLayerForeground))); | |
178 } | |
179 | |
180 // Change the color of the div. This should not invalidate the subsequence | |
181 // for the SVG root. | |
182 ToHTMLElement(div.GetNode()) | |
183 ->setAttribute(HTMLNames::styleAttr, | |
184 "position: relative; width: 50x; height: 50px; " | |
185 "background-color: green"); | |
186 GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint(); | |
187 EXPECT_TRUE(PaintWithoutCommit()); | |
188 | |
189 // Reuse of SVG and document background. 2 fewer with SPv2 enabled because | |
190 // clip display items don't appear in SPv2 display lists. | |
191 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) | |
192 EXPECT_EQ(2, NumCachedNewItems()); | |
193 else | |
194 EXPECT_EQ(6, NumCachedNewItems()); | |
195 | |
196 Commit(); | |
197 | |
198 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { | |
199 EXPECT_DISPLAY_LIST( | |
200 RootPaintController().GetDisplayItemList(), 3, | |
201 TestDisplayItem(GetLayoutView(), kDocumentBackgroundType), | |
202 TestDisplayItem(rect, kForegroundType), | |
203 TestDisplayItem(div, kBackgroundType)); | |
204 } else { | |
205 EXPECT_DISPLAY_LIST( | |
206 RootPaintController().GetDisplayItemList(), 7, | |
207 TestDisplayItem(GetLayoutView(), kDocumentBackgroundType), | |
208 TestDisplayItem(svg, DisplayItem::kClipLayerForeground), | |
209 TestDisplayItem(svg, DisplayItem::kBeginTransform), | |
210 TestDisplayItem(rect, kForegroundType), | |
211 TestDisplayItem(svg, DisplayItem::kEndTransform), | |
212 TestDisplayItem(svg, DisplayItem::ClipTypeToEndClipType( | |
213 DisplayItem::kClipLayerForeground)), | |
214 TestDisplayItem(div, kBackgroundType), | |
215 TestDisplayItem(GetLayoutView(), | |
216 DisplayItem::ClipTypeToEndClipType( | |
217 DisplayItem::kClipFrameToVisibleContentRect))); | |
218 } | |
219 } | |
220 | |
221 TEST_P(PaintLayerPainterTest, CachedSubsequenceOnInterestRectChange) { | 148 TEST_P(PaintLayerPainterTest, CachedSubsequenceOnInterestRectChange) { |
222 // TODO(wangxianzhu): SPv2 deals with interest rect differently, so disable | 149 // TODO(wangxianzhu): SPv2 deals with interest rect differently, so disable |
223 // this test for SPv2 temporarily. | 150 // this test for SPv2 temporarily. |
224 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) | 151 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) |
225 return; | 152 return; |
226 | 153 |
227 SetBodyInnerHTML( | 154 SetBodyInnerHTML( |
228 "<div id='container1' style='position: relative; z-index: 1; width: " | 155 "<div id='container1' style='position: relative; z-index: 1; width: " |
229 "200px; height: 200px; background-color: blue'>" | 156 "200px; height: 200px; background-color: blue'>" |
230 " <div id='content1' style='position: absolute; width: 100px; height: " | 157 " <div id='content1' style='position: absolute; width: 100px; height: " |
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
919 " height: 100px; " | 846 " height: 100px; " |
920 " opacity: 0; " | 847 " opacity: 0; " |
921 " will-change: opacity;" | 848 " will-change: opacity;" |
922 "}" | 849 "}" |
923 "</style> " | 850 "</style> " |
924 "<div id='target'></div>"); | 851 "<div id='target'></div>"); |
925 ExpectPaintedOutputInvisible("target", false); | 852 ExpectPaintedOutputInvisible("target", false); |
926 } | 853 } |
927 | 854 |
928 } // namespace blink | 855 } // namespace blink |
OLD | NEW |