Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: Source/core/frame/animation/AnimationControllerPrivate.h

Issue 139273007: Web Animations: Remove legacy animations engine. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix TestExpectations. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14 * its contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #ifndef AnimationControllerPrivate_h
30 #define AnimationControllerPrivate_h
31
32 #include "CSSPropertyNames.h"
33 #include "platform/Timer.h"
34 #include "wtf/HashMap.h"
35 #include "wtf/HashSet.h"
36 #include "wtf/PassRefPtr.h"
37 #include "wtf/RefPtr.h"
38 #include "wtf/Vector.h"
39 #include "wtf/text/AtomicString.h"
40 #include "wtf/text/WTFString.h"
41
42 namespace WebCore {
43
44 class AnimationBase;
45 class CompositeAnimation;
46 class Document;
47 class Element;
48 class Frame;
49 class Node;
50 class RenderObject;
51 class RenderStyle;
52
53 enum SetNeedsStyleRecalc {
54 DoNotCallSetNeedsStyleRecalc = 0,
55 CallSetNeedsStyleRecalc = 1
56 };
57
58 class AnimationControllerPrivate {
59 WTF_MAKE_NONCOPYABLE(AnimationControllerPrivate); WTF_MAKE_FAST_ALLOCATED;
60 public:
61 AnimationControllerPrivate(Frame*);
62 ~AnimationControllerPrivate();
63
64 void updateAnimations(double& timeToNextService, double& timeToNextEvent, Se tNeedsStyleRecalc callSetNeedsStyleRecalc = DoNotCallSetNeedsStyleRecalc);
65 void scheduleService();
66
67 PassRefPtr<CompositeAnimation> accessCompositeAnimation(RenderObject&);
68 bool clear(RenderObject*);
69
70 void updateStyleIfNeededDispatcherFired(Timer<AnimationControllerPrivate>*);
71 void startUpdateStyleIfNeededDispatcher();
72 void addEventToDispatch(PassRefPtr<Element> element, const AtomicString& eve ntType, const String& name, double elapsedTime);
73 void addNodeChangeToDispatch(PassRefPtr<Node>);
74
75 bool hasAnimations() const { return !m_compositeAnimations.isEmpty(); }
76
77 void serviceAnimations();
78
79 bool isRunningAnimationOnRenderer(RenderObject*, CSSPropertyID, bool isRunni ngNow) const;
80 bool isRunningAcceleratableAnimationOnRenderer(RenderObject*) const;
81 bool isRunningAcceleratedAnimationOnRenderer(RenderObject*, CSSPropertyID, b ool isRunningNow) const;
82
83 void pauseAnimationsForTesting(double t);
84 unsigned numberOfActiveAnimations(Document*) const;
85
86 PassRefPtr<RenderStyle> getAnimatedStyleForRenderer(RenderObject* renderer);
87
88 double beginAnimationUpdateTime();
89 void setBeginAnimationUpdateTime(double t) { m_beginAnimationUpdateTime = t; }
90 void endAnimationUpdate();
91 void receivedStartTimeResponse(double);
92
93 void addToAnimationsWaitingForStyle(AnimationBase*);
94 void removeFromAnimationsWaitingForStyle(AnimationBase*);
95
96 void addToAnimationsWaitingForStartTimeResponse(AnimationBase*, bool willGet Response);
97 void removeFromAnimationsWaitingForStartTimeResponse(AnimationBase*);
98
99 void animationWillBeRemoved(AnimationBase*);
100
101 void scheduleServiceForRenderer(RenderObject&);
102
103 private:
104 void animationTimerFired(Timer<AnimationControllerPrivate>*);
105
106 void scheduleService(double timeToNextService, double timeToNextEvent);
107
108 void styleAvailable();
109 void fireEventsAndUpdateStyle();
110 void startTimeResponse(double t);
111
112 typedef HashMap<RenderObject*, RefPtr<CompositeAnimation> > RenderObjectAnim ationMap;
113
114 RenderObjectAnimationMap m_compositeAnimations;
115 Timer<AnimationControllerPrivate> m_animationTimer;
116 Timer<AnimationControllerPrivate> m_updateStyleIfNeededDispatcher;
117 Frame* m_frame;
118
119 class EventToDispatch {
120 public:
121 RefPtr<Element> element;
122 AtomicString eventType;
123 String name;
124 double elapsedTime;
125 };
126
127 Vector<EventToDispatch> m_eventsToDispatch;
128 Vector<RefPtr<Node> > m_nodeChangesToDispatch;
129
130 double m_beginAnimationUpdateTime;
131
132 typedef HashSet<RefPtr<AnimationBase> > WaitingAnimationsSet;
133 WaitingAnimationsSet m_animationsWaitingForStyle;
134 WaitingAnimationsSet m_animationsWaitingForStartTimeResponse;
135 WaitingAnimationsSet m_animationsWaitingForAsyncStartNotification;
136 };
137
138 } // namespace WebCore
139
140 #endif // AnimationControllerPrivate_h
OLDNEW
« no previous file with comments | « Source/core/frame/animation/AnimationController.cpp ('k') | Source/core/frame/animation/CSSPropertyAnimation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698