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

Side by Side Diff: Source/core/rendering/compositing/CompositingReasonFinder.cpp

Issue 207513002: Compute style-determined compositing reasons during recalc style (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: No longer friends 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/rendering/compositing/CompositingReasonFinder.h" 6 #include "core/rendering/compositing/CompositingReasonFinder.h"
7 7
8 #include "CSSPropertyNames.h" 8 #include "CSSPropertyNames.h"
9 #include "HTMLNames.h" 9 #include "HTMLNames.h"
10 #include "core/animation/ActiveAnimations.h" 10 #include "core/animation/ActiveAnimations.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 { 52 {
53 return m_compositingTriggers & AnimationTrigger; 53 return m_compositingTriggers & AnimationTrigger;
54 } 54 }
55 55
56 bool CompositingReasonFinder::isMainFrame() const 56 bool CompositingReasonFinder::isMainFrame() const
57 { 57 {
58 // FIXME: LocalFrame::isMainFrame() is probably better. 58 // FIXME: LocalFrame::isMainFrame() is probably better.
59 return !m_renderView.document().ownerElement(); 59 return !m_renderView.document().ownerElement();
60 } 60 }
61 61
62 CompositingReasons CompositingReasonFinder::styleDeterminedDirectReasons(RenderO bject* renderer) const 62 CompositingReasons CompositingReasonFinder::styleDeterminedReasons(RenderObject* renderer) const
63 { 63 {
64 CompositingReasons directReasons = CompositingReasonNone; 64 CompositingReasons directReasons = CompositingReasonNone;
65 65
66 if (requiresCompositingForTransform(renderer)) 66 if (requiresCompositingForTransform(renderer))
67 directReasons |= CompositingReason3DTransform; 67 directReasons |= CompositingReason3DTransform;
68 68
69 if (requiresCompositingForBackfaceVisibilityHidden(renderer)) 69 if (requiresCompositingForBackfaceVisibilityHidden(renderer))
70 directReasons |= CompositingReasonBackfaceVisibilityHidden; 70 directReasons |= CompositingReasonBackfaceVisibilityHidden;
71 71
72 if (requiresCompositingForAnimation(renderer))
73 directReasons |= CompositingReasonActiveAnimation;
74
75 if (requiresCompositingForFilters(renderer)) 72 if (requiresCompositingForFilters(renderer))
76 directReasons |= CompositingReasonFilters; 73 directReasons |= CompositingReasonFilters;
77 74
78 if (requiresCompositingForWillChange(renderer)) 75 if (requiresCompositingForWillChange(renderer))
79 directReasons |= CompositingReasonWillChange; 76 directReasons |= CompositingReasonWillChange;
80 77
81 directReasons |= renderer->additionalCompositingReasons(m_compositingTrigger s); 78 ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedReasons));
82
83 ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedDirectReas ons));
84 return directReasons; 79 return directReasons;
85 } 80 }
86 81
87 CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(cons t RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const 82 CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(cons t RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const
88 { 83 {
89 CompositingReasons directReasons = CompositingReasonNone; 84 CompositingReasons directReasons = CompositingReasonNone;
85 RenderObject* renderer = layer->renderer();
86
87 if (requiresCompositingForAnimation(renderer))
88 directReasons |= CompositingReasonActiveAnimation;
90 89
91 if (requiresCompositingForOutOfFlowClipping(layer)) 90 if (requiresCompositingForOutOfFlowClipping(layer))
92 directReasons |= CompositingReasonOutOfFlowClipping; 91 directReasons |= CompositingReasonOutOfFlowClipping;
93 92
94 if (requiresCompositingForOverflowScrolling(layer)) 93 if (requiresCompositingForOverflowScrolling(layer))
95 directReasons |= CompositingReasonOverflowScrollingTouch; 94 directReasons |= CompositingReasonOverflowScrollingTouch;
96 95
97 if (requiresCompositingForOverflowScrollingParent(layer)) 96 if (requiresCompositingForOverflowScrollingParent(layer))
98 directReasons |= CompositingReasonOverflowScrollingParent; 97 directReasons |= CompositingReasonOverflowScrollingParent;
99 98
100 RenderObject* renderer = layer->renderer();
101 if (requiresCompositingForPosition(renderer, layer, 0, needToRecomputeCompos itingRequirements)) 99 if (requiresCompositingForPosition(renderer, layer, 0, needToRecomputeCompos itingRequirements))
102 directReasons |= renderer->style()->position() == FixedPosition ? Compos itingReasonPositionFixed : CompositingReasonPositionSticky; 100 directReasons |= renderer->style()->position() == FixedPosition ? Compos itingReasonPositionFixed : CompositingReasonPositionSticky;
103 101
104 ASSERT(!(directReasons & CompositingReasonComboAllStyleDeterminedDirectReaso ns)); 102 directReasons |= renderer->additionalCompositingReasons(m_compositingTrigger s);
103
104 ASSERT(!(directReasons & CompositingReasonComboAllStyleDeterminedReasons));
105 return directReasons; 105 return directReasons;
106 } 106 }
107 107
108 CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay er, bool* needToRecomputeCompositingRequirements) const 108 CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay er, bool* needToRecomputeCompositingRequirements) const
109 { 109 {
110 return styleDeterminedDirectReasons(layer->renderer()) | nonStyleDeterminedD irectReasons(layer, needToRecomputeCompositingRequirements); 110 CompositingReasons styleReasons = layer->styleDeterminedCompositingReasons() ;
111 ASSERT(styleDeterminedReasons(layer->renderer()) == styleReasons);
112 return styleReasons | nonStyleDeterminedDirectReasons(layer, needToRecompute CompositingRequirements);
111 } 113 }
112 114
113 bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const 115 bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const
114 { 116 {
115 // Need this done first to determine overflow. 117 // Need this done first to determine overflow.
116 ASSERT(!m_renderView.needsLayout()); 118 ASSERT(!m_renderView.needsLayout());
117 if (isMainFrame()) 119 if (isMainFrame())
118 return false; 120 return false;
119 121
120 if (!(m_compositingTriggers & ScrollableInnerFrameTrigger)) 122 if (!(m_compositingTriggers & ScrollableInnerFrameTrigger))
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 301
300 return true; 302 return true;
301 } 303 }
302 304
303 bool CompositingReasonFinder::requiresCompositingForOverflowScrolling(const Rend erLayer* layer) const 305 bool CompositingReasonFinder::requiresCompositingForOverflowScrolling(const Rend erLayer* layer) const
304 { 306 {
305 return layer->needsCompositedScrolling(); 307 return layer->needsCompositedScrolling();
306 } 308 }
307 309
308 } 310 }
OLDNEW
« no previous file with comments | « Source/core/rendering/compositing/CompositingReasonFinder.h ('k') | Source/core/rendering/compositing/RenderLayerCompositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698