| Index: third_party/WebKit/Source/core/layout/compositing/CompositingLayerAssigner.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositingLayerAssigner.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositingLayerAssigner.cpp
|
| index 873ec4b5fd101c78e09ce1c5865c6cd95fda0a37..3bee691fcd4bf669867c258676cfd9cb16f1f4c1 100644
|
| --- a/third_party/WebKit/Source/core/layout/compositing/CompositingLayerAssigner.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/compositing/CompositingLayerAssigner.cpp
|
| @@ -112,10 +112,10 @@ CompositingStateTransitionType CompositingLayerAssigner::computeCompositedLayerU
|
| return update;
|
| }
|
|
|
| -CompositingReasons CompositingLayerAssigner::getReasonsPreventingSquashing(const PaintLayer* layer, const CompositingLayerAssigner::SquashingState& squashingState)
|
| +SquashingDisallowedReasons CompositingLayerAssigner::getReasonsPreventingSquashing(const PaintLayer* layer, const CompositingLayerAssigner::SquashingState& squashingState)
|
| {
|
| if (!squashingState.haveAssignedBackingsToEntireSquashingLayerSubtree)
|
| - return CompositingReasonSquashingWouldBreakPaintOrder;
|
| + return SquashingDisallowedReasonWouldBreakPaintOrder;
|
|
|
| ASSERT(squashingState.hasMostRecentMapping);
|
| const PaintLayer& squashingLayer = squashingState.mostRecentMapping->owningLayer();
|
| @@ -128,55 +128,55 @@ CompositingReasons CompositingLayerAssigner::getReasonsPreventingSquashing(const
|
| //
|
| // compositing/video/video-controls-layer-creation.html
|
| if (layer->layoutObject()->isVideo() || squashingLayer.layoutObject()->isVideo())
|
| - return CompositingReasonSquashingVideoIsDisallowed;
|
| + return SquashingDisallowedReasonSquashingVideoIsDisallowed;
|
|
|
| // Don't squash iframes, frames or plugins.
|
| // FIXME: this is only necessary because there is frame code that assumes that composited frames are not squashed.
|
| if (layer->layoutObject()->isLayoutPart() || squashingLayer.layoutObject()->isLayoutPart())
|
| - return CompositingReasonSquashingLayoutPartIsDisallowed;
|
| + return SquashingDisallowedReasonSquashingLayoutPartIsDisallowed;
|
|
|
| if (layer->reflectionInfo())
|
| - return CompositingReasonSquashingReflectionIsDisallowed;
|
| + return SquashingDisallowedReasonSquashingReflectionIsDisallowed;
|
|
|
| if (squashingWouldExceedSparsityTolerance(layer, squashingState))
|
| - return CompositingReasonSquashingSparsityExceeded;
|
| + return SquashingDisallowedReasonSquashingSparsityExceeded;
|
|
|
| if (layer->layoutObject()->style()->hasBlendMode() || squashingLayer.layoutObject()->style()->hasBlendMode())
|
| - return CompositingReasonSquashingBlendingIsDisallowed;
|
| + return SquashingDisallowedReasonSquashingBlendingIsDisallowed;
|
|
|
| // FIXME: this is not efficient, since it walks up the tree. We should store these values on the CompositingInputsCache.
|
| if (layer->clippingContainer() != squashingLayer.clippingContainer() && !squashingLayer.compositedLayerMapping()->containingSquashedLayer(layer->clippingContainer(), squashingState.nextSquashedLayerIndex))
|
| - return CompositingReasonSquashingClippingContainerMismatch;
|
| + return SquashingDisallowedReasonClippingContainerMismatch;
|
|
|
| // Composited descendants need to be clipped by a child containment graphics layer, which would not be available if the layer is
|
| // squashed (and therefore has no CLM nor a child containment graphics layer).
|
| if (m_compositor->clipsCompositingDescendants(layer))
|
| - return CompositingReasonSquashedLayerClipsCompositingDescendants;
|
| + return SquashingDisallowedReasonSquashedLayerClipsCompositingDescendants;
|
|
|
| if (layer->scrollsWithRespectTo(&squashingLayer))
|
| - return CompositingReasonScrollsWithRespectToSquashingLayer;
|
| + return SquashingDisallowedReasonScrollsWithRespectToSquashingLayer;
|
|
|
| if (layer->scrollParent() && layer->hasCompositingDescendant())
|
| - return CompositingReasonScrollChildWithCompositedDescendants;
|
| + return SquashingDisallowedReasonScrollChildWithCompositedDescendants;
|
|
|
| if (layer->opacityAncestor() != squashingLayer.opacityAncestor())
|
| - return CompositingReasonSquashingOpacityAncestorMismatch;
|
| + return SquashingDisallowedReasonOpacityAncestorMismatch;
|
|
|
| if (layer->transformAncestor() != squashingLayer.transformAncestor())
|
| - return CompositingReasonSquashingTransformAncestorMismatch;
|
| + return SquashingDisallowedReasonTransformAncestorMismatch;
|
|
|
| if (layer->hasFilter() || layer->filterAncestor() != squashingLayer.filterAncestor())
|
| - return CompositingReasonSquashingFilterMismatch;
|
| + return SquashingDisallowedReasonFilterMismatch;
|
|
|
| if (layer->nearestFixedPositionLayer() != squashingLayer.nearestFixedPositionLayer())
|
| - return CompositingReasonSquashingNearestFixedPositionMismatch;
|
| + return SquashingDisallowedReasonNearestFixedPositionMismatch;
|
| ASSERT(layer->layoutObject()->style()->position() != FixedPosition);
|
|
|
| if ((squashingLayer.layoutObject()->style()->subtreeWillChangeContents() && squashingLayer.layoutObject()->style()->isRunningAnimationOnCompositor())
|
| || squashingLayer.layoutObject()->style()->shouldCompositeForCurrentAnimations())
|
| - return CompositingReasonSquashingLayerIsAnimating;
|
| + return SquashingDisallowedReasonSquashingLayerIsAnimating;
|
|
|
| - return CompositingReasonNone;
|
| + return SquashingDisallowedReasonsNone;
|
| }
|
|
|
| void CompositingLayerAssigner::updateSquashingAssignment(PaintLayer* layer, SquashingState& squashingState, const CompositingStateTransitionType compositedLayerUpdate,
|
| @@ -248,9 +248,11 @@ static ScrollingCoordinator* scrollingCoordinatorFromLayer(PaintLayer& layer)
|
| void CompositingLayerAssigner::assignLayersToBackingsInternal(PaintLayer* layer, SquashingState& squashingState, Vector<PaintLayer*>& layersNeedingPaintInvalidation)
|
| {
|
| if (requiresSquashing(layer->compositingReasons())) {
|
| - CompositingReasons reasonsPreventingSquashing = getReasonsPreventingSquashing(layer, squashingState);
|
| - if (reasonsPreventingSquashing)
|
| - layer->setCompositingReasons(layer->compositingReasons() | reasonsPreventingSquashing);
|
| + SquashingDisallowedReasons reasonsPreventingSquashing = getReasonsPreventingSquashing(layer, squashingState);
|
| + if (reasonsPreventingSquashing) {
|
| + layer->setCompositingReasons(layer->compositingReasons() | CompositingReasonSquashingDisallowed);
|
| + layer->setSquashingDisallowedReasons(reasonsPreventingSquashing);
|
| + }
|
| }
|
|
|
| CompositingStateTransitionType compositedLayerUpdate = computeCompositedLayerUpdate(layer);
|
|
|