| Index: third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp b/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp
|
| index fb32220dd14900546cfd93aebe681288fea9e328..88cf58d11f678d05cc5db77288bff5dbcc74d8d9 100644
|
| --- a/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/PaintLayerPainterTest.cpp
|
| @@ -78,7 +78,36 @@ TEST_P(PaintLayerPainterTest, CachedSubsequence)
|
| }
|
|
|
| toHTMLElement(content1.node())->setAttribute(HTMLNames::styleAttr, "position: absolute; width: 100px; height: 100px; background-color: green");
|
| - document().view()->updateAllLifecyclePhases();
|
| + updateLifecyclePhasesBeforePaint();
|
| + paint();
|
| +
|
| + if (rootLayerScrolls) {
|
| + EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 9,
|
| + TestDisplayItem(layoutView(), cachedBackgroundType),
|
| + TestDisplayItem(rootLayer, subsequenceType),
|
| + TestDisplayItem(container1, cachedBackgroundType),
|
| + TestDisplayItem(container1Layer, subsequenceType),
|
| + TestDisplayItem(content1, backgroundType),
|
| + TestDisplayItem(container1Layer, endSubsequenceType),
|
| + TestDisplayItem(container2, cachedBackgroundType),
|
| + TestDisplayItem(container2Layer, cachedSubsequenceType),
|
| + TestDisplayItem(rootLayer, endSubsequenceType));
|
| + } else {
|
| + EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 11,
|
| + TestDisplayItem(layoutView(), cachedBackgroundType),
|
| + TestDisplayItem(rootLayer, subsequenceType),
|
| + TestDisplayItem(htmlLayer, subsequenceType),
|
| + TestDisplayItem(container1, cachedBackgroundType),
|
| + TestDisplayItem(container1Layer, subsequenceType),
|
| + TestDisplayItem(content1, backgroundType),
|
| + TestDisplayItem(container1Layer, endSubsequenceType),
|
| + TestDisplayItem(container2, cachedBackgroundType),
|
| + TestDisplayItem(container2Layer, cachedSubsequenceType),
|
| + TestDisplayItem(htmlLayer, endSubsequenceType),
|
| + TestDisplayItem(rootLayer, endSubsequenceType));
|
| + }
|
| +
|
| + commit();
|
|
|
| if (rootLayerScrolls) {
|
| EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 11,
|
| @@ -137,12 +166,15 @@ TEST_P(PaintLayerPainterTest, CachedSubsequenceOnInterestRectChange)
|
| LayoutObject& container2 = *document().getElementById("container2")->layoutObject();
|
| PaintLayer& container2Layer = *toLayoutBoxModelObject(container2).layer();
|
| LayoutObject& content2a = *document().getElementById("content2a")->layoutObject();
|
| + LayoutObject& content2b = *document().getElementById("content2b")->layoutObject();
|
| LayoutObject& container3 = *document().getElementById("container3")->layoutObject();
|
| PaintLayer& container3Layer = *toLayoutBoxModelObject(container3).layer();
|
| LayoutObject& content3 = *document().getElementById("content3")->layoutObject();
|
|
|
| - LayoutRect interestRect(0, 0, 400, 300);
|
| - document().view()->updateAllLifecyclePhases(&interestRect);
|
| + updateLifecyclePhasesBeforePaint();
|
| + IntRect interestRect(0, 0, 400, 300);
|
| + paint(&interestRect);
|
| + commit();
|
|
|
| // Container1 is fully in the interest rect;
|
| // Container2 is partly (including its stacking chidren) in the interest rect;
|
| @@ -186,16 +218,48 @@ TEST_P(PaintLayerPainterTest, CachedSubsequenceOnInterestRectChange)
|
| TestDisplayItem(rootLayer, endSubsequenceType));
|
| }
|
|
|
| - LayoutRect newInterestRect(0, 100, 300, 300);
|
| - document().view()->updateAllLifecyclePhases(&newInterestRect);
|
| + updateLifecyclePhasesBeforePaint();
|
| + IntRect newInterestRect(0, 100, 300, 1000);
|
| + paint(&newInterestRect);
|
|
|
| // Container1 becomes partly in the interest rect, but uses cached subsequence
|
| // because it was fully painted before;
|
| // Container2's intersection with the interest rect changes;
|
| // Content2b is out of the interest rect and outputs nothing;
|
| // Container3 becomes out of the interest rect and outputs nothing.
|
| +
|
| if (rootLayerScrolls) {
|
| - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 11,
|
| + EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 10,
|
| + TestDisplayItem(layoutView(), cachedBackgroundType),
|
| + TestDisplayItem(rootLayer, subsequenceType),
|
| + TestDisplayItem(container1, cachedBackgroundType),
|
| + TestDisplayItem(container1Layer, cachedSubsequenceType),
|
| + TestDisplayItem(container2, cachedBackgroundType),
|
| + TestDisplayItem(container2Layer, subsequenceType),
|
| + TestDisplayItem(content2a, cachedBackgroundType),
|
| + TestDisplayItem(content2b, backgroundType),
|
| + TestDisplayItem(container2Layer, endSubsequenceType),
|
| + TestDisplayItem(rootLayer, endSubsequenceType));
|
| + } else {
|
| + EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 12,
|
| + TestDisplayItem(layoutView(), cachedBackgroundType),
|
| + TestDisplayItem(rootLayer, subsequenceType),
|
| + TestDisplayItem(htmlLayer, subsequenceType),
|
| + TestDisplayItem(container1, cachedBackgroundType),
|
| + TestDisplayItem(container1Layer, cachedSubsequenceType),
|
| + TestDisplayItem(container2, cachedBackgroundType),
|
| + TestDisplayItem(container2Layer, subsequenceType),
|
| + TestDisplayItem(content2a, cachedBackgroundType),
|
| + TestDisplayItem(content2b, backgroundType),
|
| + TestDisplayItem(container2Layer, endSubsequenceType),
|
| + TestDisplayItem(htmlLayer, endSubsequenceType),
|
| + TestDisplayItem(rootLayer, endSubsequenceType));
|
| + }
|
| +
|
| + commit();
|
| +
|
| + if (rootLayerScrolls) {
|
| + EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 12,
|
| TestDisplayItem(layoutView(), backgroundType),
|
| TestDisplayItem(rootLayer, subsequenceType),
|
| TestDisplayItem(container1, backgroundType),
|
| @@ -205,10 +269,11 @@ TEST_P(PaintLayerPainterTest, CachedSubsequenceOnInterestRectChange)
|
| TestDisplayItem(container2, backgroundType),
|
| TestDisplayItem(container2Layer, subsequenceType),
|
| TestDisplayItem(content2a, backgroundType),
|
| + TestDisplayItem(content2b, backgroundType),
|
| TestDisplayItem(container2Layer, endSubsequenceType),
|
| TestDisplayItem(rootLayer, endSubsequenceType));
|
| } else {
|
| - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 13,
|
| + EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 14,
|
| TestDisplayItem(layoutView(), backgroundType),
|
| TestDisplayItem(rootLayer, subsequenceType),
|
| TestDisplayItem(htmlLayer, subsequenceType),
|
| @@ -219,193 +284,11 @@ TEST_P(PaintLayerPainterTest, CachedSubsequenceOnInterestRectChange)
|
| TestDisplayItem(container2, backgroundType),
|
| TestDisplayItem(container2Layer, subsequenceType),
|
| TestDisplayItem(content2a, backgroundType),
|
| + TestDisplayItem(content2b, backgroundType),
|
| TestDisplayItem(container2Layer, endSubsequenceType),
|
| TestDisplayItem(htmlLayer, endSubsequenceType),
|
| TestDisplayItem(rootLayer, endSubsequenceType));
|
| }
|
| }
|
|
|
| -TEST_F(PaintLayerPainterTestForSlimmingPaintV2, CachedSubsequence)
|
| -{
|
| - setBodyInnerHTML(
|
| - "<div id='container1' style='position: relative; z-index: 1; width: 200px; height: 200px; background-color: blue'>"
|
| - " <div id='content1' style='position: absolute; width: 100px; height: 100px; background-color: red'></div>"
|
| - "</div>"
|
| - "<div id='container2' style='position: relative; z-index: 1; width: 200px; height: 200px; background-color: blue'>"
|
| - " <div id='content2' style='position: absolute; width: 100px; height: 100px; background-color: green'></div>"
|
| - "</div>");
|
| - document().view()->updateAllLifecyclePhases();
|
| -
|
| - PaintLayer& rootLayer = *layoutView().layer();
|
| - PaintLayer& htmlLayer = *toLayoutBoxModelObject(document().documentElement()->layoutObject())->layer();
|
| - LayoutObject& container1 = *document().getElementById("container1")->layoutObject();
|
| - PaintLayer& container1Layer = *toLayoutBoxModelObject(container1).layer();
|
| - LayoutObject& content1 = *document().getElementById("content1")->layoutObject();
|
| - LayoutObject& container2 = *document().getElementById("container2")->layoutObject();
|
| - PaintLayer& container2Layer = *toLayoutBoxModelObject(container2).layer();
|
| - LayoutObject& content2 = *document().getElementById("content2")->layoutObject();
|
| -
|
| - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 13,
|
| - TestDisplayItem(layoutView(), backgroundType),
|
| - TestDisplayItem(rootLayer, subsequenceType),
|
| - TestDisplayItem(htmlLayer, subsequenceType),
|
| - TestDisplayItem(container1, backgroundType),
|
| - TestDisplayItem(container1Layer, subsequenceType),
|
| - TestDisplayItem(content1, backgroundType),
|
| - TestDisplayItem(container1Layer, endSubsequenceType),
|
| - TestDisplayItem(container2, backgroundType),
|
| - TestDisplayItem(container2Layer, subsequenceType),
|
| - TestDisplayItem(content2, backgroundType),
|
| - TestDisplayItem(container2Layer, endSubsequenceType),
|
| - TestDisplayItem(htmlLayer, endSubsequenceType),
|
| - TestDisplayItem(rootLayer, endSubsequenceType));
|
| -
|
| - toHTMLElement(content1.node())->setAttribute(HTMLNames::styleAttr, "position: absolute; width: 100px; height: 100px; background-color: green");
|
| - updateLifecyclePhasesToPaintClean();
|
| -
|
| - EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 11,
|
| - TestDisplayItem(layoutView(), cachedBackgroundType),
|
| - TestDisplayItem(rootLayer, subsequenceType),
|
| - TestDisplayItem(htmlLayer, subsequenceType),
|
| - TestDisplayItem(container1, cachedBackgroundType),
|
| - TestDisplayItem(container1Layer, subsequenceType),
|
| - TestDisplayItem(content1, backgroundType),
|
| - TestDisplayItem(container1Layer, endSubsequenceType),
|
| - TestDisplayItem(container2, cachedBackgroundType),
|
| - TestDisplayItem(container2Layer, cachedSubsequenceType),
|
| - TestDisplayItem(htmlLayer, endSubsequenceType),
|
| - TestDisplayItem(rootLayer, endSubsequenceType));
|
| -
|
| - compositeForSlimmingPaintV2();
|
| -
|
| - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 13,
|
| - TestDisplayItem(layoutView(), backgroundType),
|
| - TestDisplayItem(rootLayer, subsequenceType),
|
| - TestDisplayItem(htmlLayer, subsequenceType),
|
| - TestDisplayItem(container1, backgroundType),
|
| - TestDisplayItem(container1Layer, subsequenceType),
|
| - TestDisplayItem(content1, backgroundType),
|
| - TestDisplayItem(container1Layer, endSubsequenceType),
|
| - TestDisplayItem(container2, backgroundType),
|
| - TestDisplayItem(container2Layer, subsequenceType),
|
| - TestDisplayItem(content2, backgroundType),
|
| - TestDisplayItem(container2Layer, endSubsequenceType),
|
| - TestDisplayItem(htmlLayer, endSubsequenceType),
|
| - TestDisplayItem(rootLayer, endSubsequenceType));
|
| -
|
| - // Repeated painting should just generate a CachedDisplayItemList item.
|
| - updateLifecyclePhasesToPaintClean();
|
| - EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 1,
|
| - TestDisplayItem(*rootLayer.compositedLayerMapping(), DisplayItem::CachedDisplayItemList));
|
| -
|
| - compositeForSlimmingPaintV2();
|
| -
|
| - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 13,
|
| - TestDisplayItem(layoutView(), backgroundType),
|
| - TestDisplayItem(rootLayer, subsequenceType),
|
| - TestDisplayItem(htmlLayer, subsequenceType),
|
| - TestDisplayItem(container1, backgroundType),
|
| - TestDisplayItem(container1Layer, subsequenceType),
|
| - TestDisplayItem(content1, backgroundType),
|
| - TestDisplayItem(container1Layer, endSubsequenceType),
|
| - TestDisplayItem(container2, backgroundType),
|
| - TestDisplayItem(container2Layer, subsequenceType),
|
| - TestDisplayItem(content2, backgroundType),
|
| - TestDisplayItem(container2Layer, endSubsequenceType),
|
| - TestDisplayItem(htmlLayer, endSubsequenceType),
|
| - TestDisplayItem(rootLayer, endSubsequenceType));
|
| -}
|
| -
|
| -TEST_F(PaintLayerPainterTestForSlimmingPaintV2, CachedSubsequenceOnInterestRectChange)
|
| -{
|
| - setBodyInnerHTML(
|
| - "<div id='container1' style='position: relative; z-index: 1; width: 200px; height: 200px; background-color: blue'>"
|
| - " <div id='content1' style='position: absolute; width: 100px; height: 100px; background-color: green'></div>"
|
| - "</div>"
|
| - "<div id='container2' style='position: relative; z-index: 1; width: 200px; height: 200px; background-color: blue'>"
|
| - " <div id='content2a' style='position: absolute; width: 100px; height: 100px; background-color: green'></div>"
|
| - " <div id='content2b' style='position: absolute; top: 200px; width: 100px; height: 100px; background-color: green'></div>"
|
| - "</div>"
|
| - "<div id='container3' style='position: absolute; z-index: 2; left: 300px; top: 0; width: 200px; height: 200px; background-color: blue'>"
|
| - " <div id='content3' style='position: absolute; width: 200px; height: 200px; background-color: green'></div>"
|
| - "</div>");
|
| - rootPaintController().invalidateAll();
|
| -
|
| - PaintLayer& rootLayer = *layoutView().layer();
|
| - PaintLayer& htmlLayer = *toLayoutBoxModelObject(document().documentElement()->layoutObject())->layer();
|
| - LayoutObject& container1 = *document().getElementById("container1")->layoutObject();
|
| - PaintLayer& container1Layer = *toLayoutBoxModelObject(container1).layer();
|
| - LayoutObject& content1 = *document().getElementById("content1")->layoutObject();
|
| - LayoutObject& container2 = *document().getElementById("container2")->layoutObject();
|
| - PaintLayer& container2Layer = *toLayoutBoxModelObject(container2).layer();
|
| - LayoutObject& content2a = *document().getElementById("content2a")->layoutObject();
|
| - LayoutObject& container3 = *document().getElementById("container3")->layoutObject();
|
| - PaintLayer& container3Layer = *toLayoutBoxModelObject(container3).layer();
|
| - LayoutObject& content3 = *document().getElementById("content3")->layoutObject();
|
| -
|
| - LayoutRect interestRect(0, 0, 400, 300);
|
| - document().view()->updateAllLifecyclePhases(&interestRect);
|
| -
|
| - // Container1 is fully in the interest rect;
|
| - // Container2 is partly (including its stacking chidren) in the interest rect;
|
| - // Content2b is out of the interest rect and output nothing;
|
| - // Container3 is partly in the interest rect.
|
| - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 17,
|
| - TestDisplayItem(layoutView(), backgroundType),
|
| - TestDisplayItem(rootLayer, subsequenceType),
|
| - TestDisplayItem(htmlLayer, subsequenceType),
|
| - TestDisplayItem(container1, backgroundType),
|
| - TestDisplayItem(container1Layer, subsequenceType),
|
| - TestDisplayItem(content1, backgroundType),
|
| - TestDisplayItem(container1Layer, endSubsequenceType),
|
| - TestDisplayItem(container2, backgroundType),
|
| - TestDisplayItem(container2Layer, subsequenceType),
|
| - TestDisplayItem(content2a, backgroundType),
|
| - TestDisplayItem(container2Layer, endSubsequenceType),
|
| - TestDisplayItem(container3, backgroundType),
|
| - TestDisplayItem(container3Layer, subsequenceType),
|
| - TestDisplayItem(content3, backgroundType),
|
| - TestDisplayItem(container3Layer, endSubsequenceType),
|
| - TestDisplayItem(htmlLayer, endSubsequenceType),
|
| - TestDisplayItem(rootLayer, endSubsequenceType));
|
| -
|
| - // Container1 becomes partly in the interest rect, but uses cached subsequence
|
| - // because it was fully painted before;
|
| - // Container2's intersection with the interest rect changes;
|
| - // Content2b is out of the interest rect and outputs nothing;
|
| - // Container3 becomes out of the interest rect and outputs nothing.
|
| - LayoutRect newInterestRect(0, 100, 300, 300);
|
| - updateLifecyclePhasesToPaintClean(&newInterestRect);
|
| -
|
| - EXPECT_DISPLAY_LIST(rootPaintController().newDisplayItemList(), 11,
|
| - TestDisplayItem(layoutView(), cachedBackgroundType),
|
| - TestDisplayItem(rootLayer, subsequenceType),
|
| - TestDisplayItem(htmlLayer, subsequenceType),
|
| - TestDisplayItem(container1, cachedBackgroundType),
|
| - TestDisplayItem(container1Layer, cachedSubsequenceType),
|
| - TestDisplayItem(container2, cachedBackgroundType),
|
| - TestDisplayItem(container2Layer, subsequenceType),
|
| - TestDisplayItem(content2a, cachedBackgroundType),
|
| - TestDisplayItem(container2Layer, endSubsequenceType),
|
| - TestDisplayItem(htmlLayer, endSubsequenceType),
|
| - TestDisplayItem(rootLayer, endSubsequenceType));
|
| -
|
| - compositeForSlimmingPaintV2();
|
| -
|
| - EXPECT_DISPLAY_LIST(rootPaintController().displayItemList(), 13,
|
| - TestDisplayItem(layoutView(), backgroundType),
|
| - TestDisplayItem(rootLayer, subsequenceType),
|
| - TestDisplayItem(htmlLayer, subsequenceType),
|
| - TestDisplayItem(container1, backgroundType),
|
| - TestDisplayItem(container1Layer, subsequenceType),
|
| - TestDisplayItem(content1, backgroundType),
|
| - TestDisplayItem(container1Layer, endSubsequenceType),
|
| - TestDisplayItem(container2, backgroundType),
|
| - TestDisplayItem(container2Layer, subsequenceType),
|
| - TestDisplayItem(content2a, backgroundType),
|
| - TestDisplayItem(container2Layer, endSubsequenceType),
|
| - TestDisplayItem(htmlLayer, endSubsequenceType),
|
| - TestDisplayItem(rootLayer, endSubsequenceType));
|
| -}
|
| -
|
| } // namespace blink
|
|
|