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

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

Issue 2346343003: Fix or workaround several issues of slimmingPaintInvalidation on spv1 (Closed)
Patch Set: Created 4 years, 3 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 98c7ff587eb23bc5538ef96a84bd6831d0211b32..70cd7730a31821981e2102dbb79280262e1b0e56 100644
--- a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp
@@ -182,7 +182,9 @@ void PaintInvalidator::updateContext(const LayoutObject& object, PaintInvalidato
context.forcedSubtreeInvalidationFlags |= PaintInvalidatorContext::ForcedSubtreeInvalidationChecking;
// TODO(crbug.com/637313): This is temporary before we support filters in paint property tree.
- if (object.hasFilterInducingProperty())
+ // TODO(crbug.com/648274): This is a workaround for multi-column contents.
+ // TODO(crbug.com/648409): This is a workaround for inline contents in vertical-rl container.
+ if (object.hasFilterInducingProperty() || object.isLayoutFlowThread() || object.hasFlippedBlocksWritingMode())
pdr. 2016/09/19 22:19:15 Can the hasFlippedBlocksWritingMode check be made
Xianzhu 2016/09/19 23:37:40 This would be complex: we need to check for the fl
Xianzhu 2016/09/19 23:39:45 P.S. I'm using the workarounds to see how many tes
context.forcedSubtreeInvalidationFlags |= PaintInvalidatorContext::ForcedSubtreeSlowPathRect;
context.oldBounds = object.previousPaintInvalidationRect();
@@ -206,8 +208,17 @@ void PaintInvalidator::invalidatePaintIfNeeded(FrameView& frameView, PaintInvali
context.paintInvalidationContainer = context.paintInvalidationContainerForStackedContents = &layoutView->containerForPaintInvalidation();
context.paintingLayer = layoutView->layer();
- if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled())
+ if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
+ // Undo content clip and scroll before invalidating FrameView scrollbars.
pdr. 2016/09/19 22:19:15 If there is a scroll translation (because the fram
Xianzhu 2016/09/19 23:37:40 Thought of this but chose the current method becau
+ PaintPropertyTreeBuilderContext& treeBuilderContext = const_cast<PaintPropertyTreeBuilderContext&>(context.treeBuilderContext);
+ const ClipPaintPropertyNode* clip = treeBuilderContext.current.clip;
+ const ScrollPaintPropertyNode* scroll = treeBuilderContext.current.scroll;
+ treeBuilderContext.current.clip = clip->parent();
+ treeBuilderContext.current.scroll = scroll->parent();
pdr. 2016/09/19 22:19:15 This will be incorrect if the frameview does not s
Xianzhu 2016/09/19 23:37:40 Fixed. No test hit the bug because if the frameVi
frameView.invalidatePaintOfScrollControlsIfNeeded(context);
+ treeBuilderContext.current.clip = clip;
+ treeBuilderContext.current.scroll = scroll;
+ }
if (frameView.frame().selection().isCaretBoundsDirty())
frameView.frame().selection().invalidateCaretRect();

Powered by Google App Engine
This is Rietveld 408576698