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 12namespace blink { 13 14class RenderObject; 15class RenderView; 16 17class CompositingReasonFinder { 18 WTF_MAKE_NONCOPYABLE(CompositingReasonFinder); 19public: 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 30private: 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