| Index: Source/core/rendering/compositing/CompositingReasonFinder.cpp
|
| diff --git a/Source/core/rendering/compositing/CompositingReasonFinder.cpp b/Source/core/rendering/compositing/CompositingReasonFinder.cpp
|
| index e2f80be02c3fa794eb4dd51cbb785e8d2d38cf0f..9054f3abc8c43278640edf1cee68b76a17e50fd2 100644
|
| --- a/Source/core/rendering/compositing/CompositingReasonFinder.cpp
|
| +++ b/Source/core/rendering/compositing/CompositingReasonFinder.cpp
|
| @@ -59,9 +59,8 @@ bool CompositingReasonFinder::isMainFrame() const
|
| return !m_renderView.document().ownerElement();
|
| }
|
|
|
| -CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const
|
| +CompositingReasons CompositingReasonFinder::styleDeterminedDirectReasons(RenderObject* renderer) const
|
| {
|
| - RenderObject* renderer = layer->renderer();
|
| CompositingReasons directReasons = CompositingReasonNone;
|
|
|
| if (requiresCompositingForTransform(renderer))
|
| @@ -76,26 +75,41 @@ CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay
|
| if (requiresCompositingForFilters(renderer))
|
| directReasons |= CompositingReasonFilters;
|
|
|
| - if (requiresCompositingForPosition(renderer, layer, 0, needToRecomputeCompositingRequirements))
|
| - directReasons |= renderer->style()->position() == FixedPosition ? CompositingReasonPositionFixed : CompositingReasonPositionSticky;
|
| + if (requiresCompositingForWillChange(renderer))
|
| + directReasons |= CompositingReasonWillChange;
|
|
|
| - if (requiresCompositingForOverflowScrolling(layer))
|
| - directReasons |= CompositingReasonOverflowScrollingTouch;
|
| + directReasons |= renderer->additionalCompositingReasons(m_compositingTriggers);
|
|
|
| - if (requiresCompositingForOverflowScrollingParent(layer))
|
| - directReasons |= CompositingReasonOverflowScrollingParent;
|
| + ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedDirectReasons));
|
| + return directReasons;
|
| +}
|
| +
|
| +CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(const RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const
|
| +{
|
| + CompositingReasons directReasons = CompositingReasonNone;
|
|
|
| if (requiresCompositingForOutOfFlowClipping(layer))
|
| directReasons |= CompositingReasonOutOfFlowClipping;
|
|
|
| - if (requiresCompositingForWillChange(renderer))
|
| - directReasons |= CompositingReasonWillChange;
|
| + if (requiresCompositingForOverflowScrolling(layer))
|
| + directReasons |= CompositingReasonOverflowScrollingTouch;
|
|
|
| - directReasons |= renderer->additionalCompositingReasons(m_compositingTriggers);
|
| + if (requiresCompositingForOverflowScrollingParent(layer))
|
| + directReasons |= CompositingReasonOverflowScrollingParent;
|
|
|
| + RenderObject* renderer = layer->renderer();
|
| + if (requiresCompositingForPosition(renderer, layer, 0, needToRecomputeCompositingRequirements))
|
| + directReasons |= renderer->style()->position() == FixedPosition ? CompositingReasonPositionFixed : CompositingReasonPositionSticky;
|
| +
|
| + ASSERT(!(directReasons & CompositingReasonComboAllStyleDeterminedDirectReasons));
|
| return directReasons;
|
| }
|
|
|
| +CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const
|
| +{
|
| + return styleDeterminedDirectReasons(layer->renderer()) | nonStyleDeterminedDirectReasons(layer, needToRecomputeCompositingRequirements);
|
| +}
|
| +
|
| bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const
|
| {
|
| // Need this done first to determine overflow.
|
|
|