diff options
Diffstat (limited to 'testing/web-platform/tests/web-animations/timing-model/timelines/document-timelines.html')
-rw-r--r-- | testing/web-platform/tests/web-animations/timing-model/timelines/document-timelines.html | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/testing/web-platform/tests/web-animations/timing-model/timelines/document-timelines.html b/testing/web-platform/tests/web-animations/timing-model/timelines/document-timelines.html new file mode 100644 index 0000000000..c71d73331c --- /dev/null +++ b/testing/web-platform/tests/web-animations/timing-model/timelines/document-timelines.html @@ -0,0 +1,50 @@ +<!doctype html> +<meta charset=utf-8> +<title>Document timelines</title> +<link rel="help" href="https://drafts.csswg.org/web-animations/#document-timelines"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../testcommon.js"></script> +<div id="log"></div> +<script> +'use strict'; + +async_test(t => { + assert_greater_than_equal(document.timeline.currentTime, 0, + 'The current time is initially is positive or zero'); + + // document.timeline.currentTime should be set even before document + // load fires. We expect this code to be run before document load and hence + // the above assertion is sufficient. + // If the following assertion fails, this test needs to be redesigned. + assert_not_equals(document.readyState, 'complete', + 'Test is running prior to document load'); + + // Test that the document timeline's current time is measured from + // navigationStart. + // + // We can't just compare document.timeline.currentTime to + // window.performance.now() because currentTime is only updated on a sample + // so we use requestAnimationFrame instead. + window.requestAnimationFrame(rafTime => { + t.step(() => { + assert_equals(document.timeline.currentTime, rafTime, + 'The current time matches requestAnimationFrame time'); + }); + t.done(); + }); +}, 'Document timelines report current time relative to navigationStart'); + +async_test(t => { + window.requestAnimationFrame(rafTime => { + t.step(() => { + const iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + assert_greater_than_equal(iframe.contentDocument.timeline.currentTime, 0, + 'The current time of a new iframe is initially is positive or zero'); + }); + t.done(); + }); +}, 'Child frames do not report negative initial times'); + +</script> |