Chromium Code Reviews| 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(); |