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 WebCore { 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 styleDeterminedReasons(RenderObject*) const; 23 CompositingReasons directReasons(const RenderLayer*) const; 24 25 void updateTriggers(); 26 27 bool hasOverflowScrollTrigger() const; 28 29 bool requiresCompositingForScrollableFrame() const; 30 bool requiresCompositingForPositionFixed(RenderObject*, const RenderLayer*, RenderLayer::ViewportConstrainedNotCompositedReason*) const; 31 32 private: 33 bool isMainFrame() const; 34 35 CompositingReasons nonStyleDeterminedDirectReasons(const RenderLayer*) const; 36 37 bool requiresCompositingForTransform(RenderObject*) const; 38 bool requiresCompositingForFilters(RenderObject*) const; 39 bool requiresCompositingForAnimation(RenderStyle*) const; 40 41 RenderView& m_renderView; 42 CompositingTriggerFlags m_compositingTriggers; 43 }; 44 45 } // namespace WebCore 46 47 #endif // CompositingReasonFinder_h 48