| Index: third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp b/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp
|
| index d363bd8b79152c07a7e200a5cef31b5ec8f15c29..346651b5ec021295be6122363e840e237a1eb5bb 100644
|
| --- a/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/PrePaintTreeWalk.cpp
|
| @@ -19,6 +19,7 @@ struct PrePaintTreeWalkContext {
|
| PrePaintTreeWalkContext()
|
| : tree_builder_context(
|
| WTF::WrapUnique(new PaintPropertyTreeBuilderContext)),
|
| + paint_invalidator_context(WTF::WrapUnique(new PaintInvalidatorContext)),
|
| ancestor_overflow_paint_layer(nullptr),
|
| ancestor_transformed_or_root_paint_layer(nullptr) {}
|
|
|
| @@ -29,7 +30,8 @@ struct PrePaintTreeWalkContext {
|
| ? new PaintPropertyTreeBuilderContext(
|
| *parent_context.tree_builder_context)
|
| : nullptr)),
|
| - paint_invalidator_context(parent_context.paint_invalidator_context),
|
| + paint_invalidator_context(WTF::WrapUnique(new PaintInvalidatorContext(
|
| + *parent_context.paint_invalidator_context))),
|
| ancestor_overflow_paint_layer(
|
| parent_context.ancestor_overflow_paint_layer),
|
| ancestor_transformed_or_root_paint_layer(
|
| @@ -46,7 +48,7 @@ struct PrePaintTreeWalkContext {
|
| // See: https://crbug.com/698653.
|
| std::unique_ptr<PaintPropertyTreeBuilderContext> tree_builder_context;
|
|
|
| - PaintInvalidatorContext paint_invalidator_context;
|
| + std::unique_ptr<PaintInvalidatorContext> paint_invalidator_context;
|
|
|
| // The ancestor in the PaintLayer tree which has overflow clip, or
|
| // is the root layer. Note that it is tree ancestor, not containing
|
| @@ -93,7 +95,7 @@ void PrePaintTreeWalk::Walk(FrameView& frame_view,
|
| }
|
| paint_invalidator_.InvalidatePaint(frame_view,
|
| context.tree_builder_context.get(),
|
| - context.paint_invalidator_context);
|
| + *context.paint_invalidator_context);
|
|
|
| if (LayoutView* view = frame_view.GetLayoutView()) {
|
| Walk(*view, context);
|
| @@ -155,7 +157,7 @@ void PrePaintTreeWalk::InvalidatePaintLayerOptimizationsIfNeeded(
|
| PaintLayer& paint_layer = *ToLayoutBoxModelObject(object).Layer();
|
| if (object.StyleRef().HasTransform() ||
|
| &object ==
|
| - context.paint_invalidator_context.paint_invalidation_container) {
|
| + context.paint_invalidator_context->paint_invalidation_container) {
|
| context.ancestor_transformed_or_root_paint_layer = &paint_layer;
|
| }
|
|
|
| @@ -174,7 +176,7 @@ void PrePaintTreeWalk::InvalidatePaintLayerOptimizationsIfNeeded(
|
| if (InvalidatePaintLayerOptimizationsForFragment(
|
| object, context.ancestor_transformed_or_root_paint_layer, fragment,
|
| *fragment_data)) {
|
| - context.paint_invalidator_context.forced_subtree_invalidation_flags |=
|
| + context.paint_invalidator_context->forced_subtree_invalidation_flags |=
|
| PaintInvalidatorContext::kForcedSubtreeVisualRectUpdate;
|
| }
|
| fragment_data = fragment_data->NextFragment();
|
| @@ -281,7 +283,8 @@ bool PrePaintTreeWalk::NeedsTreeBuilderContextUpdate(
|
| parent_context.tree_builder_context->force_subtree_update) ||
|
| // If the object needs visual rect update, we should update tree
|
| // builder context which is needed by visual rect update.
|
| - parent_context.paint_invalidator_context.NeedsVisualRectUpdate(object);
|
| + parent_context.paint_invalidator_context->NeedsVisualRectUpdate(
|
| + object);
|
| }
|
|
|
| void PrePaintTreeWalk::ClearPreviousClipRectsForTesting(
|
| @@ -312,7 +315,7 @@ void PrePaintTreeWalk::Walk(const LayoutObject& object,
|
| }
|
|
|
| paint_invalidator_.InvalidatePaint(object, context.tree_builder_context.get(),
|
| - context.paint_invalidator_context);
|
| + *context.paint_invalidator_context);
|
|
|
| if (context.tree_builder_context) {
|
| property_tree_builder_.UpdatePropertiesForChildren(
|
|
|