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..0b95f24f664b661b2a351e632603718d31c82ef5 |
--- /dev/null |
+++ b/LayoutTests/web-animations-api/player-state-changes.html |
@@ -0,0 +1,418 @@ |
+<!DOCTYPE html> |
+<script src="../resources/testharness.js"></script> |
+<script src="../resources/testharnessreport.js"></script> |
+ |
+<script> |
+function assert_unresolved(value) { |
+ assert_equals(value, null); |
+} |
+ |
+function idlePlayer() { |
+ var player = document.documentElement.animate([], 100000); |
+ player.cancel(); |
+ 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; |
+} |
+ |
+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; |
+ 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 - 1000; |
+ assert_equals(player.startTime, document.timeline.currentTime - 1000); |
+ assert_equals(player.currentTime, 1000); |
+ 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> |