Index: bower_components/web-animations-js/test/testcases/test-player.html |
diff --git a/bower_components/web-animations-js/test/testcases/test-player.html b/bower_components/web-animations-js/test/testcases/test-player.html |
deleted file mode 100644 |
index 7254669d2464a387b152eab1cf19260990e83db4..0000000000000000000000000000000000000000 |
--- a/bower_components/web-animations-js/test/testcases/test-player.html |
+++ /dev/null |
@@ -1,786 +0,0 @@ |
-<!-- |
-Copyright 2013 Google Inc. All Rights Reserved. |
- |
-Licensed under the Apache License, Version 2.0 (the "License"); |
-you may not use this file except in compliance with the License. |
-You may obtain a copy of the License at |
- |
- http://www.apache.org/licenses/LICENSE-2.0 |
- |
-Unless required by applicable law or agreed to in writing, software |
-distributed under the License is distributed on an "AS IS" BASIS, |
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-See the License for the specific language governing permissions and |
-limitations under the License. |
- |
-Written by Steph McArthur |
---> |
- |
-<!DOCTYPE html><meta charset="UTF-8"> |
-<div id="anim"></div> |
- |
-<script src="../bootstrap.js"></script> |
-<script> |
-var animation = new Animation(anim, {left: "100px"}, 100); |
-var dt = document.timeline; |
- |
-// Test AnimationPlayer.timeline. |
-var player1 = dt.play(animation); |
-test(function() {assert_equals(player1.timeline, document.timeline)}, |
- "AnimationPlayer.timeline is document timeline"); |
- |
-// Test that TimedItem.player and AnimationPlayer.source are consistent. |
-test(function() {assert_equals(player1.source, animation)}, |
- "AnimationPlayer.source should be the Animation"); |
-test(function() {assert_equals(animation.player, player1)}, |
- "TimedItem.player should be the AnimationPlayer"); |
- |
-// Test that play() always returns a new AnimationPlayer. |
-var player2 = dt.play(animation); |
-test(function() {assert_not_equals(player2, player1)}, |
- "Repeated calls to play() should create a new AnimationPlayer"); |
-test(function() {assert_equals(animation.player, player2)}, |
- "Repeated play(): TimedItem.player should be the AnimationPlayer"); |
-test(function() {assert_equals(player2.source, animation)}, |
- "Repeated play(): AnimationPlayer.source should be the Animation"); |
-test(function() {assert_equals(player2.startTime, player1.startTime)}, |
- "Repeated play(): Players should have same start time"); |
- |
-// Test explicit setting of AnimationPlayer.source. |
-player1.source = animation; |
-test(function() {assert_equals(player2.source, null)}, |
- "Set AnimationPlayer.source: Old source should be null"); |
-test(function() {assert_equals(player1.source, animation)}, |
- "Set AnimationPlayer.source: New source should be the Animation"); |
-test(function() {assert_equals(animation.player, player1)}, |
- "Set AnimationPlayer.source: TimedItem.player should be the AnimationPlayer"); |
- |
-// Test that TimedItem.player gives null on a detached tree. |
-var animation2 = |
- new Animation(document.getElementById("anim"), {left: "100px"}); |
-var animationGroup = new AnimationGroup([animation2]); |
-test(function() {assert_equals(animationGroup.player, null)}, |
- "TimedItem.player should be null for root"); |
-test(function() {assert_equals(animation2.player, null)}, |
- "TimedItem.player should be null for leaf"); |
- |
-// Test that TimedItem.player remotes to the root of the tree. |
-var player3 = dt.play(animationGroup); |
-test(function() {assert_equals(animation2.player, player3)}, |
- "TimedItem.player should remote"); |
- |
-// Test that calling play() on a TimedItem with a parent results in |
-// reparenting. |
-var player4 = dt.play(animation2); |
-test(function() {assert_equals(animation2.parent, null)}, |
- "Animation should be reparented"); |
-test(function() {assert_equals(animationGroup.children.length, 0)}, |
- "Animation parent should be updated, leaving animationGroup.children.length = 0"); |
-test(function() {assert_equals(player4.source, animation2)}, |
- "AnimationPlayer should use reparented animation"); |
- |
-// Test that setting a parent on a TimedItem with an AnimationPlayer causes the |
-// player to be disconnected. |
-animationGroup.append(animation2); |
-test(function() {assert_equals(animationGroup.player, player3)}, |
- "TimedItem.player should be updated for root"); |
-test(function() {assert_equals(animation2.player, player3)}, |
- "TimedItem.player should be updated for leaf"); |
-test(function() {assert_equals(player4.source, null)}, |
- "AnimationPlayer.source should be updated"); |
-test(function() {assert_equals(animation2.parent, animationGroup)}, |
- "Animation.parent should be updated"); |
-test(function() {assert_equals(animationGroup.children.length, 1)}, |
- "Animation parent should be updated, leaving animationGroup.children.length = 1"); |
-test(function() {assert_equals(animationGroup.children[0], animation2)}, |
- "Animation parent should be updated"); |
- |
-// Test that currentTime is zero before timeline starts. |
-test(function() {assert_equals(document.timeline.play(animation).currentTime, 0)}, |
- "currentTime should be zero before Timeline starts"); |
- |
-// Test that startTime is zero before timeline starts. |
-test(function() {assert_equals(document.timeline.play(animation).startTime, 0)}, |
- "startTime should be zero before Timeline starts"); |
- |
-// Test that setting currentTime has an effect before the timeline starts. |
-var player5 = dt.play(animation); |
-player5.currentTime = 42; |
-test(function() {assert_equals(player5.currentTime, 42)}, |
- "player5 can be seeked before timeline starts"); |
-timing_test(function() { |
- at(0.1, function() { |
- assert_equals(player5.currentTime, 42.1); |
- }); |
- }, "player5's updates to currentTime should persist after Timeline starts"); |
- |
-// Test that setting startTime has an effect before the timeline starts. |
-var player6 = dt.play(animation.clone()); |
-player6.startTime = 42; |
-test(function() {assert_equals(player6.currentTime, -42)}, |
- "player6's currentTime should always be zero before Timeline starts"); |
- |
-// Test that an AnimationPlayer's TimedItem gets a null inherited time until the |
-// timeline starts. |
-var animation1 = new Animation(document.getElementById("anim"), {left: "100px"}); |
-dt.play(animation1); |
-test(function() {assert_equals(animation1.localTime, null)}, |
- "TimedItem's inherited time, and thus " + |
- "localTime should be null before Timeline starts"); |
-timing_test(function() { |
- at(0.0, function() {assert_not_equals(animation1.localTime, null)}); |
- }, "TimedItem's inherited time " + |
- "and thus localTime should not be null after Timeline starts"); |
- |
-// Test that TimedItem is updated immediately on calling Timeline.play() after |
-// the timeline starts. |
-var animation4 = new Animation( |
- document.getElementById("anim"), {left: "100px"}); |
-test(function() {assert_equals(animation4.localTime, null)}, |
- "localTime should be null before playing"); |
-timing_test(function() { |
- at(0.0, function() { |
- document.timeline.play(animation4); |
- assert_equals(animation4.localTime, 0) |
- }); |
- }, "localTime should be set by playing"); |
- |
-// Test that updates to currentTime take immediate effect. |
-timing_test(function() { |
- at(0.0, function() { |
- var animation5 = new Animation( |
- document.getElementById("anim"), {left: "100px"}, 100); |
- document.timeline.play(animation5).currentTime = 42; |
- assert_equals(animation5.localTime, 42); |
- }); |
- }, "Updates to AnimationPlayer.currentTime should take immediate effect"); |
- |
-// Test that updates to source take immediate effect. |
-timing_test(function() { |
- at(0.0, function() { |
- var player = document.timeline.play(new Animation( |
- document.getElementById("anim"), {left: "100px"})); |
- var animation7 = new Animation( |
- document.getElementById("anim"), {left: "100px"}); |
- player.source = animation7; |
- assert_equals(animation7.localTime, 0); |
- }); |
- }, "Updates to AnimationPlayer.source should take immediate effect"); |
- |
-function createPlayer(duration) { |
- return document.timeline.play(new Animation(null, null, duration)); |
-} |
- |
-// Tests the initial values of the AnimationPlayer API. |
-timing_test(function() { |
- at(0, function() { |
- var anim = new Animation(null, null, 3); |
- assert_equals(anim.player, null, "player should be null initially"); |
- |
- // Check state after playing |
- document.timeline.play(anim); |
- assert_not_equals(anim.player, null, "player should be not be null when playing"); |
- assert_equals(anim.player.source, anim, "Initial source content"); |
- assert_equals(anim.player.timeline, document.timeline, "Initial document timeline"); |
- assert_equals(anim.player.startTime, document.timeline.currentTime, "Initial start time"); |
- assert_equals(anim.player.currentTime, 0, "Initial current time"); |
- assert_equals(anim.player.timeLag, 0, "Initial time lag"); |
- assert_equals(anim.player.playbackRate, 1, "Initial playback rate"); |
- assert_false(anim.player.paused, "Initial paused state"); |
- assert_false(anim.player.finished, "Initial finished state"); |
- }); |
- }, "Initial state"); |
- |
-// Test paused states after pausing. |
-test(function() { |
- var player = createPlayer(3); |
- |
- // Pause |
- player.pause(); |
- assert_true(player.paused, "Paused state after pausing"); |
- assert_false(player.finished, "Finished state after pausing"); |
- |
- // Unpause |
- player.play(); |
- assert_false(player.paused, "Paused state after unpausing"); |
- assert_false(player.finished, "Finished state after unpausing"); |
- }, "Pause"); |
- |
-// Test seeking behind startTime for a forwards player. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Seek before start |
- player.currentTime = -0.1; |
- assert_equals(player.currentTime, -0.1, "Current time after seeking before start"); |
- assert_false(player.paused, "Paused state after seeking before start"); |
- assert_false(player.finished, "Finished state after seeking before start"); |
- |
- // Check player does progress |
- at(0.2, function() { |
- assert_equals(player.currentTime, 0.1, "Current time should progress"); |
- }); |
- }, "Seek behind content (forwards)"); |
- |
-// Test players do not get bounded after updating startTime such that they are before the start time. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Set start time in the future |
- player.startTime = 0.1; |
- |
- // Check state of player |
- assert_equals(player.currentTime, -0.1, "Current time while waiting to start"); |
- assert_false(player.paused, "Paused state while waiting to start"); |
- assert_false(player.finished, "Finished state while waiting to start"); |
- |
- // Check player starts automatically |
- at(0.2, function() { |
- assert_equals(player.currentTime, 0.1, "Current time should progress"); |
- assert_false(player.paused, "Paused state after starting"); |
- assert_false(player.finished, "Finished state after starting"); |
- }); |
- }, "No bounding at start"); |
- |
-// Test players get bounded when they finish their source content. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Seek to just before end |
- player.currentTime = 2.9; |
- |
- // Check state of player |
- assert_equals(player.currentTime, 2.9, "Current time just before end"); |
- assert_false(player.paused, "Paused state just before end"); |
- assert_false(player.finished, "Finished state just before end"); |
- |
- // Check player after finishing |
- at(0.2, function() { |
- assert_equals(player.currentTime, 3.0, "Current time when bounded progress"); |
- assert_false(player.paused, "Paused state after ending"); |
- assert_true(player.finished, "Finished state after ending"); |
- }); |
- }, "Limiting at end (seek with current time)"); |
- |
-// Test players get bounded when they finish their source content after altering start time. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Seek to just before end using the start time |
- player.startTime -= 2.9; |
- |
- // Check state of player |
- assert_equals(player.currentTime, 2.9, "Current time just before end"); |
- assert_false(player.paused, "Paused state just before end"); |
- assert_false(player.finished, "Finished state just before end"); |
- |
- // Check player after finishing |
- at(0.2, function() { |
- assert_equals(player.currentTime, 3.0, "Current time when bounded progress"); |
- assert_false(player.paused, "Paused state after ending"); |
- assert_true(player.finished, "Finished state after ending"); |
- }); |
- }, "Limiting at end (seek with start time)"); |
- |
-// Test reversing a player prior to starting doesn't snap the current time to the beginning. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Seek before start |
- player.currentTime = -0.1; |
- |
- // Check state |
- assert_equals(player.currentTime, -0.1, "Current time before reversing"); |
- assert_false(player.finished, "Finished state before reversing"); |
- |
- // Reverse |
- player.reverse(); |
- assert_equals(player.currentTime, -0.1, "Current time after reversing"); |
- assert_true(player.finished, "Finished state after reversing"); |
- assert_equals(player.playbackRate, -1, "Playback rate after reversing"); |
- |
- // Check player after some time |
- at(0.2, function() { |
- assert_equals(player.currentTime, -0.1, "Current time later"); |
- assert_true(player.finished, "Finished state later"); |
- }); |
- }, "reverse() before start"); |
- |
-// Test reversing a player at the start causes the player to become bounded. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Reverse |
- player.reverse(); |
- assert_equals(player.currentTime, 0, "Current time after reversing"); |
- assert_true(player.finished, "Finished state after reversing"); |
- assert_equals(player.playbackRate, -1, "Playback rate after reversing"); |
- |
- // Check player after some time |
- at(0.2, function() { |
- assert_equals(player.currentTime, 0, "Current time later"); |
- assert_true(player.finished, "Finished state later"); |
- }); |
- }, "reverse() at start"); |
- |
-// Test reversing a player halfway through an animation. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Seek midway |
- player.currentTime = 1.5; |
- |
- // Reverse |
- player.reverse(); |
- assert_equals(player.currentTime, 1.5, "Current time after reversing"); |
- assert_false(player.finished, "Finished state after reversing"); |
- assert_equals(player.playbackRate, -1, "Playback rate after reversing"); |
- |
- // Check player after some time |
- at(0.2, function() { |
- assert_equals(player.currentTime, 1.3, "Current time when reversing"); |
- assert_false(player.finished, "Finished state later"); |
- }); |
- }, "reverse() while playing"); |
- |
-// Test reversing a player that has ended starts playing backwards. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Seek to just before the end |
- player.currentTime = 2.9; |
- |
- // Wait to finish |
- at(0.2, function() { |
- assert_equals(player.currentTime, 3.0, "Current time when finished"); |
- assert_true(player.finished, "Finished state after finished"); |
- |
- // Reverse |
- player.reverse(); |
- assert_equals(player.currentTime, 3.0, "Current time after reversing"); |
- assert_false(player.finished, "Finished state after reversing"); |
- assert_equals(player.playbackRate, -1, "Playback rate after reversing"); |
- |
- // Check we actually reverse |
- at(0.2, function() { |
- assert_equals(player.currentTime, 2.8, "Current time after beginning reverse"); |
- assert_false(player.finished, "Finished state after reversing"); |
- }); |
- }); |
- }, "reverse() when finished"); |
- |
-// Test reversing a player seeked past the end will snap back to the end. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Seek to past the end |
- player.currentTime = 4.0 |
- |
- player.reverse(); |
- assert_equals(player.currentTime, 3.0, "Current time after reversing"); |
- assert_false(player.finished, "Finished state after reversing"); |
- assert_equals(player.playbackRate, -1, "Playback rate after reversing"); |
- |
- // Check we actually reverse |
- at(0.2, function() { |
- assert_equals(player.currentTime, 2.8, "Current time after beginning reverse"); |
- assert_false(player.finished, "Finished state after reversing"); |
- }); |
- }, "reverse() when seeked past end"); |
- |
-// Test player current time after adjusting start time. |
-test(function() { |
- var player = createPlayer(3); |
- |
- player.startTime = 1; |
- |
- assert_equals(player.currentTime, -1, "currentTime while waiting to start"); |
- assert_false(player.finished, "Finished state while waiting to start"); |
- |
- // Then put it in range |
- player.startTime -= 2; |
- assert_equals(player.currentTime, 1, "currentTime after updating start time"); |
- assert_false(player.finished, "Finished state while after updating start time"); |
- }, "Adjust start time (1)"); |
- |
-// Test player current time after adjusting start time and playing. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- player.startTime = 1; |
- |
- assert_equals(player.currentTime, -1, "currentTime while waiting to start"); |
- assert_false(player.finished, "Finished state while waiting to start"); |
- |
- // Then adjust start time |
- player.startTime -= 0.75; |
- |
- // Check player is still waiting |
- assert_equals(player.currentTime, -0.25, "currentTime while waiting to start"); |
- assert_false(player.finished, "Finished state while still waiting to start"); |
- |
- // Verify the time *did* update though |
- at(0.5, function() { |
- assert_equals(player.currentTime, 0.25, "currentTime after starting to play"); |
- assert_false(player.finished, "Finished state after starting to play"); |
- }); |
- }, "Adjust start time (2)"); |
- |
-// Test player bounding by changing start time. |
-test(function() { |
- var player = createPlayer(3); |
- |
- // Put it past the end |
- player.startTime = -4; |
- assert_equals(player.currentTime, 3, "currentTime after end"); |
- assert_true(player.finished, "Finished state after end"); |
- }, "Adjust start time (3)"); |
- |
-// Test bounding and unbounding a player by modifying start time. |
-test(function() { |
- var player = createPlayer(3); |
- |
- // Put player in limited stage |
- player.startTime = -4; |
- |
- assert_equals(player.currentTime, 3, "currentTime state while limited"); |
- assert_true(player.finished, "Finished state while limited"); |
- |
- // Then put it in range |
- player.startTime += 2; |
- assert_equals(player.currentTime, 2, "currentTime after updating start time"); |
- assert_false(player.finished, "Finished state while after updating start time"); |
- }, "Adjust start time (4)"); |
- |
-// Test seeking past end of player. |
-timing_test(function() { |
- var player = createPlayer(3); |
- player.currentTime = 4; |
- assert_equals(player.currentTime, 4, "currentTime before waiting"); |
- at(0.2, function() { |
- assert_equals(player.currentTime, 4, "currentTime after waiting"); |
- }); |
- }, "Seeking past player content end and waiting"); |
- |
-// Test seeking before start of reversed player. |
-timing_test(function() { |
- var player = createPlayer(3); |
- player.playbackRate = -1; |
- player.currentTime = -1; |
- assert_equals(player.currentTime, -1, "currentTime before waiting"); |
- at(0.2, function() { |
- assert_equals(player.currentTime, -1, "currentTime after waiting"); |
- }); |
- }, "Seeking before reversed player content start and waiting"); |
- |
-// Test reversing the playback rate of a bounded player. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Set up player to start in 0.1s |
- player.startTime = 0.1; |
- |
- // Check state |
- assert_equals(player.currentTime, -0.1, "currentTime after while waiting to start"); |
- assert_false(player.finished, "Finished state while waiting to start"); |
- |
- // Reverse playbackRate |
- player.playbackRate = -1; |
- |
- // We should maintain the same current time |
- assert_equals(player.currentTime, -0.1, "currentTime after updating playbackRate"); |
- assert_true(player.finished, "Finished state after updating playbackRate"); |
- |
- // If we wait a while we should be stuck at the end |
- at(0.2, function() { |
- assert_equals(player.currentTime, -0.1, "currentTime after waiting"); |
- assert_true(player.finished, "Finished state after waiting"); |
- |
- // Call play and we should start from the end |
- player.play(); |
- assert_equals(player.currentTime, 3, "currentTime after play()"); |
- assert_false(player.finished, "Finished state after play()"); |
- }); |
- }, "Reversing playbackRate before start"); |
- |
-// Test normal current time progression of a player after being bounded and unbounded. |
-timing_test(function() { |
- // Set up player |
- var player = createPlayer(3); |
- |
- // Seek to bounded time |
- player.currentTime = 4; |
- |
- // Check state |
- assert_equals(player.currentTime, 4, "currentTime while bounded"); |
- assert_true(player.finished, "Finished state while bounded"); |
- |
- // Seek to unbounded time |
- player.currentTime = 2; |
- assert_equals(player.currentTime, 2, "currentTime while unbounded"); |
- assert_false(player.finished, "Finished state while unbounded"); |
- |
- // Check it actually is playing |
- at(0.2, function() { |
- assert_equals(player.currentTime, 2.2, "Current time after playing unbounded"); |
- }); |
- }, "Seeking from end to playing"); |
- |
-// Test finishing and replaying a player in reverse. |
-timing_test(function() { |
- // Set up player |
- var player = createPlayer(3); |
- |
- // Seek to middle of interval and reverse |
- player.currentTime = 2; |
- player.reverse(); |
- |
- // Check state |
- assert_equals(player.currentTime, 2, "currentTime after reversing"); |
- assert_false(player.finished, "Finished state after reversing"); |
- assert_equals(player.playbackRate, -1, "Playback rate after reversing"); |
- player.finish(); |
- assert_equals(player.currentTime, 0, "currentTime after finishing"); |
- assert_true(player.finished, "Finished state after finishing"); |
- |
- // Then play again |
- player.play(); |
- assert_equals(player.currentTime, 3, "currentTime after playing again"); |
- assert_false(player.finished, "Finished state after playing again"); |
- |
- // Check if actually progresses |
- at(0.2, function() { |
- assert_equals(player.currentTime, 2.8, "Current time after playing for a while"); |
- }); |
- }, "play() on a finished reversed player"); |
- |
-// Test player.play() seeking to start when behind the source content. |
-timing_test(function() { |
- // Set up player to start in 2s |
- var player = createPlayer(3); |
- player.startTime = 2; |
- |
- // Check it is waiting to start |
- assert_equals(player.currentTime, -2, "currentTime while waiting"); |
- assert_false(player.finished, "Finished state while waiting"); |
- |
- // Call play() |
- player.play(); |
- assert_equals(player.currentTime, 0, "currentTime after calling play()"); |
- assert_false(player.finished, "Finished state after calling play()"); |
- |
- // Check it really is playing |
- at(0.5, function() { |
- assert_equals(player.currentTime, 0.5, "Current time after playing for a while"); |
- }); |
- }, "play() on player waiting to start kick-starts it"); |
- |
-// Test seeking a player to the start of its animation. |
-timing_test(function() { |
- // Set up player to start in 2s |
- var player = createPlayer(3); |
- player.startTime = 2; |
- |
- // Check it is waiting to start |
- assert_equals(player.currentTime, -2, "currentTime while waiting"); |
- assert_false(player.finished, "Finished state while waiting"); |
- |
- // Set currentTime = 0 |
- player.currentTime = 0; |
- assert_equals(player.currentTime, 0, "currentTime after setting currentTime = 0"); |
- assert_false(player.finished, "Finished state after setting currentTime = 0"); |
- |
- // Check it is playing |
- at(0.5, function() { |
- assert_equals(player.currentTime, 0.5, "currentTime after waiting a while"); |
- assert_false(player.finished, "Finished state after waiting a while"); |
- }); |
- }, "currentTime = 0 on player waiting to start is ok"); |
- |
-// Test player becoming unbounded after source content is extended. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- player.currentTime = 4; |
- assert_equals(player.currentTime, 4, "currentTime after setting currentTime = 4"); |
- assert_true(player.finished, "Finished state after setting currentTime = 4"); |
- |
- // Check it is NOT playing |
- at(0.2, function() { |
- assert_equals(player.currentTime, 4, "currentTime after waiting a while"); |
- |
- // Extend source |
- player.source.timing.duration = 5; |
- assert_equals(player.currentTime, 4, "currentTime after extending source"); |
- assert_false(player.finished, "Finished state after extending source"); |
- |
- // Check it IS playing |
- at(0.2, function() { |
- assert_equals(player.currentTime, 4.2, "currentTime after waiting a while again"); |
- }); |
- }); |
- }, "Extending source unblocks player (seek past end)"); |
- |
-// Test player ending normally and becoming unbounded after source content is extended. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Set currentTime to just before the end |
- player.currentTime = 2.9; |
- assert_false(player.finished, "Finished state just before ending"); |
- |
- // Play to end |
- at(0.2, function() { |
- assert_equals(player.currentTime, 3, "currentTime after ending normally"); |
- assert_true(player.finished, "Finished state after ending normally"); |
- |
- // Extend source |
- player.source.timing.duration = 5; |
- assert_equals(player.currentTime, 3.0, "currentTime after extending source"); |
- assert_false(player.finished, "Finished state after extending source"); |
- |
- // Check it is playing |
- at(0.2, function() { |
- assert_equals(player.currentTime, 3.2, "currentTime after waiting a while again"); |
- }); |
- }); |
- }, "Extending source unblocks player (end normally)"); |
- |
-// Test player becomes bounded after source content is shortened. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Set currentTime to just before the end |
- player.currentTime = 2; |
- assert_equals(player.currentTime, 2.0, "currentTime before shortening"); |
- assert_false(player.finished, "Finished state before shortening"); |
- |
- // Shorten source |
- player.source.timing.duration = 1; |
- assert_equals(player.currentTime, 2.0, "currentTime after shortening"); |
- assert_true(player.finished, "Finished state after shortening"); |
- |
- // Check it is not playing |
- at(0.2, function() { |
- assert_equals(player.currentTime, 2.0, "currentTime after shortening"); |
- }); |
- }, "Shortening source blocks player"); |
- |
-// Test playing player becomes bounded after source content is shortened. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Set currentTime to midway |
- player.currentTime = 1.5; |
- assert_equals(player.currentTime, 1.5, "currentTime before shortening"); |
- assert_false(player.finished, "Finished state after seeking"); |
- |
- // Let it play for a while |
- at(0.2, function() { |
- assert_equals(player.currentTime, 1.7, "currentTime before shortening"); |
- assert_false(player.finished, "Finished state before shortening"); |
- |
- // Shorten source |
- player.source.timing.duration = 1; |
- assert_equals(player.currentTime, 1.7, "currentTime after shortening"); |
- assert_true(player.finished, "Finished state after shortening"); |
- }); |
- }, "Shortening source blocks player when playing"); |
- |
-// Test reversed player does not become bounded after its source content is shortened. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Set currentTime to just before the end |
- player.currentTime = 2; |
- player.reverse(); |
- assert_equals(player.currentTime, 2.0, "currentTime before shortening"); |
- assert_false(player.finished, "Finished state before shortening"); |
- |
- // Shorten source |
- player.source.timing.duration = 1; |
- assert_equals(player.currentTime, 2.0, "currentTime after shortening"); |
- assert_false(player.finished, "Finished state after shortening"); |
- |
- // Check it is playing |
- at(0.2, function() { |
- assert_equals(player.currentTime, 1.8, "currentTime after shortening"); |
- }); |
- }, "Shortening source does not block in reverse"); |
- |
-// Test player becoming unbounded after duration 0 source content is extended. |
-timing_test(function() { |
- // Add empty animation |
- var player = createPlayer(0); |
- |
- // Check we don't progress |
- assert_equals(player.currentTime, 0, "currentTime before adding content"); |
- assert_true(player.finished, "Finished state before adding content"); |
- |
- // Wait and check we don't progress |
- at(0.2, function() { |
- assert_equals(player.currentTime, 0, "currentTime after waiting"); |
- assert_true(player.finished, "Finished state after waiting"); |
- |
- // "Add" content |
- player.source.timing.duration = 3; |
- |
- // We should pick up from 0, not jump 0.2s in |
- assert_equals(player.currentTime, 0, "currentTime after extending"); |
- assert_false(player.finished, "Finished state after extending"); |
- |
- // Wait and check |
- at(0.2, function() { |
- assert_equals(player.currentTime, 0.2, "currentTime after extending and waiting"); |
- }); |
- }); |
- }, "Async add content"); |
- |
-// Test negative player playback rate with negative current time. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Set a negative time and let it play for a while |
- player.currentTime = -1; |
- at(0.2, function() { |
- assert_equals(player.currentTime, -0.8, "currentTime after waiting"); |
- assert_false(player.finished, "Finished state after waiting"); |
- |
- // Reverse |
- player.playbackRate = -1; |
- assert_equals(player.currentTime, -0.8, "currentTime after reversing"); |
- assert_true(player.finished, "Finished state after reversing"); |
- }); |
- }, "Setting negative playback rate in negative space"); |
- |
-// Test reversed player becoming bounded when start of animation is reached. |
-timing_test(function() { |
- var player = createPlayer(3); |
- |
- // Seek to just before end |
- player.reverse(); |
- player.currentTime = 0.1; |
- |
- // Check state of player |
- assert_equals(player.currentTime, 0.1, "Current time just before end"); |
- assert_false(player.paused, "Paused state just before end"); |
- assert_false(player.finished, "Finished state just before end"); |
- |
- // Check player after finishing |
- at(0.2, function() { |
- assert_equals(player.currentTime, 0, "Current time when limited"); |
- assert_false(player.paused, "Paused state after ending"); |
- assert_true(player.finished, "Finished state after ending"); |
- }); |
-}, "Limiting at start"); |
- |
-// Test the floating point accuracy of seeking a player. |
-test(function() { |
- var player = createPlayer(3); |
- // Setting a high playbackRate has caused the reported currentTime to differ |
- // from what was set in previous implementations of AnimationPlayer. |
- player.playbackRate = 123456; |
- player.currentTime = 1.618; |
- assert_equals(player.currentTime, 1.618, "currentTime after seeking to fractional time"); |
- }, "currentTime preserves floating point accuracy after seeking"); |
-</script> |