OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/layout/compositing/CompositingInputsUpdater.h" | 5 #include "core/layout/compositing/CompositingInputsUpdater.h" |
6 | 6 |
7 #include "core/frame/FrameView.h" | 7 #include "core/frame/FrameView.h" |
8 #include "core/layout/LayoutBlock.h" | 8 #include "core/layout/LayoutBlock.h" |
9 #include "core/layout/LayoutView.h" | 9 #include "core/layout/LayoutView.h" |
10 #include "core/layout/compositing/CompositedLayerMapping.h" | 10 #include "core/layout/compositing/CompositedLayerMapping.h" |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 rareProperties.opacityAncestor = parent->isTransparent() ? parent :
parent->opacityAncestor(); | 145 rareProperties.opacityAncestor = parent->isTransparent() ? parent :
parent->opacityAncestor(); |
146 rareProperties.transformAncestor = parent->transform() ? parent : pa
rent->transformAncestor(); | 146 rareProperties.transformAncestor = parent->transform() ? parent : pa
rent->transformAncestor(); |
147 rareProperties.filterAncestor = parent->hasFilterInducingProperty()
? parent : parent->filterAncestor(); | 147 rareProperties.filterAncestor = parent->hasFilterInducingProperty()
? parent : parent->filterAncestor(); |
148 bool layerIsFixedPosition = layer->layoutObject()->style()->position
() == FixedPosition; | 148 bool layerIsFixedPosition = layer->layoutObject()->style()->position
() == FixedPosition; |
149 rareProperties.nearestFixedPositionLayer = layerIsFixedPosition ? la
yer : parent->nearestFixedPositionLayer(); | 149 rareProperties.nearestFixedPositionLayer = layerIsFixedPosition ? la
yer : parent->nearestFixedPositionLayer(); |
150 | 150 |
151 if (info.hasAncestorWithClipRelatedProperty) { | 151 if (info.hasAncestorWithClipRelatedProperty) { |
152 const PaintLayer* parentLayerOnClippingContainerChain = findPare
ntLayerOnClippingContainerChain(layer); | 152 const PaintLayer* parentLayerOnClippingContainerChain = findPare
ntLayerOnClippingContainerChain(layer); |
153 const bool parentHasClipRelatedProperty = parentLayerOnClippingC
ontainerChain->layoutObject()->hasClipRelatedProperty(); | 153 const bool parentHasClipRelatedProperty = parentLayerOnClippingC
ontainerChain->layoutObject()->hasClipRelatedProperty(); |
154 properties.clippingContainer = parentHasClipRelatedProperty ? pa
rentLayerOnClippingContainerChain->layoutObject() : parentLayerOnClippingContain
erChain->clippingContainer(); | 154 properties.clippingContainer = parentHasClipRelatedProperty ? pa
rentLayerOnClippingContainerChain->layoutObject() : parentLayerOnClippingContain
erChain->clippingContainer(); |
| 155 |
| 156 if (layer->layoutObject()->isOutOfFlowPositioned() && !layer->su
btreeIsInvisible()) { |
| 157 const PaintLayer* clippingLayer = properties.clippingContain
er ? properties.clippingContainer->enclosingLayer() : layer->compositor()->rootL
ayer(); |
| 158 if (hasClippedStackingAncestor(layer, clippingLayer)) |
| 159 rareProperties.clipParent = clippingLayer; |
| 160 } |
155 } | 161 } |
156 | 162 |
157 if (info.lastScrollingAncestor) { | 163 if (info.lastScrollingAncestor) { |
158 const LayoutObject* containingBlock = layer->layoutObject()->con
tainingBlock(); | 164 const LayoutObject* containingBlock = layer->layoutObject()->con
tainingBlock(); |
159 const PaintLayer* parentLayerOnContainingBlockChain = findParent
LayerOnContainingBlockChain(containingBlock); | 165 const PaintLayer* parentLayerOnContainingBlockChain = findParent
LayerOnContainingBlockChain(containingBlock); |
160 | 166 |
161 rareProperties.ancestorScrollingLayer = parentLayerOnContainingB
lockChain->ancestorScrollingLayer(); | 167 rareProperties.ancestorScrollingLayer = parentLayerOnContainingB
lockChain->ancestorScrollingLayer(); |
162 if (parentLayerOnContainingBlockChain->scrollsOverflow()) | 168 if (parentLayerOnContainingBlockChain->scrollsOverflow()) |
163 rareProperties.ancestorScrollingLayer = parentLayerOnContain
ingBlockChain; | 169 rareProperties.ancestorScrollingLayer = parentLayerOnContain
ingBlockChain; |
164 | 170 |
165 if (layer->layoutObject()->isOutOfFlowPositioned() && !layer->su
btreeIsInvisible()) { | |
166 const PaintLayer* clippingLayer = properties.clippingContain
er ? properties.clippingContainer->enclosingLayer() : layer->compositor()->rootL
ayer(); | |
167 if (hasClippedStackingAncestor(layer, clippingLayer)) | |
168 rareProperties.clipParent = clippingLayer; | |
169 } | |
170 | |
171 if (layer->stackingNode()->isStacked() | 171 if (layer->stackingNode()->isStacked() |
172 && rareProperties.ancestorScrollingLayer | 172 && rareProperties.ancestorScrollingLayer |
173 && !info.ancestorStackingContext->layoutObject()->isDescenda
ntOf(rareProperties.ancestorScrollingLayer->layoutObject())) | 173 && !info.ancestorStackingContext->layoutObject()->isDescenda
ntOf(rareProperties.ancestorScrollingLayer->layoutObject())) |
174 rareProperties.scrollParent = rareProperties.ancestorScrolli
ngLayer; | 174 rareProperties.scrollParent = rareProperties.ancestorScrolli
ngLayer; |
175 } | 175 } |
176 } | 176 } |
177 | 177 |
178 layer->updateAncestorDependentCompositingInputs(properties, rareProperti
es, info.hasAncestorWithClipPath); | 178 layer->updateAncestorDependentCompositingInputs(properties, rareProperti
es, info.hasAncestorWithClipPath); |
179 } | 179 } |
180 | 180 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 ASSERT(!layer->childNeedsCompositingInputsUpdate()); | 215 ASSERT(!layer->childNeedsCompositingInputsUpdate()); |
216 ASSERT(!layer->needsCompositingInputsUpdate()); | 216 ASSERT(!layer->needsCompositingInputsUpdate()); |
217 | 217 |
218 for (PaintLayer* child = layer->firstChild(); child; child = child->nextSibl
ing()) | 218 for (PaintLayer* child = layer->firstChild(); child; child = child->nextSibl
ing()) |
219 assertNeedsCompositingInputsUpdateBitsCleared(child); | 219 assertNeedsCompositingInputsUpdateBitsCleared(child); |
220 } | 220 } |
221 | 221 |
222 #endif | 222 #endif |
223 | 223 |
224 } // namespace blink | 224 } // namespace blink |
OLD | NEW |