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 3 // found in the LICENSE file. 4 5 #ifndef CompositingReasonFinder_h 6 #define CompositingReasonFinder_h 7 8 #include "core/rendering/RenderLayer.h" 9 #include "core/rendering/compositing/CompositingTriggers.h" 10 #include "platform/graphics/CompositingReasons.h" 11 12 namespace blink { 13 14 class RenderObject; 15 class RenderView; 16 17 class CompositingReasonFinder { 18 WTF_MAKE_NONCOPYABLE(CompositingReasonFinder); 19 public: 20 explicit CompositingReasonFinder(RenderView&); 21 22 CompositingReasons potentialCompositingReasonsFromStyle(RenderObject*) const; 23 CompositingReasons directReasons(const RenderLayer*) const; 24 25 void updateTriggers(); 26 27 bool hasOverflowScrollTrigger() const; 28 bool requiresCompositingForScrollableFrame() const; 29 30 private: 31 bool isMainFrame() const; 32 33 CompositingReasons nonStyleDeterminedDirectReasons(const RenderLayer*) const; 34 35 bool requiresCompositingForTransform(RenderObject*) const; 36 bool requiresCompositingForAnimation(RenderStyle*) const; 37 bool requiresCompositingForPositionFixed(const RenderLayer*) const; 38 39 RenderView& m_renderView; 40 CompositingTriggerFlags m_compositingTriggers; 41 }; 42 43 } // namespace blink 44 45 #endif // CompositingReasonFinder_h 46