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

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

Issue 2569483003: [SPInvalidation] Workaround bug about out-of-flow positioned under column spanner (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « third_party/WebKit/LayoutTests/TestExpectations ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/PaintInvalidator.h" 5 #include "core/paint/PaintInvalidator.h"
6 6
7 #include "core/editing/FrameSelection.h" 7 #include "core/editing/FrameSelection.h"
8 #include "core/frame/FrameView.h" 8 #include "core/frame/FrameView.h"
9 #include "core/frame/LocalFrame.h" 9 #include "core/frame/LocalFrame.h"
10 #include "core/frame/Settings.h" 10 #include "core/frame/Settings.h"
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 object.containerForPaintInvalidation()); 321 object.containerForPaintInvalidation());
322 DCHECK(context.paintingLayer == object.paintingLayer()); 322 DCHECK(context.paintingLayer == object.paintingLayer());
323 323
324 if (object.mayNeedPaintInvalidationSubtree()) 324 if (object.mayNeedPaintInvalidationSubtree())
325 context.forcedSubtreeInvalidationFlags |= 325 context.forcedSubtreeInvalidationFlags |=
326 PaintInvalidatorContext::ForcedSubtreeInvalidationChecking; 326 PaintInvalidatorContext::ForcedSubtreeInvalidationChecking;
327 327
328 // TODO(crbug.com/637313): This is temporary before we support filters in 328 // TODO(crbug.com/637313): This is temporary before we support filters in
329 // paint property tree. 329 // paint property tree.
330 // TODO(crbug.com/648274): This is a workaround for multi-column contents. 330 // TODO(crbug.com/648274): This is a workaround for multi-column contents.
331 if (object.hasFilterInducingProperty() || object.isLayoutFlowThread()) 331 // TODO(crbug.com/672989): This is a workaround for out-of-flow positioned
332 // objects in multi-column spanner.
333 if (object.hasFilterInducingProperty() || object.isLayoutFlowThread() ||
334 object.isColumnSpanAll()) {
332 context.forcedSubtreeInvalidationFlags |= 335 context.forcedSubtreeInvalidationFlags |=
333 PaintInvalidatorContext::ForcedSubtreeSlowPathRect; 336 PaintInvalidatorContext::ForcedSubtreeSlowPathRect;
337 }
334 338
335 ObjectPaintInvalidator objectPaintInvalidator(object); 339 ObjectPaintInvalidator objectPaintInvalidator(object);
336 context.oldVisualRect = object.previousVisualRect(); 340 context.oldVisualRect = object.previousVisualRect();
337 context.oldLocation = objectPaintInvalidator.previousLocationInBacking(); 341 context.oldLocation = objectPaintInvalidator.previousLocationInBacking();
338 context.newVisualRect = computeVisualRectInBacking(object, context); 342 context.newVisualRect = computeVisualRectInBacking(object, context);
339 context.newLocation = computeLocationInBacking(object, context); 343 context.newLocation = computeLocationInBacking(object, context);
340 context.oldPaintOffset = object.previousPaintOffset(); 344 context.oldPaintOffset = object.previousPaintOffset();
341 context.newPaintOffset = context.treeBuilderContext.current.paintOffset; 345 context.newPaintOffset = context.treeBuilderContext.current.paintOffset;
342 346
343 IntSize adjustment = object.scrollAdjustmentForPaintInvalidation( 347 IntSize adjustment = object.scrollAdjustmentForPaintInvalidation(
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 PaintInvalidatorContext::ForcedSubtreeInvalidationRectUpdate; 442 PaintInvalidatorContext::ForcedSubtreeInvalidationRectUpdate;
439 } 443 }
440 444
441 void PaintInvalidator::processPendingDelayedPaintInvalidations() { 445 void PaintInvalidator::processPendingDelayedPaintInvalidations() {
442 for (auto target : m_pendingDelayedPaintInvalidations) 446 for (auto target : m_pendingDelayedPaintInvalidations)
443 target->getMutableForPainting().setShouldDoFullPaintInvalidation( 447 target->getMutableForPainting().setShouldDoFullPaintInvalidation(
444 PaintInvalidationDelayedFull); 448 PaintInvalidationDelayedFull);
445 } 449 }
446 450
447 } // namespace blink 451 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/TestExpectations ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698