Chromium Code Reviews| Index: third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp |
| diff --git a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp |
| index 6f0e06e53564bcb6c90491d8103468fb997f45af..f226e8b872efdbde37720e8587a40518e86366a1 100644 |
| --- a/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp |
| +++ b/third_party/WebKit/Source/core/paint/PaintControllerPaintTest.cpp |
| @@ -8,6 +8,7 @@ |
| #include "core/layout/line/InlineTextBox.h" |
| #include "core/page/FocusController.h" |
| #include "core/paint/LayoutObjectDrawingRecorder.h" |
| +#include "core/paint/ObjectPaintProperties.h" |
| #include "core/paint/PaintLayerPainter.h" |
| #include "platform/graphics/GraphicsContext.h" |
| #include "platform/graphics/paint/DrawingDisplayItem.h" |
| @@ -63,4 +64,33 @@ TEST_P(PaintControllerPaintTestForSlimmingPaintV1AndV2, InlineRelayout) |
| TestDisplayItem(secondTextBox, foregroundType)); |
| } |
| +TEST_F(PaintControllerPaintTestForSlimmingPaintV2, ChunkIdClientCacheFlag) |
| +{ |
| + setBodyInnerHTML( |
| + "<div id='div' style='width: 200px; height: 200px; opacity: 0.5'>" |
|
chrishtr
2016/07/27 19:18:34
Why does this use case cause cache skipping?
Xianzhu
2016/07/27 19:25:55
This doesn't test cache skipping, but test the isJ
chrishtr
2016/07/27 19:28:25
Why is line 92 indicating that the client cache is
Xianzhu
2016/07/27 19:43:38
Added comment. A client is validly cached only if
|
| + " <div style='width: 100px; height: 100px; background-color: blue'></div>" |
| + "</div>"); |
| + PaintLayer& htmlLayer = *toLayoutBoxModelObject(document().documentElement()->layoutObject())->layer(); |
| + LayoutBlock& div = *toLayoutBlock(getLayoutObjectByElementId("div")); |
| + LayoutObject& subDiv = *div.firstChild(); |
| + |
| + EXPECT_DISPLAY_LIST(rootPaintController().getDisplayItemList(), 6, |
| + TestDisplayItem(layoutView(), documentBackgroundType), |
| + TestDisplayItem(htmlLayer, DisplayItem::Subsequence), |
| + TestDisplayItem(div, DisplayItem::BeginCompositing), |
| + TestDisplayItem(subDiv, backgroundType), |
| + TestDisplayItem(div, DisplayItem::EndCompositing), |
| + TestDisplayItem(htmlLayer, DisplayItem::EndSubsequence)); |
| + |
| + const EffectPaintPropertyNode* effectNode = div.objectPaintProperties()->effect(); |
| + EXPECT_EQ(0.5f, effectNode->opacity()); |
| + const PaintChunk& chunk = rootPaintController().paintChunks()[1]; |
| + EXPECT_EQ(*div.layer(), chunk.id->client); |
| + EXPECT_EQ(effectNode, chunk.properties.effect.get()); |
| + |
| + EXPECT_FALSE(div.layer()->isJustCreated()); |
| + EXPECT_FALSE(rootPaintController().clientCacheIsValid(div)); |
| + EXPECT_TRUE(rootPaintController().clientCacheIsValid(subDiv)); |
| +} |
| + |
| } // namespace blink |