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

Unified Diff: LayoutTests/web-animations-api/player-state-changes.html

Issue 555063002: Web Animations: Add tests for player state transitions and fix discovered issues (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Finish shouldn't exit idle. Created 6 years, 3 months 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
« no previous file with comments | « no previous file | Source/core/animation/AnimationPlayer.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: LayoutTests/web-animations-api/player-state-changes.html
diff --git a/LayoutTests/web-animations-api/player-state-changes.html b/LayoutTests/web-animations-api/player-state-changes.html
new file mode 100644
index 0000000000000000000000000000000000000000..ec53f1ecf53605680c55753f483393249ce7afd1
--- /dev/null
+++ b/LayoutTests/web-animations-api/player-state-changes.html
@@ -0,0 +1,419 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+
+<script>
+function assert_unresolved(value) {
+ assert_true(isNaN(value));
+}
+
+function idlePlayer() {
+ var player = document.documentElement.animate([], 100000);
+ player.cancel();
+ assert_equals(player.playState, 'idle');
+ return player;
+}
+
+function runningPlayer() {
+ var player = document.documentElement.animate([], 100000);
+ player.startTime = document.timeline.currentTime;
+ return player;
+}
+
+function pendingStartTimePlayer() {
+ var player = document.documentElement.animate([], 100000);
+ return player;
+}
+
+function pendingStartTimeAndCurrentTimePlayer() {
+ var player = document.documentElement.animate([], 100000);
+ player.pause();
+ player.play();
+ return player;
+}
+
+function pausedPlayer() {
+ var player = document.documentElement.animate([], 100000);
+ player.pause();
+ player.currentTime = 0;
+ return player;
+}
+
+function finishedPlayer() {
+ var player = document.documentElement.animate([], 100000);
+ player.finish();
+ return player;
+}
alancutter (OOO until 2018) 2014/09/10 03:59:42 We should add assertions to all these helper funct
dstockwell 2014/09/10 04:01:10 That's what the tests immediately below are for.
alancutter (OOO until 2018) 2014/09/10 07:27:05 Acknowledged. In that case looks like idlePlayer()
dstockwell 2014/09/10 07:42:16 Removed.
+
+test(function() {
+ var player = idlePlayer();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "idle");
+
+test(function() {
+ var player = pendingStartTimePlayer();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime");
+
+test(function() {
+ var player = pendingStartTimeAndCurrentTimePlayer();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime and currentTime");
+
+test(function() {
+ var player = runningPlayer();
+ assert_equals(player.startTime, document.timeline.currentTime - player.currentTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'running');
+}, "running");
+
+test(function() {
+ var player = pausedPlayer();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'paused');
+}, "paused");
+
+test(function() {
+ var player = finishedPlayer();
+ assert_equals(player.startTime, document.timeline.currentTime - player.currentTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'finished');
+}, "finished");
+
+test(function() {
+ var player = idlePlayer();
+ player.play();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'pending');
+}, "idle -> play()");
+
+test(function() {
+ var player = idlePlayer();
+ player.pause();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "idle -> pause()");
+
+test(function() {
+ var player = idlePlayer();
+ player.cancel();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "idle -> cancel()");
+
+test(function() {
+ var player = idlePlayer();
+ player.finish();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "idle -> finish()");
+
+test(function() {
+ var player = idlePlayer();
+ player.reverse();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'pending');
+}, "idle -> reverse()");
+
+test(function() {
+ var player = idlePlayer();
+ player.currentTime = 1000;
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "idle -> set currentTime");
+
+test(function() {
+ var player = idlePlayer();
+ player.startTime = 1000;
alancutter (OOO until 2018) 2014/09/10 07:27:05 It looks like pause(), finish(), cancel() and seek
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "idle -> set startTime");
+
+test(function() {
+ var player = pendingStartTimePlayer();
+ player.play();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime -> play()");
+
+test(function() {
+ var player = pendingStartTimePlayer();
+ player.pause();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime -> pause()");
+
+test(function() {
+ var player = pendingStartTimePlayer();
+ player.cancel();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "pending startTime -> cancel()");
+
+test(function() {
+ var player = pendingStartTimePlayer();
+ player.finish();
+ assert_equals(player.startTime, document.timeline.currentTime - player.currentTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'finished');
+}, "pending startTime -> finish()");
+
+test(function() {
+ var player = pendingStartTimePlayer();
+ player.reverse();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime -> reverse()");
+
+test(function() {
+ var player = pendingStartTimePlayer();
+ player.currentTime = 1000;
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 1000);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime -> set currentTime");
+
+test(function() {
+ var player = pendingStartTimePlayer();
+ player.startTime = document.timeline.currentTime;
alancutter (OOO until 2018) 2014/09/10 07:27:05 Wouldn't hurt to use "document.timeline.currentTim
dstockwell 2014/09/10 07:42:16 Done.
+ assert_equals(player.startTime, document.timeline.currentTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'running');
+}, "pending startTime -> set startTime");
+
+test(function() {
+ var player = pendingStartTimeAndCurrentTimePlayer();
+ player.play();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime & currentTime -> play()");
+
+test(function() {
+ var player = pendingStartTimeAndCurrentTimePlayer();
+ player.pause();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime & currentTime -> pause()");
+
+test(function() {
+ var player = pendingStartTimeAndCurrentTimePlayer();
+ player.cancel();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "pending startTime & currentTime -> cancel()");
+
+test(function() {
+ var player = pendingStartTimeAndCurrentTimePlayer();
+ player.finish();
+ assert_equals(player.startTime, document.timeline.currentTime - player.currentTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'finished');
+}, "pending startTime & currentTime -> finish()");
+
+test(function() {
+ var player = pendingStartTimeAndCurrentTimePlayer();
+ player.reverse();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime & currentTime -> reverse()");
+
+test(function() {
+ var player = pendingStartTimeAndCurrentTimePlayer();
+ player.currentTime = 1000;
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 1000);
+ assert_equals(player.playState, 'pending');
+}, "pending startTime & currentTime -> set currentTime");
+
+test(function() {
+ var player = pendingStartTimeAndCurrentTimePlayer();
+ player.startTime = document.timeline.currentTime;
+ assert_equals(player.startTime, document.timeline.currentTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'running');
+}, "pending startTime & currentTime -> set startTime");
+
+test(function() {
+ var player = runningPlayer();
+ var startTime = player.startTime;
+ var currentTime = player.currentTime;
+ player.play();
+ assert_equals(player.startTime, startTime);
+ assert_equals(player.currentTime, currentTime);
+ assert_equals(player.playState, 'running');
+}, "running -> play()");
+
+test(function() {
+ var player = runningPlayer();
+ player.pause();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'pending');
+}, "running -> pause()");
+
+test(function() {
+ var player = runningPlayer();
+ player.cancel();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "running -> cancel()");
+
+test(function() {
+ var player = runningPlayer();
+ player.finish();
+ assert_equals(player.startTime, document.timeline.currentTime - player.currentTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'finished');
+}, "running -> finish()");
+
+test(function() {
+ var player = runningPlayer();
+ player.reverse();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'pending');
+}, "running -> reverse()");
+
+test(function() {
+ var player = runningPlayer();
+ player.currentTime = 1000;
+ assert_equals(player.startTime, document.timeline.currentTime - player.currentTime);
+ assert_equals(player.currentTime, 1000);
+ assert_equals(player.playState, 'running');
+}, "running -> set currentTime");
+
+test(function() {
+ var player = runningPlayer();
+ player.startTime = document.timeline.currentTime - 1000;
+ assert_equals(player.startTime, document.timeline.currentTime - 1000);
+ assert_equals(player.currentTime, 1000);
+ assert_equals(player.playState, 'running');
+}, "running -> set startTime");
+
+test(function() {
+ var player = pausedPlayer();
+ player.play();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'pending');
+}, "paused -> play()");
+
+test(function() {
+ var player = pausedPlayer();
+ player.pause();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'paused');
+}, "paused -> pause()");
+
+test(function() {
+ var player = pausedPlayer();
+ player.cancel();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "paused -> cancel()");
+
+test(function() {
+ var player = pausedPlayer();
+ player.finish();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'paused');
+}, "paused -> finish()");
+
+test(function() {
+ var player = pausedPlayer();
+ player.reverse();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'pending');
+}, "paused -> reverse()");
+
+test(function() {
+ var player = pausedPlayer();
+ player.currentTime = 1000;
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 1000);
+ assert_equals(player.playState, 'paused');
+}, "paused -> set currentTime");
+
+test(function() {
+ var player = pausedPlayer();
+ player.startTime = 1000;
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'paused');
+}, "paused -> set startTime");
+
+test(function() {
+ var player = finishedPlayer();
+ player.play();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 0);
+ assert_equals(player.playState, 'pending');
+}, "finished -> play()");
+
+test(function() {
+ var player = finishedPlayer();
+ player.pause();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'paused');
+}, "finished -> pause()");
+
+test(function() {
+ var player = finishedPlayer();
+ player.cancel();
+ assert_unresolved(player.startTime);
+ assert_unresolved(player.currentTime);
+ assert_equals(player.playState, 'idle');
+}, "finished -> cancel()");
+
+test(function() {
+ var player = finishedPlayer();
+ player.finish();
+ assert_equals(player.startTime, document.timeline.currentTime - player.currentTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'finished');
+}, "finished -> finish()");
+
+test(function() {
+ var player = finishedPlayer();
+ player.reverse();
+ assert_unresolved(player.startTime);
+ assert_equals(player.currentTime, 100000);
+ assert_equals(player.playState, 'pending');
+}, "finished -> reverse()");
+
+test(function() {
+ var player = finishedPlayer();
+ player.currentTime = 1000;
+ assert_equals(player.startTime, document.timeline.currentTime - player.currentTime);
+ assert_equals(player.currentTime, 1000);
+ assert_equals(player.playState, 'running');
+}, "finished -> set currentTime");
+</script>
« no previous file with comments | « no previous file | Source/core/animation/AnimationPlayer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698