undefined reference to 'JSC::B3::BasicBlock::fallThrough() const
[WebKit-https.git] / LayoutTests / http / wpt / web-animations / interfaces / AnimationTimeline / document-timeline.html
1 <!doctype html>
2 <meta charset=utf-8>
3 <title>Default document timeline tests</title>
4 <link rel="help" href="https://w3c.github.io/web-animations/#the-documents-default-timeline">
5 <script src="/resources/testharness.js"></script>
6 <script src="/resources/testharnessreport.js"></script>
7 <script src="../../testcommon.js"></script>
8 <div id="log"></div>
9 <iframe width="10" height="10" id="iframe"></iframe>
10 <script>
11 'use strict';
12
13 test(function() {
14   assert_equals(document.timeline, document.timeline,
15     'document.timeline returns the same object every time');
16   var iframe = document.getElementById('iframe');
17   assert_not_equals(document.timeline, iframe.contentDocument.timeline,
18     'document.timeline returns a different object for each document');
19   assert_not_equals(iframe.contentDocument.timeline, null,
20     'document.timeline on an iframe is not null');
21 }, 'document.timeline identity tests');
22
23 async_test(function(t) {
24   assert_true(document.timeline.currentTime > 0,
25     'document.timeline.currentTime is positive');
26   // document.timeline.currentTime should be set even before document
27   // load fires. We expect this code to be run before document load and hence
28   // the above assertion is sufficient.
29   // If the following assertion fails, this test needs to be redesigned.
30   assert_true(document.readyState !== 'complete',
31     'Test is running prior to document load');
32
33   // Test that the document timeline's current time is measured from
34   // navigationStart.
35   //
36   // We can't just compare document.timeline.currentTime to
37   // window.performance.now() because currentTime is only updated on a sample
38   // so we use requestAnimationFrame instead.
39   window.requestAnimationFrame(function(rafTime) {
40     t.step(function() {
41       assert_equals(document.timeline.currentTime, rafTime,
42                     'document.timeline.currentTime matches' +
43                     ' requestAnimationFrame time');
44     });
45     t.done();
46   });
47 }, 'document.timeline.currentTime value tests');
48
49 promise_test(function(t) {
50   var valueAtStart = document.timeline.currentTime;
51   var timeAtStart = window.performance.now();
52   while (window.performance.now() - timeAtStart < 50) {
53     // Wait 50ms
54   }
55   assert_equals(document.timeline.currentTime, valueAtStart,
56     'document.timeline.currentTime does not change within a script block');
57   return waitForAnimationFrames(1).then(function() {
58     assert_greater_than(document.timeline.currentTime, valueAtStart,
59       'document.timeline.currentTime increases between script blocks');
60   });
61 }, 'document.timeline.currentTime liveness tests');
62
63 async_test(function(t) {
64   const iframe = document.createElement('iframe');
65   iframe.width = 10;
66   iframe.height = 10;
67
68   iframe.addEventListener('load', t.step_func(() => {
69     const iframeTimeline = iframe.contentDocument.timeline;
70     const valueAtStart   = iframeTimeline.currentTime;
71     const timeAtStart    = window.performance.now();
72     while (iframe.contentWindow.performance.now() - timeAtStart < 50) {
73       // Wait 50ms
74     }
75     assert_equals(iframeTimeline.currentTime, valueAtStart,
76       'iframe document.timeline.currentTime does not change within a '
77       + ' script block');
78
79     iframe.contentWindow.requestAnimationFrame(t.step_func_done(() => {
80       assert_greater_than(iframeTimeline.currentTime, valueAtStart,
81         'iframe document.timeline.currentTime increases between script blocks');
82       iframe.remove();
83     }));
84   }));
85
86   document.body.appendChild(iframe);
87 }, 'iframe document.timeline.currentTime liveness tests');
88
89 async_test(function(t) {
90   var startTime = document.timeline.currentTime;
91   var firstRafTime;
92
93   requestAnimationFrame(function() {
94     t.step(function() {
95       assert_greater_than_equal(document.timeline.currentTime, startTime,
96                                 'currentTime should have progressed');
97       firstRafTime = document.timeline.currentTime;
98     });
99   });
100
101   requestAnimationFrame(function() {
102     t.step(function() {
103       assert_equals(document.timeline.currentTime, firstRafTime,
104                     'currentTime should be the same');
105     });
106     t.done();
107   });
108 }, 'document.timeline.currentTime time should be the same for all RAF'
109    + ' callbacks in a frame');
110
111 </script>