Home | History | Annotate | Download | only in compositing
      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