| OLD | NEW |
| 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 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 | 191 |
| 192 return point; | 192 return point; |
| 193 } | 193 } |
| 194 | 194 |
| 195 void PaintInvalidator::updatePaintingLayer(const LayoutObject& object, | 195 void PaintInvalidator::updatePaintingLayer(const LayoutObject& object, |
| 196 PaintInvalidatorContext& context) { | 196 PaintInvalidatorContext& context) { |
| 197 if (object.hasLayer() && | 197 if (object.hasLayer() && |
| 198 toLayoutBoxModelObject(object).hasSelfPaintingLayer()) { | 198 toLayoutBoxModelObject(object).hasSelfPaintingLayer()) { |
| 199 context.paintingLayer = toLayoutBoxModelObject(object).layer(); | 199 context.paintingLayer = toLayoutBoxModelObject(object).layer(); |
| 200 } else if (object.isColumnSpanAll() || | 200 } else if (object.isColumnSpanAll() || |
| 201 (object.isFloating() && !object.parent()->isLayoutBlock())) { | 201 object.isFloatingWithNonContainingBlockParent()) { |
| 202 // See LayoutObject::paintingLayer() for the special-cases of floating under | 202 // See LayoutObject::paintingLayer() for the special-cases of floating under |
| 203 // inline and multicolumn. | 203 // inline and multicolumn. |
| 204 context.paintingLayer = object.paintingLayer(); | 204 context.paintingLayer = object.paintingLayer(); |
| 205 } | 205 } |
| 206 | 206 |
| 207 if (object.isLayoutBlockFlow() && toLayoutBlockFlow(object).containsFloats()) | 207 if (object.isLayoutBlockFlow() && toLayoutBlockFlow(object).containsFloats()) |
| 208 context.paintingLayer->setNeedsPaintPhaseFloat(); | 208 context.paintingLayer->setNeedsPaintPhaseFloat(); |
| 209 | 209 |
| 210 if (object == context.paintingLayer->layoutObject()) | 210 if (object == context.paintingLayer->layoutObject()) |
| 211 return; | 211 return; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 // paintInvalidationContainerForStackedContents is only for stacked | 277 // paintInvalidationContainerForStackedContents is only for stacked |
| 278 // descendants in its own frame, because it doesn't establish stacking | 278 // descendants in its own frame, because it doesn't establish stacking |
| 279 // context for stacked contents in sub-frames. | 279 // context for stacked contents in sub-frames. |
| 280 // Contents stacked in the root stacking context in this frame should use | 280 // Contents stacked in the root stacking context in this frame should use |
| 281 // this frame's paintInvalidationContainer. | 281 // this frame's paintInvalidationContainer. |
| 282 context.paintInvalidationContainerForStackedContents = | 282 context.paintInvalidationContainerForStackedContents = |
| 283 context.paintInvalidationContainer; | 283 context.paintInvalidationContainer; |
| 284 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) | 284 if (!RuntimeEnabledFeatures::rootLayerScrollingEnabled()) |
| 285 undoFrameViewContentClipAndScroll.emplace( | 285 undoFrameViewContentClipAndScroll.emplace( |
| 286 *toLayoutView(object).frameView(), context); | 286 *toLayoutView(object).frameView(), context); |
| 287 } else if (object.isFloating() && !object.parent()->isLayoutBlock()) { | 287 } else if (object.isFloatingWithNonContainingBlockParent()) { |
| 288 // See LayoutObject::paintingLayer() for specialty of floating objects. | |
| 289 context.paintInvalidationContainer = | 288 context.paintInvalidationContainer = |
| 290 &object.containerForPaintInvalidation(); | 289 &object.containerForPaintInvalidation(); |
| 291 } else if (object.styleRef().isStacked() && | 290 } else if (object.styleRef().isStacked() && |
| 292 // This is to exclude some objects (e.g. LayoutText) inheriting | 291 // This is to exclude some objects (e.g. LayoutText) inheriting |
| 293 // stacked style from parent but aren't actually stacked. | 292 // stacked style from parent but aren't actually stacked. |
| 294 object.hasLayer() && | 293 object.hasLayer() && |
| 295 context.paintInvalidationContainer != | 294 context.paintInvalidationContainer != |
| 296 context.paintInvalidationContainerForStackedContents) { | 295 context.paintInvalidationContainerForStackedContents) { |
| 297 // The current object is stacked, so we should use | 296 // The current object is stacked, so we should use |
| 298 // m_paintInvalidationContainerForStackedContents as its paint invalidation | 297 // m_paintInvalidationContainerForStackedContents as its paint invalidation |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 PaintInvalidatorContext::ForcedSubtreeInvalidationRectUpdate; | 442 PaintInvalidatorContext::ForcedSubtreeInvalidationRectUpdate; |
| 444 } | 443 } |
| 445 | 444 |
| 446 void PaintInvalidator::processPendingDelayedPaintInvalidations() { | 445 void PaintInvalidator::processPendingDelayedPaintInvalidations() { |
| 447 for (auto target : m_pendingDelayedPaintInvalidations) | 446 for (auto target : m_pendingDelayedPaintInvalidations) |
| 448 target->getMutableForPainting().setShouldDoFullPaintInvalidation( | 447 target->getMutableForPainting().setShouldDoFullPaintInvalidation( |
| 449 PaintInvalidationDelayedFull); | 448 PaintInvalidationDelayedFull); |
| 450 } | 449 } |
| 451 | 450 |
| 452 } // namespace blink | 451 } // namespace blink |
| OLD | NEW |