e272393034894594152975455dada52ad5785faa
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / web-animations / interfaces / Animation / ready.html
1 <!DOCTYPE html><!-- webkit-test-runner [ enableCSSAnimationsAndCSSTransitionsBackedByWebAnimations=true ] -->
2 <meta charset=utf-8>
3 <title>Animation.ready</title>
4 <link rel="help" href="https://drafts.csswg.org/web-animations/#dom-animation-ready">
5 <script src="/resources/testharness.js"></script>
6 <script src="/resources/testharnessreport.js"></script>
7 <script src="../../testcommon.js"></script>
8 <body>
9 <div id="log"></div>
10 <script>
11 'use strict';
12
13 promise_test(t => {
14   const div = createDiv(t);
15   const animation = div.animate(null, 100 * MS_PER_SEC);
16   const originalReadyPromise = animation.ready;
17   let pauseReadyPromise;
18
19   return animation.ready.then(() => {
20     assert_equals(animation.ready, originalReadyPromise,
21                   'Ready promise is the same object when playing completes');
22     animation.pause();
23     assert_not_equals(animation.ready, originalReadyPromise,
24                       'A new ready promise is created when pausing');
25     pauseReadyPromise = animation.ready;
26     // Wait for the promise to fulfill since if we abort the pause the ready
27     // promise object is reused.
28     return animation.ready;
29   }).then(() => {
30     animation.play();
31     assert_not_equals(animation.ready, pauseReadyPromise,
32                       'A new ready promise is created when playing');
33   });
34 }, 'A new ready promise is created when play()/pause() is called');
35
36 promise_test(t => {
37   const div = createDiv(t);
38   const animation = div.animate(null, 100 * MS_PER_SEC);
39
40   return animation.ready.then(() => {
41     const promiseBeforeCallingPlay = animation.ready;
42     animation.play();
43     assert_equals(animation.ready, promiseBeforeCallingPlay,
44                   'Ready promise has same object identity after redundant call'
45                   + ' to play()');
46   });
47 }, 'Redundant calls to play() do not generate new ready promise objects');
48
49 promise_test(t => {
50   const div = createDiv(t);
51   const animation = div.animate(null, 100 * MS_PER_SEC);
52
53   return animation.ready.then(resolvedAnimation => {
54     assert_equals(resolvedAnimation, animation,
55                   'Object identity of Animation passed to Promise callback'
56                   + ' matches the Animation object owning the Promise');
57   });
58 }, 'The ready promise is fulfilled with its Animation');
59
60 </script>
61 </body>