| <!DOCTYPE html> |
| <title>Test that the document's load event is delayed until a video's meta data is available.</title> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <video id="video1"></video> |
| <video id="video2"></video> |
| <video id="video3"><source></source></video> |
| <script> |
| async_test(function(t) { |
| assertVideoNoSrcNoLoad(document.getElementById("video1")); |
| |
| var video = document.getElementById("video2"); |
| video.src = "content/test.ogv"; |
| assertVideoSrcNoLoad(video); |
| |
| var source = document.querySelector("source"); |
| source.src = "content/test.ogv"; |
| assertVideoSrcNoLoad(document.getElementById("video3")); |
| |
| window.onload = t.step_func_done(function() { |
| assertVideoNoSrcNoLoad(document.getElementById("video1")); |
| assertVideoSrcLoad(document.getElementById("video2")); |
| assertVideoSrcLoad(document.getElementById("video3")); |
| }); |
| |
| function assertVideoNoSrcNoLoad(video) { |
| // Video should not load as there is no "src". |
| assert_equals(video.networkState, HTMLMediaElement.NETWORK_EMPTY); |
| assert_equals(video.readyState, HTMLMediaElement.HAVE_NOTHING); |
| } |
| |
| function assertVideoSrcNoLoad(video) { |
| // Video loading has just triggered. |
| assert_equals(video.networkState, HTMLMediaElement.NETWORK_NO_SOURCE); |
| assert_equals(video.readyState, HTMLMediaElement.HAVE_NOTHING); |
| } |
| |
| function assertVideoSrcLoad(video) { |
| // The Video should have loaded at least to HAVE_CURRENT_DATA |
| assert_not_equals(video.networkState, HTMLMediaElement.NETWORK_NO_SOURCE); |
| assert_greater_than_equal(video.networkState, HTMLMediaElement.NETWORK_IDLE); |
| assert_greater_than_equal(video.readyState, HTMLMediaElement.HAVE_CURRENT_DATA); |
| } |
| }); |
| </script> |