| Index: third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
|
| diff --git a/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp b/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
|
| index 09b1c7efcc9319f4fd52b778410bad27bffea3a5..5b1f9e439f2b5e141637be8e44a94c8cb4b82283 100644
|
| --- a/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
|
| +++ b/third_party/WebKit/Source/core/svg/animation/SMILTimeContainer.cpp
|
| @@ -32,6 +32,7 @@
|
| #include "core/frame/Settings.h"
|
| #include "core/frame/UseCounter.h"
|
| #include "core/svg/SVGSVGElement.h"
|
| +#include "core/svg/animation/SMILTime.h"
|
| #include "core/svg/animation/SVGSMILElement.h"
|
| #include <algorithm>
|
|
|
| @@ -133,7 +134,7 @@ void SMILTimeContainer::notifyIntervalsChanged()
|
| scheduleWakeUp(0, SynchronizeAnimations);
|
| }
|
|
|
| -SMILTime SMILTimeContainer::elapsed() const
|
| +double SMILTimeContainer::elapsed() const
|
| {
|
| if (!isStarted())
|
| return 0;
|
| @@ -182,14 +183,14 @@ void SMILTimeContainer::start()
|
| // If the "presentation time" is non-zero, the timeline was modified via
|
| // setElapsed() before the document began.
|
| // In this case pass on 'seekToTime=true' to updateAnimations() to issue a seek.
|
| - SMILTime earliestFireTime = updateAnimations(SMILTime(m_presentationTime), m_presentationTime ? true : false);
|
| + SMILTime earliestFireTime = updateAnimations(m_presentationTime, m_presentationTime ? true : false);
|
| if (!canScheduleFrame(earliestFireTime))
|
| return;
|
| // If the timeline is running, and there are pending animation updates,
|
| // always perform the first update after the timeline was started using
|
| // the wake-up mechanism.
|
| - SMILTime delay = earliestFireTime - m_presentationTime;
|
| - scheduleWakeUp(std::max(initialFrameDelay, delay.value()), SynchronizeAnimations);
|
| + double delayTime = earliestFireTime.value() - m_presentationTime;
|
| + scheduleWakeUp(std::max(initialFrameDelay, delayTime), SynchronizeAnimations);
|
| }
|
|
|
| void SMILTimeContainer::pause()
|
| @@ -199,7 +200,7 @@ void SMILTimeContainer::pause()
|
| DCHECK(!isPaused());
|
|
|
| if (isStarted()) {
|
| - m_presentationTime = elapsed().value();
|
| + m_presentationTime = elapsed();
|
| cancelAnimationFrame();
|
| }
|
| // Update the flag after sampling elapsed().
|
| @@ -220,9 +221,9 @@ void SMILTimeContainer::resume()
|
| scheduleWakeUp(0, SynchronizeAnimations);
|
| }
|
|
|
| -void SMILTimeContainer::setElapsed(SMILTime time)
|
| +void SMILTimeContainer::setElapsed(double elapsed)
|
| {
|
| - m_presentationTime = time.value();
|
| + m_presentationTime = elapsed;
|
|
|
| // If the document hasn't finished loading, |m_presentationTime| will be
|
| // used as the start time to seek to once it's possible.
|
| @@ -252,7 +253,7 @@ void SMILTimeContainer::setElapsed(SMILTime time)
|
| m_preventScheduledAnimationsChanges = false;
|
| #endif
|
|
|
| - updateAnimationsAndScheduleFrameIfNeeded(time, true);
|
| + updateAnimationsAndScheduleFrameIfNeeded(elapsed, true);
|
| }
|
|
|
| void SMILTimeContainer::scheduleAnimationFrame(double delayTime)
|
| @@ -361,7 +362,7 @@ void SMILTimeContainer::updateDocumentOrderIndexes()
|
| }
|
|
|
| struct PriorityCompare {
|
| - PriorityCompare(SMILTime elapsed) : m_elapsed(elapsed) {}
|
| + PriorityCompare(double elapsed) : m_elapsed(elapsed) {}
|
| bool operator()(const Member<SVGSMILElement>& a, const Member<SVGSMILElement>& b)
|
| {
|
| // FIXME: This should also consider possible timing relations between the elements.
|
| @@ -374,7 +375,7 @@ struct PriorityCompare {
|
| return a->documentOrderIndex() < b->documentOrderIndex();
|
| return aBegin < bBegin;
|
| }
|
| - SMILTime m_elapsed;
|
| + double m_elapsed;
|
| };
|
|
|
| SVGSVGElement& SMILTimeContainer::ownerSVGElement() const
|
| @@ -415,7 +416,7 @@ bool SMILTimeContainer::canScheduleFrame(SMILTime earliestFireTime) const
|
| return earliestFireTime.isFinite();
|
| }
|
|
|
| -void SMILTimeContainer::updateAnimationsAndScheduleFrameIfNeeded(SMILTime elapsed, bool seekToTime)
|
| +void SMILTimeContainer::updateAnimationsAndScheduleFrameIfNeeded(double elapsed, bool seekToTime)
|
| {
|
| if (!document().isActive())
|
| return;
|
| @@ -423,11 +424,11 @@ void SMILTimeContainer::updateAnimationsAndScheduleFrameIfNeeded(SMILTime elapse
|
| SMILTime earliestFireTime = updateAnimations(elapsed, seekToTime);
|
| if (!canScheduleFrame(earliestFireTime))
|
| return;
|
| - SMILTime delay = earliestFireTime - elapsed;
|
| - scheduleAnimationFrame(delay.value());
|
| + double delayTime = earliestFireTime.value() - elapsed;
|
| + scheduleAnimationFrame(delayTime);
|
| }
|
|
|
| -SMILTime SMILTimeContainer::updateAnimations(SMILTime elapsed, bool seekToTime)
|
| +SMILTime SMILTimeContainer::updateAnimations(double elapsed, bool seekToTime)
|
| {
|
| ASSERT(document().isActive());
|
| SMILTime earliestFireTime = SMILTime::unresolved();
|
| @@ -531,7 +532,7 @@ SMILTime SMILTimeContainer::updateAnimations(SMILTime elapsed, bool seekToTime)
|
|
|
| void SMILTimeContainer::advanceFrameForTesting()
|
| {
|
| - setElapsed(elapsed().value() + initialFrameDelay);
|
| + setElapsed(elapsed() + initialFrameDelay);
|
| }
|
|
|
| DEFINE_TRACE(SMILTimeContainer)
|
|
|