Update WPT tests for embedded content
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / html / semantics / embedded-content / media-elements / loading-the-media-resource / load-events-networkState.html
1 <!doctype html>
2 <title>load() fires abort/emptied events when networkState is not NETWORK_EMPTY</title>
3 <script src="/resources/testharness.js"></script>
4 <script src="/resources/testharnessreport.js"></script>
5 <script src="/common/media.js"></script>
6 <div id=log></div>
7 <script>
8 function load_test(t, v) {
9   assert_not_equals(v.networkState, v.NETWORK_EMPTY);
10
11   var expected_events = [];
12   if (v.networkState == v.NETWORK_LOADING || v.networkState == v.NETWORK_IDLE) {
13     expected_events.push('abort');
14   }
15   if (v.networkState != v.NETWORK_EMPTY) {
16     expected_events.push('emptied');
17   }
18
19   var actual_events = [];
20   v.onabort = v.onemptied = t.step_func(function(e) {
21     actual_events.push(e.type);
22   });
23
24   v.onloadstart = t.step_func(function() {
25     assert_array_equals(actual_events, expected_events);
26     t.done();
27   });
28
29   v.load();
30
31   assert_array_equals(actual_events, [], 'events should be fired in queued tasks');
32 }
33
34 async_test(function(t) {
35   var v = document.createElement('video');
36   // suspend is fired optionally "if the user agent intends to not attempt to
37   // fetch the resource" or "once the entire media resource has been fetched"
38   v.preload = 'none';
39   v.src = getAudioURI('/media/sound_5');
40   v.onerror = t.unreached_func();
41   v.onsuspend = t.step_func(function() {
42     v.onsuspend = null;
43     assert_equals(v.networkState, v.NETWORK_IDLE);
44     load_test(t, v);
45   });
46 }, 'NETWORK_IDLE');
47
48 async_test(function(t) {
49   var v = document.createElement('video');
50   v.src = 'resources/delayed-broken-video.py';
51   v.onerror = t.unreached_func();
52   v.onloadstart = t.step_func(function() {
53     v.onloadstart = null;
54     assert_equals(v.networkState, v.NETWORK_LOADING);
55     load_test(t, v);
56   });
57 }, 'NETWORK_LOADING');
58
59 async_test(function(t) {
60   var v = document.createElement('video');
61   v.src = 'data:,';
62   v.onerror = t.step_func(function() {
63     v.onerror = null;
64     assert_equals(v.networkState, v.NETWORK_NO_SOURCE);
65     load_test(t, v);
66   });
67   assert_equals(v.networkState, v.NETWORK_NO_SOURCE);
68 }, 'NETWORK_NO_SOURCE');
69 </script>