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

Unified Diff: third_party/WebKit/Source/core/paint/PaintInvalidator.cpp

Issue 2849603004: Introduce PaintPropertyTreeBuilderFragmentContext and use it throughout. (Closed)
Patch Set: none Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
diff --git a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp b/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
index a093214a08042650d511df00983008f1384d1dde..066b9a2e9bd3c226f1ca383dfb77a0357947c441 100644
--- a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
@@ -107,9 +107,9 @@ LayoutRect PaintInvalidator::MapLocalRectToVisualRectInBacking(
auto container_contents_properties =
context.paint_invalidation_container->ContentsProperties();
- if (context.tree_builder_context_->current.transform ==
+ if (context.tree_builder_context_->fragments[0].current.transform ==
container_contents_properties.Transform() &&
- context.tree_builder_context_->current.clip ==
+ context.tree_builder_context_->fragments[0].current.clip ==
container_contents_properties.Clip()) {
result = LayoutRect(rect);
} else {
@@ -118,13 +118,14 @@ LayoutRect PaintInvalidator::MapLocalRectToVisualRectInBacking(
// snapping, when transforms are applied. If there is no transform,
// enclosingIntRect is applied in the last step of paint invalidation
// (see CompositedLayerMapping::setContentsNeedDisplayInRect()).
- if (!is_svg_child && context.tree_builder_context_->current.transform !=
- container_contents_properties.Transform())
+ if (!is_svg_child &&
+ context.tree_builder_context_->fragments[0].current.transform !=
+ container_contents_properties.Transform())
rect = Rect(EnclosingIntRect(rect));
PropertyTreeState current_tree_state(
- context.tree_builder_context_->current.transform,
- context.tree_builder_context_->current.clip, nullptr);
+ context.tree_builder_context_->fragments[0].current.transform,
+ context.tree_builder_context_->fragments[0].current.clip, nullptr);
FloatClipRect float_rect((FloatRect(rect)));
GeometryMapper::SourceToDestinationVisualRect(
@@ -181,12 +182,12 @@ LayoutPoint PaintInvalidator::ComputeLocationInBacking(
const auto* container_transform =
context.paint_invalidation_container->ContentsProperties().Transform();
- if (context.tree_builder_context_->current.transform !=
+ if (context.tree_builder_context_->fragments[0].current.transform !=
container_transform) {
FloatRect rect = FloatRect(FloatPoint(point), FloatSize());
GeometryMapper::SourceToDestinationRect(
- context.tree_builder_context_->current.transform, container_transform,
- rect);
+ context.tree_builder_context_->fragments[0].current.transform,
+ container_transform, rect);
point = LayoutPoint(rect.Location());
}
@@ -265,28 +266,33 @@ class ScopedUndoFrameViewContentClipAndScroll {
const PaintPropertyTreeBuilderContext& tree_builder_context)
: tree_builder_context_(
const_cast<PaintPropertyTreeBuilderContext&>(tree_builder_context)),
- saved_context_(tree_builder_context_.current) {
+ saved_context_(tree_builder_context_.fragments[0].current) {
DCHECK(!RuntimeEnabledFeatures::rootLayerScrollingEnabled());
- if (frame_view.ContentClip() == saved_context_.clip)
- tree_builder_context_.current.clip = saved_context_.clip->Parent();
+ if (frame_view.ContentClip() == saved_context_.clip) {
+ tree_builder_context_.fragments[0].current.clip =
+ saved_context_.clip->Parent();
+ }
if (const auto* scroll_translation = frame_view.ScrollTranslation()) {
- if (scroll_translation->ScrollNode() == saved_context_.scroll)
- tree_builder_context_.current.scroll = saved_context_.scroll->Parent();
+ if (scroll_translation->ScrollNode() == saved_context_.scroll) {
+ tree_builder_context_.fragments[0].current.scroll =
+ saved_context_.scroll->Parent();
+ }
if (scroll_translation == saved_context_.transform) {
- tree_builder_context_.current.transform =
+ tree_builder_context_.fragments[0].current.transform =
saved_context_.transform->Parent();
}
}
}
~ScopedUndoFrameViewContentClipAndScroll() {
- tree_builder_context_.current = saved_context_;
+ tree_builder_context_.fragments[0].current = saved_context_;
}
private:
PaintPropertyTreeBuilderContext& tree_builder_context_;
- PaintPropertyTreeBuilderContext::ContainingBlockContext saved_context_;
+ PaintPropertyTreeBuilderFragmentContext::ContainingBlockContext
+ saved_context_;
};
} // namespace
@@ -377,7 +383,7 @@ void PaintInvalidator::UpdateVisualRect(const LayoutObject& object,
// The paint offset should already be updated through
// PaintPropertyTreeBuilder::updatePropertiesForSelf.
DCHECK(context.tree_builder_context_);
- DCHECK(context.tree_builder_context_->current.paint_offset ==
+ DCHECK(context.tree_builder_context_->fragments[0].current.paint_offset ==
object.PaintOffset());
Optional<ScopedUndoFrameViewContentClipAndScroll>

Powered by Google App Engine
This is Rietveld 408576698