Index: Source/core/rendering/compositing/CompositingReasonFinder.cpp |
diff --git a/Source/core/rendering/compositing/CompositingReasonFinder.cpp b/Source/core/rendering/compositing/CompositingReasonFinder.cpp |
index 5339d29f809a81872d6afa076829ce1b4f7493fe..6f9ae626c35aa7cd735e75bf78d1f9c5a653df8d 100644 |
--- a/Source/core/rendering/compositing/CompositingReasonFinder.cpp |
+++ b/Source/core/rendering/compositing/CompositingReasonFinder.cpp |
@@ -59,7 +59,7 @@ bool CompositingReasonFinder::isMainFrame() const |
return !m_renderView.document().ownerElement(); |
} |
-CompositingReasons CompositingReasonFinder::styleDeterminedDirectReasons(RenderObject* renderer) const |
+CompositingReasons CompositingReasonFinder::styleDeterminedReasons(RenderObject* renderer) const |
{ |
CompositingReasons directReasons = CompositingReasonNone; |
@@ -69,24 +69,23 @@ CompositingReasons CompositingReasonFinder::styleDeterminedDirectReasons(RenderO |
if (requiresCompositingForBackfaceVisibilityHidden(renderer)) |
directReasons |= CompositingReasonBackfaceVisibilityHidden; |
- if (requiresCompositingForAnimation(renderer)) |
- directReasons |= CompositingReasonActiveAnimation; |
- |
if (requiresCompositingForFilters(renderer)) |
directReasons |= CompositingReasonFilters; |
if (requiresCompositingForWillChange(renderer)) |
directReasons |= CompositingReasonWillChange; |
- directReasons |= renderer->additionalCompositingReasons(m_compositingTriggers); |
- |
- ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedDirectReasons)); |
+ ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedReasons)); |
return directReasons; |
} |
CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(const RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const |
{ |
CompositingReasons directReasons = CompositingReasonNone; |
+ RenderObject* renderer = layer->renderer(); |
+ |
+ if (requiresCompositingForAnimation(renderer)) |
+ directReasons |= CompositingReasonActiveAnimation; |
if (requiresCompositingForOutOfFlowClipping(layer)) |
directReasons |= CompositingReasonOutOfFlowClipping; |
@@ -97,17 +96,20 @@ CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(cons |
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)); |
+ directReasons |= renderer->additionalCompositingReasons(m_compositingTriggers); |
+ |
+ ASSERT(!(directReasons & CompositingReasonComboAllStyleDeterminedReasons)); |
return directReasons; |
} |
CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const |
{ |
- return styleDeterminedDirectReasons(layer->renderer()) | nonStyleDeterminedDirectReasons(layer, needToRecomputeCompositingRequirements); |
+ CompositingReasons styleReasons = layer->styleDeterminedCompositingReasons(); |
+ ASSERT(styleDeterminedReasons(layer->renderer()) == styleReasons); |
+ return styleReasons | nonStyleDeterminedDirectReasons(layer, needToRecomputeCompositingRequirements); |
} |
bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const |