| <!DOCTYPE html> |
| <title>Test that the resource selection algorithm is restarted when load() is called, and that all "source" elements are reconsidered.</title> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="media-file.js"></script> |
| <video></video> |
| <script> |
| async_test(function(t) { |
| var sourceUrls = []; |
| var errorCount = 0; |
| var video = document.querySelector("video"); |
| |
| // Test initial networkState. |
| assert_equals(video.networkState, HTMLMediaElement.NETWORK_EMPTY); |
| |
| video.oncanplaythrough = t.step_func(function() { |
| var url = video.currentSrc; |
| assert_equals(url.substr(url.lastIndexOf("/media/") + 7), |
| sourceUrls[1].substr(sourceUrls[1].lastIndexOf("/media/") + 7)); |
| switch (errorCount) { |
| case 1: |
| // Calling load() to invoke resource selection again. |
| video.load(); |
| break; |
| case 2: |
| t.done(); |
| } |
| }); |
| |
| video.addEventListener("error", function() { |
| errorCount++; |
| }, true); |
| |
| // Add an invalid url to the first source so we test getting |
| // an error event each time resource selection runs. |
| addSource("content/bogus.ogv"); |
| addSource("content/test.ogv"); |
| addSource("content/test.oga"); |
| |
| // test networkState. |
| assert_equals(video.networkState, HTMLMediaElement.NETWORK_NO_SOURCE); |
| |
| function addSource(filePath) { |
| var source = document.createElement("source"); |
| source.src = filePath; |
| sourceUrls.push(source.src); |
| source.type = mimeTypeForExtension(source.src.split(".").pop()); |
| video.appendChild(source); |
| } |
| }); |
| </script> |