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

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

Issue 2176573004: Enable subsequence caching for spv2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@CachePaintProperties
Patch Set: Spv2 configuration for PaintLayerPainterTest, unsigned->size_t etc. Created 4 years, 4 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/LayoutBlock.h" 5 #include "core/layout/LayoutBlock.h"
6 #include "core/layout/LayoutInline.h" 6 #include "core/layout/LayoutInline.h"
7 #include "core/layout/compositing/CompositedLayerMapping.h" 7 #include "core/layout/compositing/CompositedLayerMapping.h"
8 #include "core/paint/PaintControllerPaintTest.h" 8 #include "core/paint/PaintControllerPaintTest.h"
9 #include "platform/graphics/GraphicsContext.h" 9 #include "platform/graphics/GraphicsContext.h"
10 10
11 namespace blink { 11 namespace blink {
12 12
13 struct PaintLayerPainterTestParam {
14 PaintLayerPainterTestParam(FrameSettingOverrideFunction frameSettingOverride , bool slimmingPaintV2)
15 : frameSettingOverride(frameSettingOverride), slimmingPaintV2(slimmingPa intV2) { }
16
17 FrameSettingOverrideFunction frameSettingOverride;
18 bool slimmingPaintV2;
19 };
20
13 class PaintLayerPainterTest 21 class PaintLayerPainterTest
14 : public PaintControllerPaintTest 22 : public PaintControllerPaintTestBase
15 , public testing::WithParamInterface<FrameSettingOverrideFunction> { 23 , public testing::WithParamInterface<PaintLayerPainterTestParam> {
16 USING_FAST_MALLOC(PaintLayerPainterTest); 24 USING_FAST_MALLOC(PaintLayerPainterTest);
17 public: 25 public:
18 FrameSettingOverrideFunction settingOverrider() const override { return GetP aram(); } 26 PaintLayerPainterTest() : PaintControllerPaintTestBase(GetParam().slimmingPa intV2) { }
27 FrameSettingOverrideFunction settingOverrider() const override { return GetP aram().frameSettingOverride; }
19 }; 28 };
20 29
21 INSTANTIATE_TEST_CASE_P(All, PaintLayerPainterTest, ::testing::Values( 30 INSTANTIATE_TEST_CASE_P(All, PaintLayerPainterTest, ::testing::Values(
22 nullptr, 31 PaintLayerPainterTestParam(nullptr, false), // non-root-layer-scrolls, slimm ing-paint-v1
23 RootLayerScrollsFrameSettingOverride)); 32 PaintLayerPainterTestParam(nullptr, true), // non-root-layer-scrolls, slimmi ng-paint-v2
33 PaintLayerPainterTestParam(RootLayerScrollsFrameSettingOverride, false), // root-layer-scrolls, slimming-paint-v1
34 PaintLayerPainterTestParam(RootLayerScrollsFrameSettingOverride, true))); // root-layer-scrolls, slimming-paint-v2
24 35
25 TEST_P(PaintLayerPainterTest, CachedSubsequence) 36 TEST_P(PaintLayerPainterTest, CachedSubsequence)
26 { 37 {
27 setBodyInnerHTML( 38 setBodyInnerHTML(
28 "<div id='container1' style='position: relative; z-index: 1; width: 200p x; height: 200px; background-color: blue'>" 39 "<div id='container1' style='position: relative; z-index: 1; width: 200p x; height: 200px; background-color: blue'>"
29 " <div id='content1' style='position: absolute; width: 100px; height: 1 00px; background-color: red'></div>" 40 " <div id='content1' style='position: absolute; width: 100px; height: 1 00px; background-color: red'></div>"
30 "</div>" 41 "</div>"
31 "<div id='container2' style='position: relative; z-index: 1; width: 200p x; height: 200px; background-color: blue'>" 42 "<div id='container2' style='position: relative; z-index: 1; width: 200p x; height: 200px; background-color: blue'>"
32 " <div id='content2' style='position: absolute; width: 100px; height: 1 00px; background-color: green'></div>" 43 " <div id='content2' style='position: absolute; width: 100px; height: 1 00px; background-color: green'></div>"
33 "</div>"); 44 "</div>");
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 TestDisplayItem(container1Layer, DisplayItem::EndSubsequence), 82 TestDisplayItem(container1Layer, DisplayItem::EndSubsequence),
72 TestDisplayItem(container2Layer, DisplayItem::Subsequence), 83 TestDisplayItem(container2Layer, DisplayItem::Subsequence),
73 TestDisplayItem(container2, backgroundType), 84 TestDisplayItem(container2, backgroundType),
74 TestDisplayItem(content2, backgroundType), 85 TestDisplayItem(content2, backgroundType),
75 TestDisplayItem(container2Layer, DisplayItem::EndSubsequence), 86 TestDisplayItem(container2Layer, DisplayItem::EndSubsequence),
76 TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence)); 87 TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence));
77 } 88 }
78 89
79 TEST_P(PaintLayerPainterTest, CachedSubsequenceOnInterestRectChange) 90 TEST_P(PaintLayerPainterTest, CachedSubsequenceOnInterestRectChange)
80 { 91 {
92 // TODO(wangxianzhu): SPv2 deals with interest rect differently, so disable this test for SPv2 temporarily.
93 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
94 return;
95
81 setBodyInnerHTML( 96 setBodyInnerHTML(
82 "<div id='container1' style='position: relative; z-index: 1; width: 200p x; height: 200px; background-color: blue'>" 97 "<div id='container1' style='position: relative; z-index: 1; width: 200p x; height: 200px; background-color: blue'>"
83 " <div id='content1' style='position: absolute; width: 100px; height: 1 00px; background-color: green'></div>" 98 " <div id='content1' style='position: absolute; width: 100px; height: 1 00px; background-color: green'></div>"
84 "</div>" 99 "</div>"
85 "<div id='container2' style='position: relative; z-index: 1; width: 200p x; height: 200px; background-color: blue'>" 100 "<div id='container2' style='position: relative; z-index: 1; width: 200p x; height: 200px; background-color: blue'>"
86 " <div id='content2a' style='position: absolute; width: 100px; height: 100px; background-color: green'></div>" 101 " <div id='content2a' style='position: absolute; width: 100px; height: 100px; background-color: green'></div>"
87 " <div id='content2b' style='position: absolute; top: 200px; width: 100 px; height: 100px; background-color: green'></div>" 102 " <div id='content2b' style='position: absolute; top: 200px; width: 100 px; height: 100px; background-color: green'></div>"
88 "</div>" 103 "</div>"
89 "<div id='container3' style='position: absolute; z-index: 2; left: 300px ; top: 0; width: 200px; height: 200px; background-color: blue'>" 104 "<div id='container3' style='position: absolute; z-index: 2; left: 300px ; top: 0; width: 200px; height: 200px; background-color: blue'>"
90 " <div id='content3' style='position: absolute; width: 200px; height: 2 00px; background-color: green'></div>" 105 " <div id='content3' style='position: absolute; width: 200px; height: 2 00px; background-color: green'></div>"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence)); 144 TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence));
130 145
131 document().view()->updateAllLifecyclePhasesExceptPaint(); 146 document().view()->updateAllLifecyclePhasesExceptPaint();
132 IntRect newInterestRect(0, 100, 300, 1000); 147 IntRect newInterestRect(0, 100, 300, 1000);
133 EXPECT_TRUE(paintWithoutCommit(&newInterestRect)); 148 EXPECT_TRUE(paintWithoutCommit(&newInterestRect));
134 149
135 // Container1 becomes partly in the interest rect, but uses cached subsequen ce 150 // Container1 becomes partly in the interest rect, but uses cached subsequen ce
136 // because it was fully painted before; 151 // because it was fully painted before;
137 // Container2's intersection with the interest rect changes; 152 // Container2's intersection with the interest rect changes;
138 // Content2b is out of the interest rect and outputs nothing; 153 // Content2b is out of the interest rect and outputs nothing;
139 // Container3 becomes out of the interest rect and outputs empty subsequence pair.. 154 // Container3 becomes out of the interest rect and outputs empty subsequence pair.
140 EXPECT_EQ(7, numCachedNewItems()); 155 EXPECT_EQ(7, numCachedNewItems());
141 156
142 commit(); 157 commit();
143 158
144 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 14, 159 EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 14,
145 TestDisplayItem(layoutView(), documentBackgroundType), 160 TestDisplayItem(layoutView(), documentBackgroundType),
146 TestDisplayItem(htmlLayer, DisplayItem::Subsequence), 161 TestDisplayItem(htmlLayer, DisplayItem::Subsequence),
147 TestDisplayItem(container1Layer, DisplayItem::Subsequence), 162 TestDisplayItem(container1Layer, DisplayItem::Subsequence),
148 TestDisplayItem(container1, backgroundType), 163 TestDisplayItem(container1, backgroundType),
149 TestDisplayItem(content1, backgroundType), 164 TestDisplayItem(content1, backgroundType),
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 PaintLayer& layer = *table.layer(); 517 PaintLayer& layer = *table.layer();
503 EXPECT_TRUE(layer.isSelfPaintingLayer()); 518 EXPECT_TRUE(layer.isSelfPaintingLayer());
504 EXPECT_FALSE(layer.needsPaintPhaseDescendantBlockBackgrounds()); 519 EXPECT_FALSE(layer.needsPaintPhaseDescendantBlockBackgrounds());
505 520
506 toHTMLElement(table.node())->setAttribute(HTMLNames::styleAttr, "position: r elative; border-collapse: collapse"); 521 toHTMLElement(table.node())->setAttribute(HTMLNames::styleAttr, "position: r elative; border-collapse: collapse");
507 document().view()->updateAllLifecyclePhases(); 522 document().view()->updateAllLifecyclePhases();
508 EXPECT_TRUE(layer.needsPaintPhaseDescendantBlockBackgrounds()); 523 EXPECT_TRUE(layer.needsPaintPhaseDescendantBlockBackgrounds());
509 } 524 }
510 525
511 } // namespace blink 526 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/platform/graphics/paint/DisplayItemList.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698