1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// found in the LICENSE file.
4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#ifndef PageAnimator_h
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define PageAnimator_h
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
8697ef0c10ac944be8499480c025020e4c282c980Ben Murdoch#include "platform/heap/Handle.h"
9697ef0c10ac944be8499480c025020e4c282c980Ben Murdoch
10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
12197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass LocalFrame;
13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class Page;
14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
15697ef0c10ac944be8499480c025020e4c282c980Ben Murdochclass PageAnimator final : public RefCountedWillBeGarbageCollected<PageAnimator> {
16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)public:
17697ef0c10ac944be8499480c025020e4c282c980Ben Murdoch    static PassRefPtrWillBeRawPtr<PageAnimator> create(Page&);
18697ef0c10ac944be8499480c025020e4c282c980Ben Murdoch    void trace(Visitor*);
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void scheduleVisualUpdate();
20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void serviceScriptedAnimations(double monotonicAnimationStartTime);
21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    void setAnimationFramePending() { m_animationFramePending = true; }
23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    bool isServicingAnimations() const { return m_servicingAnimations; }
24197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    void updateLayoutAndStyleForPainting(LocalFrame* rootFrame);
25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)private:
27697ef0c10ac944be8499480c025020e4c282c980Ben Murdoch    explicit PageAnimator(Page&);
28697ef0c10ac944be8499480c025020e4c282c980Ben Murdoch
29697ef0c10ac944be8499480c025020e4c282c980Ben Murdoch    RawPtrWillBeMember<Page> m_page;
30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    bool m_animationFramePending;
31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    bool m_servicingAnimations;
3207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    bool m_updatingLayoutAndStyleForPainting;
33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)};
34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#endif // PageAnimator_h
38