summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/animation/document_timeline_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/animation/document_timeline_test.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/animation/document_timeline_test.cc60
1 files changed, 39 insertions, 21 deletions
diff --git a/chromium/third_party/blink/renderer/core/animation/document_timeline_test.cc b/chromium/third_party/blink/renderer/core/animation/document_timeline_test.cc
index 602ff26fc60..d759e6e921f 100644
--- a/chromium/third_party/blink/renderer/core/animation/document_timeline_test.cc
+++ b/chromium/third_party/blink/renderer/core/animation/document_timeline_test.cc
@@ -42,6 +42,7 @@
#include "third_party/blink/renderer/core/dom/element.h"
#include "third_party/blink/renderer/core/dom/qualified_name.h"
#include "third_party/blink/renderer/core/testing/page_test_base.h"
+#include "third_party/blink/renderer/platform/animation/compositor_animation_timeline.h"
#include "third_party/blink/renderer/platform/heap/heap.h"
#include "third_party/blink/renderer/platform/weborigin/kurl.h"
@@ -59,13 +60,33 @@ namespace blink {
class MockPlatformTiming : public DocumentTimeline::PlatformTiming {
public:
MOCK_METHOD1(WakeAfter, void(base::TimeDelta));
- MOCK_METHOD0(ServiceOnNextFrame, void());
- void Trace(blink::Visitor* visitor) override {
+ void Trace(Visitor* visitor) override {
DocumentTimeline::PlatformTiming::Trace(visitor);
}
};
+class TestDocumentTimeline : public DocumentTimeline {
+ public:
+ TestDocumentTimeline(Document* document)
+ : DocumentTimeline(document, base::TimeDelta(), nullptr),
+ schedule_next_service_called_(false) {}
+ void ScheduleServiceOnNextFrame() override {
+ DocumentTimeline::ScheduleServiceOnNextFrame();
+ schedule_next_service_called_ = true;
+ }
+ void Trace(Visitor* visitor) override { DocumentTimeline::Trace(visitor); }
+ bool ScheduleNextServiceCalled() const {
+ return schedule_next_service_called_;
+ }
+ void ResetScheduleNextServiceCalled() {
+ schedule_next_service_called_ = false;
+ }
+
+ private:
+ bool schedule_next_service_called_;
+};
+
class AnimationDocumentTimelineTest : public PageTestBase {
protected:
void SetUp() override {
@@ -75,8 +96,9 @@ class AnimationDocumentTimelineTest : public PageTestBase {
GetAnimationClock().SetAllowedToDynamicallyUpdateTime(false);
element =
MakeGarbageCollected<Element>(QualifiedName::Null(), document.Get());
+ document->Timeline().ResetForTesting();
platform_timing = MakeGarbageCollected<MockPlatformTiming>();
- timeline = document->Timeline();
+ timeline = MakeGarbageCollected<TestDocumentTimeline>(document);
timeline->SetTimingForTesting(platform_timing);
timeline->ResetForTesting();
@@ -104,12 +126,10 @@ class AnimationDocumentTimelineTest : public PageTestBase {
Persistent<Document> document;
Persistent<Element> element;
- Persistent<DocumentTimeline> timeline;
+ Persistent<TestDocumentTimeline> timeline;
Timing timing;
Persistent<MockPlatformTiming> platform_timing;
- void Wake() { timeline->Wake(); }
-
double MinimumDelay() { return DocumentTimeline::kMinimumDelay; }
};
@@ -173,18 +193,16 @@ TEST_F(AnimationDocumentTimelineTest, ZeroTime) {
EXPECT_EQ(2000, timeline->currentTime());
}
-// EffectiveTime is identical to currentTime/1000 except that it returns 0
-// when the timeline is inactive.
-TEST_F(AnimationDocumentTimelineTest, EffectiveTime) {
+TEST_F(AnimationDocumentTimelineTest, CurrentTimeSeconds) {
GetAnimationClock().UpdateTime(TimeTicksFromMillisecondsD(2000));
- EXPECT_EQ(2, timeline->EffectiveTime());
+ EXPECT_EQ(2, timeline->CurrentTimeSeconds().value());
EXPECT_EQ(2000, timeline->currentTime());
auto* document_without_frame = MakeGarbageCollected<Document>();
auto* inactive_timeline = MakeGarbageCollected<DocumentTimeline>(
document_without_frame, base::TimeDelta(), platform_timing);
- EXPECT_EQ(0, inactive_timeline->EffectiveTime());
+ EXPECT_FALSE(inactive_timeline->CurrentTimeSeconds());
EXPECT_NAN(inactive_timeline->currentTime());
bool is_null = false;
inactive_timeline->currentTime(is_null);
@@ -207,8 +225,8 @@ TEST_F(AnimationDocumentTimelineTest, PlaybackRateNormal) {
TEST_F(AnimationDocumentTimelineTest, PlaybackRateNormalWithOriginTime) {
base::TimeDelta origin_time = base::TimeDelta::FromMilliseconds(-1000);
- timeline = MakeGarbageCollected<DocumentTimeline>(document.Get(), origin_time,
- platform_timing);
+ DocumentTimeline* timeline = MakeGarbageCollected<DocumentTimeline>(
+ document.Get(), origin_time, platform_timing);
timeline->ResetForTesting();
EXPECT_EQ(1.0, timeline->PlaybackRate());
@@ -244,8 +262,8 @@ TEST_F(AnimationDocumentTimelineTest, PlaybackRatePause) {
TEST_F(AnimationDocumentTimelineTest, PlaybackRatePauseWithOriginTime) {
base::TimeDelta origin_time = base::TimeDelta::FromMilliseconds(-1000);
- timeline = MakeGarbageCollected<DocumentTimeline>(document.Get(), origin_time,
- platform_timing);
+ DocumentTimeline* timeline = MakeGarbageCollected<DocumentTimeline>(
+ document.Get(), origin_time, platform_timing);
timeline->ResetForTesting();
EXPECT_EQ(base::TimeTicks() + origin_time, timeline->ZeroTime());
@@ -307,7 +325,7 @@ TEST_F(AnimationDocumentTimelineTest, PlaybackRateFast) {
}
TEST_F(AnimationDocumentTimelineTest, PlaybackRateFastWithOriginTime) {
- timeline = MakeGarbageCollected<DocumentTimeline>(
+ DocumentTimeline* timeline = MakeGarbageCollected<DocumentTimeline>(
document.Get(), base::TimeDelta::FromSeconds(-1000), platform_timing);
timeline->ResetForTesting();
@@ -369,11 +387,11 @@ TEST_F(AnimationDocumentTimelineTest, DelayBeforeAnimationStart) {
MinimumDelay() - 1.5)));
UpdateClockAndService(1500);
- EXPECT_CALL(*platform_timing, ServiceOnNextFrame());
- Wake();
+ timeline->ScheduleServiceOnNextFrame();
- EXPECT_CALL(*platform_timing, ServiceOnNextFrame());
+ timeline->ResetScheduleNextServiceCalled();
UpdateClockAndService(4980);
+ EXPECT_TRUE(timeline->ScheduleNextServiceCalled());
}
TEST_F(AnimationDocumentTimelineTest, UseAnimationAfterTimelineDeref) {
@@ -387,7 +405,7 @@ TEST_F(AnimationDocumentTimelineTest, PlayAfterDocumentDeref) {
timing.iteration_duration = AnimationTimeDelta::FromSecondsD(2);
timing.start_delay = 5;
- timeline = &document->Timeline();
+ DocumentTimeline* timeline = &document->Timeline();
document = nullptr;
auto* keyframe_effect = MakeGarbageCollected<KeyframeEffect>(
@@ -439,7 +457,7 @@ TEST_F(AnimationDocumentTimelineRealTimeTest,
document->Loader()->GetTiming().ReferenceMonotonicTime().is_null());
base::TimeDelta origin_time = base::TimeDelta::FromSeconds(1000);
- timeline =
+ DocumentTimeline* timeline =
MakeGarbageCollected<DocumentTimeline>(document.Get(), origin_time);
timeline->SetPlaybackRate(0.5);
EXPECT_EQ(origin_time * 2,