summaryrefslogtreecommitdiff
path: root/chromium/ui/gfx/skia_vector_animation_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/gfx/skia_vector_animation_unittest.cc')
-rw-r--r--chromium/ui/gfx/skia_vector_animation_unittest.cc425
1 files changed, 215 insertions, 210 deletions
diff --git a/chromium/ui/gfx/skia_vector_animation_unittest.cc b/chromium/ui/gfx/skia_vector_animation_unittest.cc
index 013c06987f9..c82092638c9 100644
--- a/chromium/ui/gfx/skia_vector_animation_unittest.cc
+++ b/chromium/ui/gfx/skia_vector_animation_unittest.cc
@@ -53,7 +53,7 @@ constexpr char kData[] =
"}";
constexpr float kAnimationWidth = 400.f;
constexpr float kAnimationHeight = 200.f;
-constexpr float kAnimationDuration = 5.f;
+constexpr auto kAnimationDuration = base::TimeDelta::FromSeconds(5);
class TestAnimationObserver : public SkiaVectorAnimationObserver {
public:
@@ -145,15 +145,13 @@ class SkiaVectorAnimationTest : public testing::Test {
const base::TickClock* test_clock() const { return &test_clock_; }
- void AdvanceClock(int64_t ms) {
- test_clock_.Advance(base::TimeDelta::FromMilliseconds(ms));
- }
+ void AdvanceClock(base::TimeDelta advance) { test_clock_.Advance(advance); }
base::TimeDelta TimeDeltaSince(const base::TimeTicks& ticks) const {
return test_clock_.NowTicks() - ticks;
}
- const base::TimeTicks NowTicks() const { return test_clock_.NowTicks(); }
+ base::TimeTicks NowTicks() const { return test_clock_.NowTicks(); }
double GetTimerStartOffset() const {
return animation_->timer_control_->GetNormalizedStartOffset();
@@ -167,8 +165,8 @@ class SkiaVectorAnimationTest : public testing::Test {
return animation_->timer_control_->previous_tick_;
}
- double GetTimerProgressPerMs() const {
- return animation_->timer_control_->progress_per_millisecond_;
+ base::TimeDelta GetTimerTotalDuration() const {
+ return animation_->timer_control_->total_duration_;
}
int GetTimerCycles() const {
@@ -205,8 +203,7 @@ TEST_F(SkiaVectorAnimationTest, InitializationAndLoadingData) {
animation_ = std::make_unique<SkiaVectorAnimation>(skottie_);
EXPECT_FLOAT_EQ(animation_->GetOriginalSize().width(), kAnimationWidth);
EXPECT_FLOAT_EQ(animation_->GetOriginalSize().height(), kAnimationHeight);
- EXPECT_FLOAT_EQ(animation_->GetAnimationDuration().InSecondsF(),
- kAnimationDuration);
+ EXPECT_EQ(animation_->GetAnimationDuration(), kAnimationDuration);
EXPECT_TRUE(IsStopped());
skottie_ = cc::SkottieWrapper::CreateNonSerializable(
@@ -214,8 +211,7 @@ TEST_F(SkiaVectorAnimationTest, InitializationAndLoadingData) {
animation_ = std::make_unique<SkiaVectorAnimation>(skottie_);
EXPECT_FLOAT_EQ(animation_->GetOriginalSize().width(), kAnimationWidth);
EXPECT_FLOAT_EQ(animation_->GetOriginalSize().height(), kAnimationHeight);
- EXPECT_FLOAT_EQ(animation_->GetAnimationDuration().InSecondsF(),
- kAnimationDuration);
+ EXPECT_EQ(animation_->GetAnimationDuration(), kAnimationDuration);
EXPECT_TRUE(IsStopped());
}
@@ -223,8 +219,7 @@ TEST_F(SkiaVectorAnimationTest, PlayLinearAnimation) {
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- // Advance clock by 300 milliseconds.
- AdvanceClock(300);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(300));
EXPECT_TRUE(IsStopped());
animation_->Start(SkiaVectorAnimation::Style::kLinear);
@@ -240,18 +235,22 @@ TEST_F(SkiaVectorAnimationTest, PlayLinearAnimation) {
EXPECT_FLOAT_EQ(GetTimerStartOffset(), 0);
EXPECT_FLOAT_EQ(GetTimerEndOffset(), 1.f);
- EXPECT_FLOAT_EQ(GetTimerProgressPerMs(), 1.f / 5000.f);
+ EXPECT_EQ(GetTimerTotalDuration(), kAnimationDuration);
- AdvanceClock(50);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 50);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(50);
+ AdvanceClock(kAdvance);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 50.f / 5000.f);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 0);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ kAdvance / kAnimationDuration);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), base::TimeDelta());
// Advance the clock to the end of the animation.
- AdvanceClock(4951);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 4951);
+ constexpr auto kAdvanceToEnd =
+ kAnimationDuration - kAdvance + base::TimeDelta::FromMilliseconds(1);
+ AdvanceClock(kAdvanceToEnd);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvanceToEnd);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 1.f);
EXPECT_TRUE(HasAnimationEnded());
@@ -262,8 +261,7 @@ TEST_F(SkiaVectorAnimationTest, StopLinearAnimation) {
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- // Advance clock by 300 milliseconds.
- AdvanceClock(300);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(300));
animation_->Start(SkiaVectorAnimation::Style::kLinear);
@@ -271,30 +269,29 @@ TEST_F(SkiaVectorAnimationTest, StopLinearAnimation) {
EXPECT_TRUE(IsPlaying());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 0);
- AdvanceClock(50);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(50);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 50.f / 5000.f);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ kAdvance / kAnimationDuration);
animation_->Stop();
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 0.f);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 0.0f);
EXPECT_TRUE(IsStopped());
}
TEST_F(SkiaVectorAnimationTest, PlaySubsectionOfLinearAnimation) {
- const int start_time_ms = 400;
- const int duration_ms = 1000;
- const float total_duration_ms = kAnimationDuration * 1000.f;
+ constexpr auto kStartTime = base::TimeDelta::FromMilliseconds(400);
+ constexpr auto kDuration = base::TimeDelta::FromMilliseconds(1000);
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- // Advance clock by 300 milliseconds.
- AdvanceClock(300);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(300));
EXPECT_FALSE(observer.animation_cycle_ended());
- animation_->StartSubsection(base::TimeDelta::FromMilliseconds(start_time_ms),
- base::TimeDelta::FromMilliseconds(duration_ms),
+ animation_->StartSubsection(kStartTime, kDuration,
SkiaVectorAnimation::Style::kLinear);
EXPECT_TRUE(IsScheduledToPlay());
@@ -308,32 +305,36 @@ TEST_F(SkiaVectorAnimationTest, PlaySubsectionOfLinearAnimation) {
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), GetTimerStartOffset());
EXPECT_FLOAT_EQ(GetTimerEndOffset(),
- (start_time_ms + duration_ms) / total_duration_ms);
+ (kStartTime + kDuration) / kAnimationDuration);
- EXPECT_FLOAT_EQ(GetTimerProgressPerMs(), 1.f / total_duration_ms);
+ EXPECT_EQ(GetTimerTotalDuration(), kAnimationDuration);
- AdvanceClock(100);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 100);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(100);
+ AdvanceClock(kAdvance);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 0);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), base::TimeDelta());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (100.f + start_time_ms) / total_duration_ms);
+ (kStartTime + kAdvance) / kAnimationDuration);
EXPECT_FALSE(observer.animation_cycle_ended());
// Advance clock another 300 ms.
- AdvanceClock(300);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 300);
+ constexpr auto kAdvance2 = base::TimeDelta::FromMilliseconds(300);
+ AdvanceClock(kAdvance2);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvance2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 0);
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (100.f + 300.f + start_time_ms) / total_duration_ms);
+ (kStartTime + kAdvance + kAdvance2) / kAnimationDuration);
EXPECT_FALSE(observer.animation_cycle_ended());
// Reach the end of animation.
- AdvanceClock(601);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 601);
+ constexpr auto kAdvanceToEnd =
+ kDuration - kAdvance - kAdvance2 + base::TimeDelta::FromMilliseconds(1);
+ AdvanceClock(kAdvanceToEnd);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvanceToEnd);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), GetTimerEndOffset());
EXPECT_TRUE(observer.animation_cycle_ended());
@@ -341,33 +342,35 @@ TEST_F(SkiaVectorAnimationTest, PlaySubsectionOfLinearAnimation) {
}
TEST_F(SkiaVectorAnimationTest, PausingLinearAnimation) {
- const int start_time_ms = 400;
- const int duration_ms = 1000;
- const float total_duration_ms = kAnimationDuration * 1000.f;
+ constexpr auto kStartTime = base::TimeDelta::FromMilliseconds(400);
+ constexpr auto kDuration = base::TimeDelta::FromMilliseconds(1000);
+
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- AdvanceClock(200);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(200));
- animation_->StartSubsection(base::TimeDelta::FromMilliseconds(start_time_ms),
- base::TimeDelta::FromMilliseconds(duration_ms),
+ animation_->StartSubsection(kStartTime, kDuration,
SkiaVectorAnimation::Style::kLinear);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- AdvanceClock(100);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 500.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ (kStartTime + kAdvance) / kAnimationDuration);
- AdvanceClock(100);
+ AdvanceClock(kAdvance);
animation_->Pause();
EXPECT_TRUE(IsPaused());
// Advancing clock and stepping animation should have no effect when animation
// is paused.
- AdvanceClock(5000);
+ AdvanceClock(kAnimationDuration);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 500.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ (kStartTime + kAdvance) / kAnimationDuration);
// Resume playing the animation.
animation_->ResumePlaying();
@@ -376,13 +379,15 @@ TEST_F(SkiaVectorAnimationTest, PausingLinearAnimation) {
// There should be no progress, since we haven't advanced the clock yet.
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_TRUE(IsPlaying());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 500.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ (kStartTime + kAdvance) / kAnimationDuration);
- AdvanceClock(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 600.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ (kStartTime + kAdvance * 2) / kAnimationDuration);
- AdvanceClock(801);
+ AdvanceClock(kDuration - kAdvance * 2 + base::TimeDelta::FromMilliseconds(1));
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
}
@@ -390,8 +395,7 @@ TEST_F(SkiaVectorAnimationTest, PlayLoopAnimation) {
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- // Advance clock by 300 milliseconds.
- AdvanceClock(300);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(300));
EXPECT_TRUE(IsStopped());
animation_->Start(SkiaVectorAnimation::Style::kLoop);
@@ -406,20 +410,23 @@ TEST_F(SkiaVectorAnimationTest, PlayLoopAnimation) {
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 0);
EXPECT_FLOAT_EQ(GetTimerStartOffset(), 0);
- EXPECT_FLOAT_EQ(GetTimerEndOffset(), 1.f);
+ EXPECT_FLOAT_EQ(GetTimerEndOffset(), 1.0f);
- EXPECT_FLOAT_EQ(GetTimerProgressPerMs(), 1.f / 5000.f);
+ EXPECT_EQ(GetTimerTotalDuration(), kAnimationDuration);
- AdvanceClock(50);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 50);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(50);
+ AdvanceClock(kAdvance);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 50.f / 5000.f);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 0);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ kAdvance / kAnimationDuration);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), base::TimeDelta());
// Advance the clock to the end of the animation.
- AdvanceClock(4950);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 4950);
+ AdvanceClock(kAnimationDuration - kAdvance);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()),
+ kAnimationDuration - kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_EQ(GetTimerCycles(), 1);
EXPECT_TRUE(std::abs(animation_->GetCurrentProgress() - 0.f) < 0.0001f);
@@ -428,19 +435,16 @@ TEST_F(SkiaVectorAnimationTest, PlayLoopAnimation) {
}
TEST_F(SkiaVectorAnimationTest, PlaySubsectionOfLoopAnimation) {
- const int start_time_ms = 400;
- const int duration_ms = 1000;
- const float total_duration_ms = kAnimationDuration * 1000.f;
-
+ constexpr auto kStartTime = base::TimeDelta::FromMilliseconds(400);
+ constexpr auto kDuration = base::TimeDelta::FromMilliseconds(1000);
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- // Advance clock by 300 milliseconds.
- AdvanceClock(300);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(300));
+
EXPECT_TRUE(IsStopped());
- animation_->StartSubsection(base::TimeDelta::FromMilliseconds(start_time_ms),
- base::TimeDelta::FromMilliseconds(duration_ms),
+ animation_->StartSubsection(kStartTime, kDuration,
SkiaVectorAnimation::Style::kLoop);
EXPECT_TRUE(IsScheduledToPlay());
EXPECT_FALSE(observer.animation_will_start_playing());
@@ -452,35 +456,37 @@ TEST_F(SkiaVectorAnimationTest, PlaySubsectionOfLoopAnimation) {
EXPECT_TRUE(observer.animation_will_start_playing());
EXPECT_FALSE(observer.animation_cycle_ended());
- EXPECT_FLOAT_EQ(GetTimerStartOffset(), 400.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(GetTimerStartOffset(), kStartTime / kAnimationDuration);
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), GetTimerStartOffset());
EXPECT_FLOAT_EQ(GetTimerEndOffset(),
- (start_time_ms + duration_ms) / total_duration_ms);
+ (kStartTime + kDuration) / kAnimationDuration);
- EXPECT_FLOAT_EQ(GetTimerProgressPerMs(), 1.f / total_duration_ms);
+ EXPECT_EQ(GetTimerTotalDuration(), kAnimationDuration);
- AdvanceClock(100);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 100);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(100);
+ AdvanceClock(kAdvance);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvance);
EXPECT_FALSE(observer.animation_cycle_ended());
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 0);
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (100.f + start_time_ms) / total_duration_ms);
+ (kStartTime + kAdvance) / kAnimationDuration);
- // Advance clock another 300 ms.
- AdvanceClock(300);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 300);
+ constexpr auto kAdvance2 = base::TimeDelta::FromMilliseconds(300);
+ AdvanceClock(kAdvance2);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvance2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 0);
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (100.f + 300.f + start_time_ms) / total_duration_ms);
+ (kStartTime + kAdvance + kAdvance2) / kAnimationDuration);
EXPECT_FALSE(observer.animation_cycle_ended());
// Reach the end of animation.
- AdvanceClock(600);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 600);
+ AdvanceClock(kDuration - kAdvance - kAdvance2);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()),
+ kDuration - kAdvance - kAdvance2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_TRUE(observer.animation_cycle_ended());
@@ -489,36 +495,38 @@ TEST_F(SkiaVectorAnimationTest, PlaySubsectionOfLoopAnimation) {
}
TEST_F(SkiaVectorAnimationTest, PausingLoopAnimation) {
- const int start_time_ms = 400;
- const int duration_ms = 1000;
- const float total_duration_ms = kAnimationDuration * 1000.f;
+ constexpr auto kStartTime = base::TimeDelta::FromMilliseconds(400);
+ constexpr auto kDuration = base::TimeDelta::FromMilliseconds(1000);
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- AdvanceClock(200);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(200));
- animation_->StartSubsection(base::TimeDelta::FromMilliseconds(start_time_ms),
- base::TimeDelta::FromMilliseconds(duration_ms),
+ animation_->StartSubsection(kStartTime, kDuration,
SkiaVectorAnimation::Style::kLoop);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 400.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ kStartTime / kAnimationDuration);
- AdvanceClock(100);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 500.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ (kStartTime + kAdvance) / kAnimationDuration);
- AdvanceClock(100);
+ AdvanceClock(kAdvance);
animation_->Pause();
EXPECT_TRUE(IsPaused());
// Advancing clock and stepping animation should have no effect when animation
// is paused.
- AdvanceClock(5000);
+ AdvanceClock(kAnimationDuration);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 500.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ (kStartTime + kAdvance) / kAnimationDuration);
// Resume playing the animation.
animation_->ResumePlaying();
@@ -527,14 +535,16 @@ TEST_F(SkiaVectorAnimationTest, PausingLoopAnimation) {
// There should be no progress, since we haven't advanced the clock yet.
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_TRUE(IsPlaying());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 500.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ (kStartTime + kAdvance) / kAnimationDuration);
- AdvanceClock(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 600.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ (kStartTime + kAdvance * 2) / kAnimationDuration);
EXPECT_FALSE(observer.animation_cycle_ended());
- AdvanceClock(800);
+ AdvanceClock(kDuration - kAdvance * 2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), GetTimerStartOffset());
EXPECT_TRUE(IsPlaying());
@@ -542,11 +552,10 @@ TEST_F(SkiaVectorAnimationTest, PausingLoopAnimation) {
}
TEST_F(SkiaVectorAnimationTest, PlayThrobbingAnimation) {
-
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- // Advance clock by 300 milliseconds.
- AdvanceClock(300);
+
+ AdvanceClock(base::TimeDelta::FromMilliseconds(300));
animation_->Start(SkiaVectorAnimation::Style::kThrobbing);
EXPECT_TRUE(IsScheduledToPlay());
@@ -560,32 +569,35 @@ TEST_F(SkiaVectorAnimationTest, PlayThrobbingAnimation) {
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 0);
EXPECT_FLOAT_EQ(GetTimerStartOffset(), 0);
- EXPECT_FLOAT_EQ(GetTimerEndOffset(), 1.f);
+ EXPECT_FLOAT_EQ(GetTimerEndOffset(), 1.0f);
- EXPECT_FLOAT_EQ(GetTimerProgressPerMs(), 1.f / 5000.f);
+ EXPECT_EQ(GetTimerTotalDuration(), kAnimationDuration);
- AdvanceClock(50);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 50);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(50);
+ AdvanceClock(kAdvance);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 50.f / 5000.f);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 0);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ kAdvance / kAnimationDuration);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), base::TimeDelta());
// Advance the clock to the end of the animation.
- AdvanceClock(4950);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 4950);
+ AdvanceClock(kAnimationDuration - kAdvance);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()),
+ kAnimationDuration - kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 1.f);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 1.0f);
EXPECT_TRUE(IsPlaying());
EXPECT_FALSE(observer.animation_cycle_ended());
- AdvanceClock(2500);
+ AdvanceClock(kAnimationDuration / 2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 0.5f);
EXPECT_TRUE(IsPlaying());
EXPECT_FALSE(observer.animation_cycle_ended());
- AdvanceClock(2500);
+ AdvanceClock(kAnimationDuration / 2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 0);
EXPECT_TRUE(IsPlaying());
@@ -593,19 +605,15 @@ TEST_F(SkiaVectorAnimationTest, PlayThrobbingAnimation) {
}
TEST_F(SkiaVectorAnimationTest, PlaySubsectionOfThrobbingAnimation) {
- const int start_time_ms = 400;
- const int duration_ms = 1000;
- const float total_duration_ms = kAnimationDuration * 1000.f;
-
+ constexpr auto kStartTime = base::TimeDelta::FromMilliseconds(400);
+ constexpr auto kDuration = base::TimeDelta::FromMilliseconds(1000);
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- // Advance clock by 300 milliseconds.
- AdvanceClock(300);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(300));
- animation_->StartSubsection(base::TimeDelta::FromMilliseconds(start_time_ms),
- base::TimeDelta::FromMilliseconds(duration_ms),
+ animation_->StartSubsection(kStartTime, kDuration,
SkiaVectorAnimation::Style::kThrobbing);
EXPECT_TRUE(IsScheduledToPlay());
EXPECT_FALSE(observer.animation_will_start_playing());
@@ -616,48 +624,52 @@ TEST_F(SkiaVectorAnimationTest, PlaySubsectionOfThrobbingAnimation) {
EXPECT_TRUE(IsPlaying());
EXPECT_TRUE(observer.animation_will_start_playing());
- EXPECT_FLOAT_EQ(GetTimerStartOffset(), 400.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(GetTimerStartOffset(), kStartTime / kAnimationDuration);
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), GetTimerStartOffset());
EXPECT_FLOAT_EQ(GetTimerEndOffset(),
- (start_time_ms + duration_ms) / total_duration_ms);
+ (kStartTime + kDuration) / kAnimationDuration);
- EXPECT_FLOAT_EQ(GetTimerProgressPerMs(), 1.f / total_duration_ms);
+ EXPECT_EQ(GetTimerTotalDuration(), kAnimationDuration);
- AdvanceClock(100);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 100);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(100);
+ AdvanceClock(kAdvance);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FALSE(observer.animation_cycle_ended());
EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 0);
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (100.f + start_time_ms) / total_duration_ms);
+ (kStartTime + kAdvance) / kAnimationDuration);
- // Advance clock another 300 ms.
- AdvanceClock(300);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 300);
+ constexpr auto kAdvance2 = base::TimeDelta::FromMilliseconds(300);
+ AdvanceClock(kAdvance2);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), kAdvance2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FALSE(observer.animation_cycle_ended());
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 0);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()), base::TimeDelta());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (100.f + 300.f + start_time_ms) / total_duration_ms);
+ (kStartTime + kAdvance + kAdvance2) / kAnimationDuration);
// Reach the end of animation.
- AdvanceClock(600);
- EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()).InMilliseconds(), 600);
+ AdvanceClock(kDuration - kAdvance - kAdvance2);
+ EXPECT_EQ(TimeDeltaSince(GetTimerPreviousTick()),
+ kDuration - kAdvance - kAdvance2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_TRUE(IsPlaying());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), GetTimerEndOffset());
EXPECT_FALSE(observer.animation_cycle_ended());
- AdvanceClock(500);
+ constexpr auto kAdvance3 = base::TimeDelta::FromMilliseconds(500);
+ AdvanceClock(kAdvance3);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 900.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ (kStartTime + kDuration - kAdvance3) / kAnimationDuration);
EXPECT_TRUE(IsPlaying());
EXPECT_FALSE(observer.animation_cycle_ended());
- AdvanceClock(500);
+ AdvanceClock(kDuration - kAdvance3);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), GetTimerStartOffset());
EXPECT_TRUE(IsPlaying());
@@ -665,46 +677,45 @@ TEST_F(SkiaVectorAnimationTest, PlaySubsectionOfThrobbingAnimation) {
observer.Reset();
- AdvanceClock(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (start_time_ms + 100.f) / total_duration_ms);
+ (kStartTime + kAdvance) / kAnimationDuration);
EXPECT_TRUE(IsPlaying());
}
TEST_F(SkiaVectorAnimationTest, PausingThrobbingAnimation) {
- const int start_time_ms = 400;
- const int duration_ms = 1000;
- const float total_duration_ms = kAnimationDuration * 1000.f;
+ constexpr auto kStartTime = base::TimeDelta::FromMilliseconds(400);
+ constexpr auto kDuration = base::TimeDelta::FromMilliseconds(1000);
- AdvanceClock(200);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(200));
- animation_->StartSubsection(base::TimeDelta::FromMilliseconds(start_time_ms),
- base::TimeDelta::FromMilliseconds(duration_ms),
+ animation_->StartSubsection(kStartTime, kDuration,
SkiaVectorAnimation::Style::kThrobbing);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_TRUE(IsPlaying());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- start_time_ms / total_duration_ms);
+ kStartTime / kAnimationDuration);
- AdvanceClock(100);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (start_time_ms + 100.f) / total_duration_ms);
+ (kStartTime + kAdvance) / kAnimationDuration);
- AdvanceClock(100);
+ AdvanceClock(kAdvance);
animation_->Pause();
EXPECT_TRUE(IsPaused());
// Advancing clock and stepping animation should have no effect when animation
// is paused.
- AdvanceClock(5000);
+ AdvanceClock(kAnimationDuration);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (start_time_ms + 100.f) / total_duration_ms);
+ (kStartTime + kAdvance) / kAnimationDuration);
// Resume playing the animation.
animation_->ResumePlaying();
@@ -714,31 +725,31 @@ TEST_F(SkiaVectorAnimationTest, PausingThrobbingAnimation) {
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_TRUE(IsPlaying());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (start_time_ms + 100.f) / total_duration_ms);
+ (kStartTime + kAdvance) / kAnimationDuration);
- AdvanceClock(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (start_time_ms + 200.f) / total_duration_ms);
+ (kStartTime + kAdvance * 2) / kAnimationDuration);
- AdvanceClock(800);
+ AdvanceClock(kDuration - kAdvance * 2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), GetTimerEndOffset());
EXPECT_TRUE(IsPlaying());
- AdvanceClock(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (start_time_ms + 900.f) / total_duration_ms);
+ (kStartTime + kDuration - kAdvance) / kAnimationDuration);
EXPECT_TRUE(IsPlaying());
animation_->Pause();
EXPECT_TRUE(IsPaused());
- AdvanceClock(10000);
+ AdvanceClock(kAnimationDuration * 2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (start_time_ms + 900.f) / total_duration_ms);
+ (kStartTime + kDuration - kAdvance) / kAnimationDuration);
// Resume playing the animation.
animation_->ResumePlaying();
@@ -747,32 +758,31 @@ TEST_F(SkiaVectorAnimationTest, PausingThrobbingAnimation) {
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_TRUE(IsPlaying());
- AdvanceClock(500);
+ constexpr auto kAdvance2 = base::TimeDelta::FromMilliseconds(500);
+ AdvanceClock(kAdvance2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (start_time_ms + 400.f) / total_duration_ms);
+ EXPECT_FLOAT_EQ(
+ animation_->GetCurrentProgress(),
+ (kStartTime + kDuration - kAdvance - kAdvance2) / kAnimationDuration);
- AdvanceClock(400);
+ AdvanceClock(kDuration - kAdvance - kAdvance2);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), GetTimerStartOffset());
- AdvanceClock(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
- (start_time_ms + 100.f) / total_duration_ms);
+ (kStartTime + kAdvance) / kAnimationDuration);
EXPECT_TRUE(IsPlaying());
}
+// Test to see if the race condition is handled correctly. It may happen that we
+// pause the video before it even starts playing.
TEST_F(SkiaVectorAnimationTest, PauseBeforePlay) {
- const float total_duration_ms = kAnimationDuration * 1000.f;
-
- // Test to see if the race condition is handled correctly. It may happen that
- // we pause the video before it even starts playing.
-
TestAnimationObserver observer;
animation_->SetAnimationObserver(&observer);
- AdvanceClock(300);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(300));
animation_->Start();
EXPECT_TRUE(IsScheduledToPlay());
@@ -780,55 +790,50 @@ TEST_F(SkiaVectorAnimationTest, PauseBeforePlay) {
animation_->Pause();
EXPECT_TRUE(IsPaused());
- AdvanceClock(100);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(100));
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
animation_->ResumePlaying();
EXPECT_TRUE(IsScheduledToResume());
- AdvanceClock(100);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(100));
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
EXPECT_TRUE(IsPlaying());
- AdvanceClock(100);
+ constexpr auto kAdvance = base::TimeDelta::FromMilliseconds(100);
+ AdvanceClock(kAdvance);
animation_->Paint(canvas(), NowTicks(), animation_->GetOriginalSize());
- EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(), 100.f / total_duration_ms);
+ EXPECT_FLOAT_EQ(animation_->GetCurrentProgress(),
+ kAdvance / kAnimationDuration);
}
TEST_F(SkiaVectorAnimationTest, PaintTest) {
- std::unique_ptr<gfx::Canvas> canvas(new gfx::Canvas(
- gfx::Size(kAnimationWidth, kAnimationHeight), 1.f, false));
+ gfx::Canvas canvas(gfx::Size(kAnimationWidth, kAnimationHeight), 1.f, false);
- // Advance clock by 300 milliseconds.
- AdvanceClock(300);
+ AdvanceClock(base::TimeDelta::FromMilliseconds(300));
animation_->Start(SkiaVectorAnimation::Style::kLinear);
- animation_->Paint(canvas.get(), NowTicks(), animation_->GetOriginalSize());
-
- AdvanceClock(50);
- animation_->Paint(canvas.get(), NowTicks(), animation_->GetOriginalSize());
- SkBitmap bitmap = canvas->GetBitmap();
- IsAllSameColor(SK_ColorGREEN, bitmap);
-
- AdvanceClock(2450);
- animation_->Paint(canvas.get(), NowTicks(), animation_->GetOriginalSize());
- bitmap = canvas->GetBitmap();
- IsAllSameColor(SK_ColorGREEN, bitmap);
-
- AdvanceClock(50);
- animation_->Paint(canvas.get(), NowTicks(), animation_->GetOriginalSize());
- bitmap = canvas->GetBitmap();
- IsAllSameColor(SK_ColorBLUE, bitmap);
-
- AdvanceClock(1000);
- animation_->Paint(canvas.get(), NowTicks(), animation_->GetOriginalSize());
- bitmap = canvas->GetBitmap();
- IsAllSameColor(SK_ColorBLUE, bitmap);
-
- AdvanceClock(1400);
- animation_->Paint(canvas.get(), NowTicks(), animation_->GetOriginalSize());
- bitmap = canvas->GetBitmap();
- IsAllSameColor(SK_ColorBLUE, bitmap);
+ animation_->Paint(&canvas, NowTicks(), animation_->GetOriginalSize());
+
+ AdvanceClock(base::TimeDelta::FromMilliseconds(50));
+ animation_->Paint(&canvas, NowTicks(), animation_->GetOriginalSize());
+ IsAllSameColor(SK_ColorGREEN, canvas.GetBitmap());
+
+ AdvanceClock(base::TimeDelta::FromMilliseconds(2450));
+ animation_->Paint(&canvas, NowTicks(), animation_->GetOriginalSize());
+ IsAllSameColor(SK_ColorGREEN, canvas.GetBitmap());
+
+ AdvanceClock(base::TimeDelta::FromMilliseconds(50));
+ animation_->Paint(&canvas, NowTicks(), animation_->GetOriginalSize());
+ IsAllSameColor(SK_ColorBLUE, canvas.GetBitmap());
+
+ AdvanceClock(base::TimeDelta::FromMilliseconds(1000));
+ animation_->Paint(&canvas, NowTicks(), animation_->GetOriginalSize());
+ IsAllSameColor(SK_ColorBLUE, canvas.GetBitmap());
+
+ AdvanceClock(base::TimeDelta::FromMilliseconds(1400));
+ animation_->Paint(&canvas, NowTicks(), animation_->GetOriginalSize());
+ IsAllSameColor(SK_ColorBLUE, canvas.GetBitmap());
}
} // namespace gfx