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

Unified Diff: Source/core/svg/animation/SMILTimeContainer.h

Issue 802143002: AnimationPolicy setting is applied to SVG animation. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: apply new concept Created 6 years 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/svg/animation/SMILTimeContainer.h
diff --git a/Source/core/svg/animation/SMILTimeContainer.h b/Source/core/svg/animation/SMILTimeContainer.h
index 53565e99e5ecad742066aacc42bab3b10d576271..2d5a36f56750dd76ab659800631e79c1bd9e7bfb 100644
--- a/Source/core/svg/animation/SMILTimeContainer.h
+++ b/Source/core/svg/animation/SMILTimeContainer.h
@@ -29,6 +29,7 @@
#include "core/dom/QualifiedName.h"
#include "core/svg/animation/SMILTime.h"
#include "platform/Timer.h"
+#include "platform/graphics/ImageAnimationPolicy.h"
#include "platform/heap/Handle.h"
#include "wtf/HashMap.h"
#include "wtf/HashSet.h"
@@ -57,9 +58,10 @@ public:
bool isPaused() const;
bool isStarted() const;
+ bool isFrozen() const;
void begin();
- void pause();
+ void pause(bool freeze = false);
void resume();
void setElapsed(SMILTime);
@@ -83,11 +85,24 @@ private:
// Scheduled a animation frame for continuous update.
AnimationFrame
};
+ enum AnimatedState {
fs 2014/12/22 16:23:15 I'd prefer to enumerate all the discrete states ra
je_julie(Not used) 2014/12/24 03:50:51 I removed it with improved concept.
+ // initial state.
+ NormalState = 0,
+ // Paused animations.
+ PausedState = 1 << 0,
+ // Frozen animations.
+ FrozenState = 1 << 1
+ };
+ ImageAnimationPolicy getAnimationPolicy() const;
fs 2014/12/22 16:23:15 animationPolicy
je_julie(Not used) 2014/12/24 03:50:51 done.
+ void freezeTimeline();
bool isTimelineRunning() const;
void scheduleAnimationFrame(SMILTime fireTime);
void cancelAnimationFrame();
void wakeupTimerFired(Timer<SMILTimeContainer>*);
+ void cancelAnimationPolicyTimer();
+ void startAnimationPolicyTimer();
+ void animationPolicyOnceTimerFired(Timer<SMILTimeContainer>*);
void updateAnimationsAndScheduleFrameIfNeeded(SMILTime elapsed, bool seekToTime = false);
SMILTime updateAnimations(SMILTime elapsed, bool seekToTime = false);
void serviceOnNextFrame();
@@ -108,8 +123,10 @@ private:
FrameSchedulingState m_frameSchedulingState;
bool m_documentOrderIndexesDirty;
+ int m_animationState;
fs 2014/12/22 16:23:15 With the discrete states this would then be the en
je_julie(Not used) 2014/12/24 03:50:51 I removed it with improved concept.
Timer<SMILTimeContainer> m_wakeupTimer;
+ Timer<SMILTimeContainer> m_animationPolicyOnceTimer;
using ElementAttributePair = pair<RawPtrWillBeWeakMember<SVGElement>, QualifiedName>;
using AnimationsLinkedHashSet = WillBeHeapLinkedHashSet<RawPtrWillBeWeakMember<SVGSMILElement>>;

Powered by Google App Engine
This is Rietveld 408576698