blob: 79d522f2f9a9ecdfe7d35d0c955719ffcf0e3f24 [file] [log] [blame]
Aaron Colwellc6841a02014-03-07 01:37:561<!DOCTYPE html>
Matt Wolenetz74803c62016-08-19 01:46:402<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
Aaron Colwellc6841a02014-03-07 01:37:563<html>
4 <head>
Aaron Colwellaa3c90b2014-08-04 17:58:375 <title>MediaSource.readyState equals "closed" test cases.</title>
Aaron Colwell06f8ec22014-03-07 18:09:476 <script src="/resources/testharness.js"></script>
7 <script src="/resources/testharnessreport.js"></script>
Aaron Colwellc6841a02014-03-07 01:37:568 <script src="mediasource-util.js"></script>
Aaron Colwellc6841a02014-03-07 01:37:569 </head>
10 <body>
11 <div id="log"></div>
12 <script>
13 test(function ()
14 {
15 var mediaSource = new MediaSource();
16 assert_equals(mediaSource.sourceBuffers.length, 0, "sourceBuffers is empty");
17 assert_equals(mediaSource.activeSourceBuffers.length, 0, "activeSourceBuffers is empty");
18 assert_equals(mediaSource.readyState, "closed", "readyState is 'closed'");
Aaron Colwell15c427c2014-09-19 21:00:2219 assert_true(isNaN(mediaSource.duration), "duration is NaN");
Aaron Colwellc6841a02014-03-07 01:37:5620 }, "Test attribute values on a closed MediaSource object.");
21
22 test(function ()
23 {
24 var mediaSource = new MediaSource();
Stephen McGruer3696f222020-01-23 19:11:5825 assert_throws_dom("InvalidStateError",
Aaron Colwellc6841a02014-03-07 01:37:5626 function() { mediaSource.addSourceBuffer(MediaSourceUtil.VIDEO_ONLY_TYPE); },
27 "addSourceBuffer() throws an exception when closed.");
28 }, "Test addSourceBuffer() while closed.");
29
30 mediasource_test(function(test, mediaElement, mediaSource)
31 {
32 var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
33
34 // Setup a handler to run when the MediaSource closes.
35 mediaSource.addEventListener('sourceclose', test.step_func(function (event)
36 {
37 assert_equals(mediaSource.sourceBuffers.length, 0, "sourceBuffers is empty");
38 assert_equals(mediaSource.activeSourceBuffers.length, 0, "activeSourceBuffers is empty");
39 assert_equals(mediaSource.readyState, "closed", "readyState is 'closed'");
Stephen McGruer3696f222020-01-23 19:11:5840 assert_throws_dom("NotFoundError",
Aaron Colwellc6841a02014-03-07 01:37:5641 function() { mediaSource.removeSourceBuffer(sourceBuffer); },
42 "removeSourceBuffer() throws an exception when closed.");
43 test.done();
44 }));
45
46 // Trigger the MediaSource to close.
47 mediaElement.src = "";
48 }, "Test removeSourceBuffer() while closed.");
49
50 test(function ()
51 {
52 var mediaSource = new MediaSource();
Stephen McGruer3696f222020-01-23 19:11:5853 assert_throws_dom("InvalidStateError",
Aaron Colwellc6841a02014-03-07 01:37:5654 function() { mediaSource.endOfStream(); },
55 "endOfStream() throws an exception when closed.");
56 }, "Test endOfStream() while closed.");
57
Aaron Colwellab0ee7b2014-09-09 21:10:3958 test(function ()
59 {
60 var mediaSource = new MediaSource();
Stephen McGruer3696f222020-01-23 19:11:5861 assert_throws_dom("InvalidStateError",
Aaron Colwellab0ee7b2014-09-09 21:10:3962 function() { mediaSource.endOfStream("decode"); },
63 "endOfStream(decode) throws an exception when closed.");
64 }, "Test endOfStream(decode) while closed.");
65
66 test(function ()
67 {
68 var mediaSource = new MediaSource();
Stephen McGruer3696f222020-01-23 19:11:5869 assert_throws_dom("InvalidStateError",
Aaron Colwellab0ee7b2014-09-09 21:10:3970 function() { mediaSource.endOfStream("network"); },
71 "endOfStream(network) throws an exception when closed.");
72 }, "Test endOfStream(network) while closed.");
Aaron Colwellc6841a02014-03-07 01:37:5673
74 test(function ()
75 {
76 var mediaSource = new MediaSource();
Stephen McGruer3696f222020-01-23 19:11:5877 assert_throws_dom("InvalidStateError",
Aaron Colwellc6841a02014-03-07 01:37:5678 function() { mediaSource.duration = 10; },
79 "Setting duration throws an exception when closed.");
80 }, "Test setting duration while closed.");
81
Aaron Colwellab0ee7b2014-09-09 21:10:3982 mediasource_test(function(test, mediaElement, mediaSource)
83 {
84 var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
85
86 assert_equals(mediaSource.readyState, "open", "readyState is 'open'");
87 // Setup a handler to run when the MediaSource closes.
88 mediaSource.addEventListener("sourceclose", test.step_func(function (event)
89 {
90 assert_equals(mediaSource.readyState, "closed", "readyState is 'closed'");
Stephen McGruer3696f222020-01-23 19:11:5891 assert_throws_dom("InvalidStateError",
Aaron Colwellab0ee7b2014-09-09 21:10:3992 function() { mediaSource.duration = 10; },
93 "Setting duration when closed throws an exception");
94 test.done();
95 }));
96
97 // Trigger the MediaSource to close.
98 mediaElement.src = "";
99 }, "Test setting duration while open->closed.");
100
101 mediasource_test(function(test, mediaElement, mediaSource)
102 {
103 var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
104
105 assert_equals(mediaSource.readyState, "open", "readyState is 'open'");
106 // Setup a handler to run when the MediaSource closes.
107 mediaSource.addEventListener("sourceclose", test.step_func(function (event)
108 {
109 assert_equals(mediaSource.readyState, "closed", "readyState is 'closed'");
Aaron Colwell15c427c2014-09-19 21:00:22110 assert_true(isNaN(mediaSource.duration), "duration is NaN");
Aaron Colwellab0ee7b2014-09-09 21:10:39111 test.done();
112 }));
113
114 // Trigger the MediaSource to close.
115 mediaElement.src = "";
116 }, "Test getting duration while open->closed.");
117
118 mediasource_test(function(test, mediaElement, mediaSource)
119 {
120 var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
121
122 assert_equals(mediaSource.readyState, "open", "readyState is open");
123
124 // Setup a handler to run when the MediaSource closes.
125 mediaSource.addEventListener("sourceclose", test.step_func(function (event)
126 {
127 assert_equals(mediaSource.readyState, "closed", "readyState is closed");
Stephen McGruer3696f222020-01-23 19:11:58128 assert_throws_dom("InvalidStateError",
Aaron Colwellab0ee7b2014-09-09 21:10:39129 function() { sourceBuffer.abort(); },
130 "sourceBuffer.abort() throws INVALID_STATE_ERROR");
131 test.done();
132 }));
133
134 // Trigger the MediaSource to close.
135 mediaElement.src = "";
136 }, "Test sourcebuffer.abort when closed.");
137
Aaron Colwellc6841a02014-03-07 01:37:56138 </script>
139 </body>
140</html>