Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1803)

Unified Diff: Source/core/rendering/compositing/CompositingReasonFinder.cpp

Issue 206413009: Split out the style-determined direct compositing reasons (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: better name?? Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.
« no previous file with comments | « Source/core/rendering/compositing/CompositingReasonFinder.h ('k') | Source/platform/graphics/CompositingReasons.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698