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

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

Issue 2872423002: Tweak PaintInvalidationReasons (Closed)
Patch Set: Rebaseline-cl Created 3 years, 7 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
OLDNEW
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/ObjectPaintInvalidator.h" 5 #include "core/paint/ObjectPaintInvalidator.h"
6 6
7 #include "core/layout/LayoutObject.h" 7 #include "core/layout/LayoutObject.h"
8 #include "core/layout/LayoutTestHelper.h" 8 #include "core/layout/LayoutTestHelper.h"
9 #include "core/paint/PaintLayer.h" 9 #include "core/paint/PaintLayer.h"
10 #include "platform/json/JSONValues.h" 10 #include "platform/json/JSONValues.h"
(...skipping 27 matching lines...) Expand all
38 "style='position: relative'></div>" 38 "style='position: relative'></div>"
39 " <div " 39 " <div "
40 "id='non-stacked-layered-child-of-composited-non-stacking-context' " 40 "id='non-stacked-layered-child-of-composited-non-stacking-context' "
41 "style='overflow: scroll'></div>" 41 "style='overflow: scroll'></div>"
42 " </div>" 42 " </div>"
43 "</div>"); 43 "</div>");
44 44
45 GetDocument().View()->SetTracksPaintInvalidations(true); 45 GetDocument().View()->SetTracksPaintInvalidations(true);
46 ObjectPaintInvalidator(*GetLayoutObjectByElementId("container")) 46 ObjectPaintInvalidator(*GetLayoutObjectByElementId("container"))
47 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants( 47 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants(
48 kPaintInvalidationSubtree); 48 PaintInvalidationReason::kSubtree);
49 std::unique_ptr<JSONArray> invalidations = 49 std::unique_ptr<JSONArray> invalidations =
50 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 50 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
51 GetDocument().View()->SetTracksPaintInvalidations(false); 51 GetDocument().View()->SetTracksPaintInvalidations(false);
52 52
53 ASSERT_EQ(4u, invalidations->size()); 53 ASSERT_EQ(4u, invalidations->size());
54 String s; 54 String s;
55 JSONObject::Cast(invalidations->at(0))->Get("object")->AsString(&s); 55 JSONObject::Cast(invalidations->at(0))->Get("object")->AsString(&s);
56 EXPECT_EQ(GetLayoutObjectByElementId("container")->DebugName(), s); 56 EXPECT_EQ(GetLayoutObjectByElementId("container")->DebugName(), s);
57 JSONObject::Cast(invalidations->at(1))->Get("object")->AsString(&s); 57 JSONObject::Cast(invalidations->at(1))->Get("object")->AsString(&s);
58 EXPECT_EQ(GetLayoutObjectByElementId("normal-child")->DebugName(), s); 58 EXPECT_EQ(GetLayoutObjectByElementId("normal-child")->DebugName(), s);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 EXPECT_TRUE(span->IsPaintInvalidationContainer()); 96 EXPECT_TRUE(span->IsPaintInvalidationContainer());
97 EXPECT_TRUE(span->StyleRef().IsStackingContext()); 97 EXPECT_TRUE(span->StyleRef().IsStackingContext());
98 EXPECT_EQ(composited_container, &target->ContainerForPaintInvalidation()); 98 EXPECT_EQ(composited_container, &target->ContainerForPaintInvalidation());
99 EXPECT_EQ(containing_block_layer, target->PaintingLayer()); 99 EXPECT_EQ(containing_block_layer, target->PaintingLayer());
100 100
101 // Traversing from target should mark needsRepaint on correct layers. 101 // Traversing from target should mark needsRepaint on correct layers.
102 EXPECT_FALSE(containing_block_layer->NeedsRepaint()); 102 EXPECT_FALSE(containing_block_layer->NeedsRepaint());
103 EXPECT_FALSE(composited_container_layer->NeedsRepaint()); 103 EXPECT_FALSE(composited_container_layer->NeedsRepaint());
104 ObjectPaintInvalidator(*target) 104 ObjectPaintInvalidator(*target)
105 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants( 105 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants(
106 kPaintInvalidationSubtree); 106 PaintInvalidationReason::kSubtree);
107 EXPECT_TRUE(containing_block_layer->NeedsRepaint()); 107 EXPECT_TRUE(containing_block_layer->NeedsRepaint());
108 EXPECT_TRUE(composited_container_layer->NeedsRepaint()); 108 EXPECT_TRUE(composited_container_layer->NeedsRepaint());
109 EXPECT_FALSE(span_layer->NeedsRepaint()); 109 EXPECT_FALSE(span_layer->NeedsRepaint());
110 110
111 GetDocument().View()->UpdateAllLifecyclePhases(); 111 GetDocument().View()->UpdateAllLifecyclePhases();
112 112
113 // Traversing from span should mark needsRepaint on correct layers for target. 113 // Traversing from span should mark needsRepaint on correct layers for target.
114 EXPECT_FALSE(containing_block_layer->NeedsRepaint()); 114 EXPECT_FALSE(containing_block_layer->NeedsRepaint());
115 EXPECT_FALSE(composited_container_layer->NeedsRepaint()); 115 EXPECT_FALSE(composited_container_layer->NeedsRepaint());
116 ObjectPaintInvalidator(*span) 116 ObjectPaintInvalidator(*span)
117 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants( 117 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants(
118 kPaintInvalidationSubtree); 118 PaintInvalidationReason::kSubtree);
119 EXPECT_TRUE(containing_block_layer->NeedsRepaint()); 119 EXPECT_TRUE(containing_block_layer->NeedsRepaint());
120 EXPECT_TRUE(composited_container_layer->NeedsRepaint()); 120 EXPECT_TRUE(composited_container_layer->NeedsRepaint());
121 EXPECT_TRUE(span_layer->NeedsRepaint()); 121 EXPECT_TRUE(span_layer->NeedsRepaint());
122 122
123 GetDocument().View()->UpdateAllLifecyclePhases(); 123 GetDocument().View()->UpdateAllLifecyclePhases();
124 124
125 // Traversing from compositedContainer should reach target. 125 // Traversing from compositedContainer should reach target.
126 GetDocument().View()->SetTracksPaintInvalidations(true); 126 GetDocument().View()->SetTracksPaintInvalidations(true);
127 EXPECT_FALSE(containing_block_layer->NeedsRepaint()); 127 EXPECT_FALSE(containing_block_layer->NeedsRepaint());
128 EXPECT_FALSE(composited_container_layer->NeedsRepaint()); 128 EXPECT_FALSE(composited_container_layer->NeedsRepaint());
129 ObjectPaintInvalidator(*composited_container) 129 ObjectPaintInvalidator(*composited_container)
130 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants( 130 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants(
131 kPaintInvalidationSubtree); 131 PaintInvalidationReason::kSubtree);
132 EXPECT_TRUE(containing_block_layer->NeedsRepaint()); 132 EXPECT_TRUE(containing_block_layer->NeedsRepaint());
133 EXPECT_TRUE(composited_container_layer->NeedsRepaint()); 133 EXPECT_TRUE(composited_container_layer->NeedsRepaint());
134 EXPECT_FALSE(span_layer->NeedsRepaint()); 134 EXPECT_FALSE(span_layer->NeedsRepaint());
135 135
136 std::unique_ptr<JSONArray> invalidations = 136 std::unique_ptr<JSONArray> invalidations =
137 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 137 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
138 GetDocument().View()->SetTracksPaintInvalidations(false); 138 GetDocument().View()->SetTracksPaintInvalidations(false);
139 139
140 ASSERT_EQ(4u, invalidations->size()); 140 ASSERT_EQ(4u, invalidations->size());
141 String s; 141 String s;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 EXPECT_TRUE(inner_span->StyleRef().IsStackingContext()); 188 EXPECT_TRUE(inner_span->StyleRef().IsStackingContext());
189 EXPECT_EQ(composited_container, &target->ContainerForPaintInvalidation()); 189 EXPECT_EQ(composited_container, &target->ContainerForPaintInvalidation());
190 EXPECT_EQ(containing_block_layer, target->PaintingLayer()); 190 EXPECT_EQ(containing_block_layer, target->PaintingLayer());
191 191
192 // Traversing from compositedContainer should reach target. 192 // Traversing from compositedContainer should reach target.
193 GetDocument().View()->SetTracksPaintInvalidations(true); 193 GetDocument().View()->SetTracksPaintInvalidations(true);
194 EXPECT_FALSE(containing_block_layer->NeedsRepaint()); 194 EXPECT_FALSE(containing_block_layer->NeedsRepaint());
195 EXPECT_FALSE(composited_container_layer->NeedsRepaint()); 195 EXPECT_FALSE(composited_container_layer->NeedsRepaint());
196 ObjectPaintInvalidator(*composited_container) 196 ObjectPaintInvalidator(*composited_container)
197 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants( 197 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants(
198 kPaintInvalidationSubtree); 198 PaintInvalidationReason::kSubtree);
199 EXPECT_TRUE(containing_block_layer->NeedsRepaint()); 199 EXPECT_TRUE(containing_block_layer->NeedsRepaint());
200 EXPECT_TRUE(composited_container_layer->NeedsRepaint()); 200 EXPECT_TRUE(composited_container_layer->NeedsRepaint());
201 EXPECT_FALSE(span_layer->NeedsRepaint()); 201 EXPECT_FALSE(span_layer->NeedsRepaint());
202 EXPECT_FALSE(inner_span_layer->NeedsRepaint()); 202 EXPECT_FALSE(inner_span_layer->NeedsRepaint());
203 203
204 std::unique_ptr<JSONArray> invalidations = 204 std::unique_ptr<JSONArray> invalidations =
205 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 205 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
206 GetDocument().View()->SetTracksPaintInvalidations(false); 206 GetDocument().View()->SetTracksPaintInvalidations(false);
207 207
208 ASSERT_EQ(4u, invalidations->size()); 208 ASSERT_EQ(4u, invalidations->size());
(...skipping 27 matching lines...) Expand all
236 EXPECT_TRUE(span->IsPaintInvalidationContainer()); 236 EXPECT_TRUE(span->IsPaintInvalidationContainer());
237 EXPECT_TRUE(span->StyleRef().IsStackingContext()); 237 EXPECT_TRUE(span->StyleRef().IsStackingContext());
238 EXPECT_EQ(span, &target->ContainerForPaintInvalidation()); 238 EXPECT_EQ(span, &target->ContainerForPaintInvalidation());
239 EXPECT_EQ(target_layer, target->PaintingLayer()); 239 EXPECT_EQ(target_layer, target->PaintingLayer());
240 240
241 // Traversing from span should reach target. 241 // Traversing from span should reach target.
242 GetDocument().View()->SetTracksPaintInvalidations(true); 242 GetDocument().View()->SetTracksPaintInvalidations(true);
243 EXPECT_FALSE(span_layer->NeedsRepaint()); 243 EXPECT_FALSE(span_layer->NeedsRepaint());
244 ObjectPaintInvalidator(*span) 244 ObjectPaintInvalidator(*span)
245 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants( 245 .InvalidateDisplayItemClientsIncludingNonCompositingDescendants(
246 kPaintInvalidationSubtree); 246 PaintInvalidationReason::kSubtree);
247 EXPECT_TRUE(span_layer->NeedsRepaint()); 247 EXPECT_TRUE(span_layer->NeedsRepaint());
248 248
249 std::unique_ptr<JSONArray> invalidations = 249 std::unique_ptr<JSONArray> invalidations =
250 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 250 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
251 GetDocument().View()->SetTracksPaintInvalidations(false); 251 GetDocument().View()->SetTracksPaintInvalidations(false);
252 252
253 ASSERT_EQ(3u, invalidations->size()); 253 ASSERT_EQ(3u, invalidations->size());
254 String s; 254 String s;
255 JSONObject::Cast(invalidations->at(0))->Get("object")->AsString(&s); 255 JSONObject::Cast(invalidations->at(0))->Get("object")->AsString(&s);
256 EXPECT_EQ(span->DebugName(), s); 256 EXPECT_EQ(span->DebugName(), s);
257 JSONObject::Cast(invalidations->at(1))->Get("object")->AsString(&s); 257 JSONObject::Cast(invalidations->at(1))->Get("object")->AsString(&s);
258 EXPECT_EQ("LayoutText #text", s); 258 EXPECT_EQ("LayoutText #text", s);
259 JSONObject::Cast(invalidations->at(2))->Get("object")->AsString(&s); 259 JSONObject::Cast(invalidations->at(2))->Get("object")->AsString(&s);
260 EXPECT_EQ(target->DebugName(), s); 260 EXPECT_EQ(target->DebugName(), s);
261 } 261 }
262 262
263 } // namespace blink 263 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698