| <!doctype html> |
| <title>load() fires abort/emptied events when networkState is not NETWORK_EMPTY</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/media.js"></script> |
| <div id=log></div> |
| <script> |
| function load_test(t, v) { |
| assert_not_equals(v.networkState, v.NETWORK_EMPTY); |
| |
| var expected_events = []; |
| if (v.networkState == v.NETWORK_LOADING || v.networkState == v.NETWORK_IDLE) { |
| expected_events.push('abort'); |
| } |
| if (v.networkState != v.NETWORK_EMPTY) { |
| expected_events.push('emptied'); |
| } |
| |
| var actual_events = []; |
| v.onabort = v.onemptied = t.step_func(function(e) { |
| actual_events.push(e.type); |
| }); |
| |
| v.onloadstart = t.step_func(function() { |
| assert_array_equals(actual_events, expected_events); |
| t.done(); |
| }); |
| |
| v.load(); |
| |
| assert_array_equals(actual_events, [], 'events should be fired in queued tasks'); |
| } |
| |
| async_test(function(t) { |
| var v = document.createElement('video'); |
| // suspend is fired optionally "if the user agent intends to not attempt to |
| // fetch the resource" or "once the entire media resource has been fetched" |
| v.preload = 'none'; |
| v.src = getAudioURI('/media/sound_5'); |
| v.onsuspend = t.step_func(function() { |
| v.onsuspend = null; |
| assert_equals(v.networkState, v.NETWORK_IDLE); |
| load_test(t, v); |
| }); |
| }, 'NETWORK_IDLE'); |
| |
| async_test(function(t) { |
| var v = document.createElement('video'); |
| v.src = 'resources/delayed-broken-video.py'; |
| v.onloadstart = t.step_func(function() { |
| v.onloadstart = null; |
| assert_equals(v.networkState, v.NETWORK_LOADING); |
| load_test(t, v); |
| }); |
| }, 'NETWORK_LOADING'); |
| |
| async_test(function(t) { |
| var v = document.createElement('video'); |
| v.src = 'data:,'; |
| v.onerror = t.step_func(function() { |
| v.onerror = null; |
| assert_equals(v.networkState, v.NETWORK_NO_SOURCE); |
| load_test(t, v); |
| }); |
| assert_equals(v.networkState, v.NETWORK_NO_SOURCE); |
| }, 'NETWORK_NO_SOURCE'); |
| </script> |