Commit c2b2ddc3 authored by Sergio Villar Senin's avatar Sergio Villar Senin Committed by Commit Bot

Use TimeDelta in DocumentTimeline::WakeAfter

This is another step in the process of moving the animation engine to
base::Time* types. We're replacing doubles by base::TimeDelta which is
the perfect fit to represent durations.

We are not using AnimationTimeDelta, the wrapper
class we're using to ease the transition, because the animation timers
require a base::TimeDelta anyway so, the conversion from double to
TimeDelta needs to be done anyway.

Bug: 737867
Change-Id: I028fec11be2120548f829a1090e26ee4430a8a8e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1746253Reviewed-by: default avatarAlan Cutter <alancutter@chromium.org>
Reviewed-by: default avatarKevin Ellis <kevers@chromium.org>
Commit-Queue: Sergio Villar <svillar@igalia.com>
Cr-Commit-Position: refs/heads/master@{#686802}
parent fc5a4651
...@@ -196,15 +196,16 @@ void DocumentTimeline::ScheduleNextService() { ...@@ -196,15 +196,16 @@ void DocumentTimeline::ScheduleNextService() {
if (time_to_next_effect < kMinimumDelay) { if (time_to_next_effect < kMinimumDelay) {
timing_->ServiceOnNextFrame(); timing_->ServiceOnNextFrame();
} else if (time_to_next_effect != std::numeric_limits<double>::infinity()) { } else if (time_to_next_effect != std::numeric_limits<double>::infinity()) {
timing_->WakeAfter(time_to_next_effect - kMinimumDelay); timing_->WakeAfter(
base::TimeDelta::FromSecondsD(time_to_next_effect - kMinimumDelay));
} }
} }
void DocumentTimeline::DocumentTimelineTiming::WakeAfter(double duration) { void DocumentTimeline::DocumentTimelineTiming::WakeAfter(
base::TimeDelta duration_delta = base::TimeDelta::FromSecondsD(duration); base::TimeDelta duration) {
if (timer_.IsActive() && timer_.NextFireInterval() < duration_delta) if (timer_.IsActive() && timer_.NextFireInterval() < duration)
return; return;
timer_.StartOneShot(duration_delta, FROM_HERE); timer_.StartOneShot(duration, FROM_HERE);
} }
void DocumentTimeline::DocumentTimelineTiming::ServiceOnNextFrame() { void DocumentTimeline::DocumentTimelineTiming::ServiceOnNextFrame() {
......
...@@ -62,7 +62,7 @@ class CORE_EXPORT DocumentTimeline : public AnimationTimeline { ...@@ -62,7 +62,7 @@ class CORE_EXPORT DocumentTimeline : public AnimationTimeline {
class PlatformTiming : public GarbageCollectedFinalized<PlatformTiming> { class PlatformTiming : public GarbageCollectedFinalized<PlatformTiming> {
public: public:
// Calls DocumentTimeline's wake() method after duration seconds. // Calls DocumentTimeline's wake() method after duration seconds.
virtual void WakeAfter(double duration) = 0; virtual void WakeAfter(base::TimeDelta duration) = 0;
virtual void ServiceOnNextFrame() = 0; virtual void ServiceOnNextFrame() = 0;
virtual ~PlatformTiming() = default; virtual ~PlatformTiming() = default;
virtual void Trace(blink::Visitor* visitor) {} virtual void Trace(blink::Visitor* visitor) {}
...@@ -166,7 +166,7 @@ class CORE_EXPORT DocumentTimeline : public AnimationTimeline { ...@@ -166,7 +166,7 @@ class CORE_EXPORT DocumentTimeline : public AnimationTimeline {
DCHECK(timeline_); DCHECK(timeline_);
} }
void WakeAfter(double duration) override; void WakeAfter(base::TimeDelta duration) override;
void ServiceOnNextFrame() override; void ServiceOnNextFrame() override;
void TimerFired(TimerBase*) { timeline_->Wake(); } void TimerFired(TimerBase*) { timeline_->Wake(); }
......
...@@ -57,7 +57,7 @@ namespace blink { ...@@ -57,7 +57,7 @@ namespace blink {
class MockPlatformTiming : public DocumentTimeline::PlatformTiming { class MockPlatformTiming : public DocumentTimeline::PlatformTiming {
public: public:
MOCK_METHOD1(WakeAfter, void(double)); MOCK_METHOD1(WakeAfter, void(base::TimeDelta));
MOCK_METHOD0(ServiceOnNextFrame, void()); MOCK_METHOD0(ServiceOnNextFrame, void());
void Trace(blink::Visitor* visitor) override { void Trace(blink::Visitor* visitor) override {
...@@ -356,11 +356,13 @@ TEST_F(AnimationDocumentTimelineTest, DelayBeforeAnimationStart) { ...@@ -356,11 +356,13 @@ TEST_F(AnimationDocumentTimelineTest, DelayBeforeAnimationStart) {
// TODO: Put the animation startTime in the future when we add the capability // TODO: Put the animation startTime in the future when we add the capability
// to change animation startTime // to change animation startTime
EXPECT_CALL(*platform_timing, WakeAfter(timing.start_delay - MinimumDelay())); EXPECT_CALL(*platform_timing, WakeAfter(base::TimeDelta::FromSecondsD(
timing.start_delay - MinimumDelay())));
UpdateClockAndService(0); UpdateClockAndService(0);
EXPECT_CALL(*platform_timing, EXPECT_CALL(*platform_timing,
WakeAfter(timing.start_delay - MinimumDelay() - 1.5)); WakeAfter(base::TimeDelta::FromSecondsD(timing.start_delay -
MinimumDelay() - 1.5)));
UpdateClockAndService(1500); UpdateClockAndService(1500);
EXPECT_CALL(*platform_timing, ServiceOnNextFrame()); EXPECT_CALL(*platform_timing, ServiceOnNextFrame());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment