mediasource-closed.html (6478B)
1 <!DOCTYPE html> 2 <!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> 3 <html> 4 <head> 5 <title>MediaSource.readyState equals "closed" test cases.</title> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="mediasource-util.js"></script> 9 </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'"); 19 assert_true(isNaN(mediaSource.duration), "duration is NaN"); 20 }, "Test attribute values on a closed MediaSource object."); 21 22 test(function () 23 { 24 var mediaSource = new MediaSource(); 25 assert_throws_dom("InvalidStateError", 26 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'"); 40 assert_throws_dom("NotFoundError", 41 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(); 53 assert_throws_dom("InvalidStateError", 54 function() { mediaSource.endOfStream(); }, 55 "endOfStream() throws an exception when closed."); 56 }, "Test endOfStream() while closed."); 57 58 test(function () 59 { 60 var mediaSource = new MediaSource(); 61 assert_throws_dom("InvalidStateError", 62 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(); 69 assert_throws_dom("InvalidStateError", 70 function() { mediaSource.endOfStream("network"); }, 71 "endOfStream(network) throws an exception when closed."); 72 }, "Test endOfStream(network) while closed."); 73 74 test(function () 75 { 76 var mediaSource = new MediaSource(); 77 assert_throws_dom("InvalidStateError", 78 function() { mediaSource.duration = 10; }, 79 "Setting duration throws an exception when closed."); 80 }, "Test setting duration while closed."); 81 82 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'"); 91 assert_throws_dom("InvalidStateError", 92 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'"); 110 assert_true(isNaN(mediaSource.duration), "duration is NaN"); 111 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"); 128 assert_throws_dom("InvalidStateError", 129 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 138 </script> 139 </body> 140 </html>