diff options
Diffstat (limited to 'testing/web-platform/tests/web-animations/interfaces/AnimationTimeline')
2 files changed, 95 insertions, 0 deletions
diff --git a/testing/web-platform/tests/web-animations/interfaces/AnimationTimeline/document-timeline.html b/testing/web-platform/tests/web-animations/interfaces/AnimationTimeline/document-timeline.html new file mode 100644 index 000000000..0f782f50a --- /dev/null +++ b/testing/web-platform/tests/web-animations/interfaces/AnimationTimeline/document-timeline.html @@ -0,0 +1,59 @@ +<!doctype html> +<meta charset=utf-8> +<title>Default document timeline tests</title> +<link rel="help" href="https://w3c.github.io/web-animations/#the-documents-default-timeline"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<iframe width="10" height="10" id="iframe"></iframe> +<script> +'use strict'; + +test(function() { + assert_equals(document.timeline, document.timeline, + 'document.timeline returns the same object every time'); + var iframe = document.getElementById('iframe'); + assert_not_equals(document.timeline, iframe.contentDocument.timeline, + 'document.timeline returns a different object for each document'); + assert_not_equals(iframe.contentDocument.timeline, null, + 'document.timeline on an iframe is not null'); +}, 'document.timeline identity tests'); + +promise_test(function(t) { + assert_true(document.timeline.currentTime > 0, + 'document.timeline.currentTime is positive'); + // 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_true(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. + return window.requestAnimationFrame(t.step_func(function(rafTime) { + assert_equals(document.timeline.currentTime, rafTime, + 'document.timeline.currentTime matches' + + ' requestAnimationFrame time'); + })); +}, 'document.timeline.currentTime value tests'); + +promise_test(function(t) { + var valueAtStart = document.timeline.currentTime; + var timeAtStart = window.performance.now(); + while (window.performance.now() - timeAtStart < 100) { + // Wait 100ms + } + assert_equals(document.timeline.currentTime, valueAtStart, + 'document.timeline.currentTime does not change within a script block'); + return window.requestAnimationFrame(t.step_func(function() { + assert_true(document.timeline.currentTime > valueAtStart, + 'document.timeline.currentTime increases between script blocks'); + })); +}, 'document.timeline.currentTime liveness tests'); + +</script> diff --git a/testing/web-platform/tests/web-animations/interfaces/AnimationTimeline/idlharness.html b/testing/web-platform/tests/web-animations/interfaces/AnimationTimeline/idlharness.html new file mode 100644 index 000000000..29c891407 --- /dev/null +++ b/testing/web-platform/tests/web-animations/interfaces/AnimationTimeline/idlharness.html @@ -0,0 +1,36 @@ +<!doctype html> +<meta charset=utf-8> +<title>Web Animations API: DocumentTimeline tests</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<div id="log"></div> +<script type="text/plain" id="AnimationTimeline-IDL"> +interface AnimationTimeline { + readonly attribute double? currentTime; +}; +</script> +<script type="text/plain" id="DocumentTimeline-IDL"> +dictionary DocumentTimelineOptions { + DOMHighResTimeStamp originTime = 0; +}; +[Constructor (optional DocumentTimelineOptions options)] +interface DocumentTimeline : AnimationTimeline { +}; +</script> +<script> +'use strict'; + +var idlArray; +test(function() { + idlArray = new IdlArray(); + idlArray.add_untested_idls( + document.getElementById('AnimationTimeline-IDL').textContent); + idlArray.add_idls( + document.getElementById('DocumentTimeline-IDL').textContent); + idlArray.add_objects( { DocumentTimeline: ['document.timeline'] } ); +}); +idlArray.test(); + +</script> |