// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "platform/graphics/CompositingReasons.h" #include "wtf/StdLibExtras.h" namespace blink { const CompositingReasonStringMap kCompositingReasonStringMap[] = { { CompositingReasonNone, "Unknown", "No reason given" }, { CompositingReason3DTransform, "transform3D", "Has a 3d transform" }, { CompositingReasonVideo, "video", "Is an accelerated video" }, { CompositingReasonCanvas, "canvas", "Is an accelerated canvas, or is a display list backed canvas that was promoted to a layer based on a performance heuristic." }, { CompositingReasonPlugin, "plugin", "Is an accelerated plugin" }, { CompositingReasonIFrame, "iFrame", "Is an accelerated iFrame" }, { CompositingReasonBackfaceVisibilityHidden, "backfaceVisibilityHidden", "Has backface-visibility: hidden" }, { CompositingReasonActiveAnimation, "activeAnimation", "Has an active accelerated animation or transition" }, { CompositingReasonTransitionProperty, "transitionProperty", "Has an acceleratable transition property (active or inactive)" }, { CompositingReasonPositionFixed, "positionFixed", "Is fixed position" }, { CompositingReasonOverflowScrollingTouch, "overflowScrollingTouch", "Is a scrollable overflow element" }, { CompositingReasonOverflowScrollingParent, "overflowScrollingParent", "Scroll parent is not an ancestor" }, { CompositingReasonOutOfFlowClipping, "outOfFlowClipping", "Has clipping ancestor" }, { CompositingReasonVideoOverlay, "videoOverlay", "Is overlay controls for video" }, { CompositingReasonWillChangeCompositingHint, "willChange", "Has a will-change compositing hint" }, { CompositingReasonBackdropFilter, "backdropFilter" "Has a backdrop filter" }, { CompositingReasonCompositorProxy, "compositorProxy", "Has a CompositorProxy object" }, { CompositingReasonAssumedOverlap, "assumedOverlap", "Might overlap other composited content" }, { CompositingReasonOverlap, "overlap", "Overlaps other composited content" }, { CompositingReasonNegativeZIndexChildren, "negativeZIndexChildren", "Parent with composited negative z-index content" }, { CompositingReasonScrollsWithRespectToSquashingLayer, "scrollsWithRespectToSquashingLayer", "Cannot be squashed since this layer scrolls with respect to the squashing layer" }, { CompositingReasonSquashingSparsityExceeded, "squashingSparsityExceeded", "Cannot be squashed as the squashing layer would become too sparse" }, { CompositingReasonSquashingClippingContainerMismatch, "squashingClippingContainerMismatch", "Cannot be squashed because this layer has a different clipping container than the squashing layer" }, { CompositingReasonSquashingOpacityAncestorMismatch, "squashingOpacityAncestorMismatch", "Cannot be squashed because this layer has a different opacity ancestor than the squashing layer" }, { CompositingReasonSquashingTransformAncestorMismatch, "squashingTransformAncestorMismatch", "Cannot be squashed because this layer has a different transform ancestor than the squashing layer" }, { CompositingReasonSquashingFilterMismatch, "squashingFilterAncestorMismatch", "Cannot be squashed because this layer has a different filter ancestor than the squashing layer, or this layer has a filter" }, { CompositingReasonSquashingWouldBreakPaintOrder, "squashingWouldBreakPaintOrder", "Cannot be squashed without breaking paint order" }, { CompositingReasonSquashingVideoIsDisallowed, "squashingVideoIsDisallowed", "Squashing video is not supported" }, { CompositingReasonSquashedLayerClipsCompositingDescendants, "squashedLayerClipsCompositingDescendants", "Squashing a layer that clips composited descendants is not supported." }, { CompositingReasonSquashingLayoutPartIsDisallowed, "squashingLayoutPartIsDisallowed", "Squashing a frame, iframe or plugin is not supported." }, { CompositingReasonSquashingReflectionIsDisallowed, "squashingReflectionDisallowed", "Squashing a element with a reflection is not supported." }, { CompositingReasonSquashingBlendingIsDisallowed, "squashingBlendingDisallowed", "Squashing a layer with blending is not supported." }, { CompositingReasonSquashingNearestFixedPositionMismatch, "squashingNearestFixedPositionMismatch", "Cannot be squashed because this layer has a different nearest fixed position layer than the squashing layer" }, { CompositingReasonScrollChildWithCompositedDescendants, "scrollChildWithCompositedDescendants", "Squashing a scroll child with composited descendants is not supported." }, { CompositingReasonSquashingLayerIsAnimating, "squashingLayerIsAnimating", "Cannot squash into a layer that is animating." }, { CompositingReasonTransformWithCompositedDescendants, "transformWithCompositedDescendants", "Has a transform that needs to be known by compositor because of composited descendants" }, { CompositingReasonOpacityWithCompositedDescendants, "opacityWithCompositedDescendants", "Has opacity that needs to be applied by compositor because of composited descendants" }, { CompositingReasonMaskWithCompositedDescendants, "maskWithCompositedDescendants", "Has a mask that needs to be known by compositor because of composited descendants" }, { CompositingReasonReflectionWithCompositedDescendants, "reflectionWithCompositedDescendants", "Has a reflection that needs to be known by compositor because of composited descendants" }, { CompositingReasonFilterWithCompositedDescendants, "filterWithCompositedDescendants", "Has a filter effect that needs to be known by compositor because of composited descendants" }, { CompositingReasonBlendingWithCompositedDescendants, "blendingWithCompositedDescendants", "Has a blenidng effect that needs to be known by compositor because of composited descendants" }, { CompositingReasonClipsCompositingDescendants, "clipsCompositingDescendants", "Has a clip that needs to be known by compositor because of composited descendants" }, { CompositingReasonPerspectiveWith3DDescendants, "perspectiveWith3DDescendants", "Has a perspective transform that needs to be known by compositor because of 3d descendants" }, { CompositingReasonPreserve3DWith3DDescendants, "preserve3DWith3DDescendants", "Has a preserves-3d property that needs to be known by compositor because of 3d descendants" }, { CompositingReasonReflectionOfCompositedParent, "reflectionOfCompositedParent", "Is a reflection of a composited layer" }, { CompositingReasonIsolateCompositedDescendants, "isolateCompositedDescendants", "Should isolate descendants to apply a blend effect" }, { CompositingReasonPositionFixedWithCompositedDescendants, "positionFixedWithCompositedDescendants" "Is a position:fixed element with composited descendants" }, { CompositingReasonRoot, "root", "Is the root layer" }, { CompositingReasonLayerForAncestorClip, "layerForAncestorClip", "Secondary layer, applies a clip due to a sibling in the compositing tree" }, { CompositingReasonLayerForDescendantClip, "layerForDescendantClip", "Secondary layer, to clip descendants of the owning layer" }, { CompositingReasonLayerForPerspective, "layerForPerspective", "Secondary layer, to house the perspective transform for all descendants" }, { CompositingReasonLayerForHorizontalScrollbar, "layerForHorizontalScrollbar", "Secondary layer, the horizontal scrollbar layer" }, { CompositingReasonLayerForVerticalScrollbar, "layerForVerticalScrollbar", "Secondary layer, the vertical scrollbar layer" }, { CompositingReasonLayerForOverflowControlsHost, "layerForOverflowControlsHost", "Secondary layer, the overflow controls host layer" }, { CompositingReasonLayerForScrollCorner, "layerForScrollCorner", "Secondary layer, the scroll corner layer" }, { CompositingReasonLayerForScrollingContents, "layerForScrollingContents", "Secondary layer, to house contents that can be scrolled" }, { CompositingReasonLayerForScrollingContainer, "layerForScrollingContainer", "Secondary layer, used to position the scolling contents while scrolling" }, { CompositingReasonLayerForSquashingContents, "layerForSquashingContents", "Secondary layer, home for a group of squashable content" }, { CompositingReasonLayerForSquashingContainer, "layerForSquashingContainer", "Secondary layer, no-op layer to place the squashing layer correctly in the composited layer tree" }, { CompositingReasonLayerForForeground, "layerForForeground", "Secondary layer, to contain any normal flow and positive z-index contents on top of a negative z-index layer" }, { CompositingReasonLayerForBackground, "layerForBackground", "Secondary layer, to contain acceleratable background content" }, { CompositingReasonLayerForMask, "layerForMask", "Secondary layer, to contain the mask contents" }, { CompositingReasonLayerForClippingMask, "layerForClippingMask", "Secondary layer, for clipping mask" }, { CompositingReasonLayerForScrollingBlockSelection, "layerForScrollingBlockSelection", "Secondary layer, to house block selection gaps for composited scrolling with no scrolling contents" }, { CompositingReasonInlineTransform, "inlineTransform", "Has an inline transform, which causes subsequent layers to assume overlap" }, }; size_t kNumberOfCompositingReasons = WTF_ARRAY_LENGTH(kCompositingReasonStringMap); } // namespace blink