Chromium Code Reviews| 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..81cb29d085bb1ac1d3f29bcef9ba4b145042ba4e 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::remainingDirectReasons(const RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const |
|
ojan
2014/03/20 23:56:02
I think we need a better name for this. Consider i
|
| +{ |
| + 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()) | remainingDirectReasons(layer, needToRecomputeCompositingRequirements); |
| +} |
| + |
| bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const |
| { |
| // Need this done first to determine overflow. |