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 PageAnimator_h
6#define PageAnimator_h
7
8#include "platform/heap/Handle.h"
9
10namespace blink {
11
12class LocalFrame;
13class Page;
14
15class PageAnimator final : public RefCountedWillBeGarbageCollected<PageAnimator> {
16public:
17    static PassRefPtrWillBeRawPtr<PageAnimator> create(Page&);
18    void trace(Visitor*);
19    void scheduleVisualUpdate();
20    void serviceScriptedAnimations(double monotonicAnimationStartTime);
21
22    void setAnimationFramePending() { m_animationFramePending = true; }
23    bool isServicingAnimations() const { return m_servicingAnimations; }
24    void updateLayoutAndStyleForPainting(LocalFrame* rootFrame);
25
26private:
27    explicit PageAnimator(Page&);
28
29    RawPtrWillBeMember<Page> m_page;
30    bool m_animationFramePending;
31    bool m_servicingAnimations;
32    bool m_updatingLayoutAndStyleForPainting;
33};
34
35}
36
37#endif // PageAnimator_h
38