| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="/w3c/resources/testharness.js"></script> | 4 <script src="/w3c/resources/testharness.js"></script> |
| 5 <script src="/w3c/resources/testharnessreport.js"></script> | 5 <script src="/w3c/resources/testharnessreport.js"></script> |
| 6 <script src="mediasource-util.js"></script> | 6 <script src="mediasource-util.js"></script> |
| 7 | 7 |
| 8 <link rel='stylesheet' href='/w3c/resources/testharness.css'> | 8 <link rel='stylesheet' href='/w3c/resources/testharness.css'> |
| 9 </head> | 9 </head> |
| 10 <body> | 10 <body> |
| 11 <div id="log"></div> | 11 <div id="log"></div> |
| 12 <script> | 12 <script> |
| 13 mediasource_test(function(test, mediaElement, mediaSource) | 13 mediasource_test(function(test, mediaElement, mediaSource) |
| 14 { | 14 { |
| 15 mediaSource.endOfStream(); | 15 mediaSource.endOfStream(); |
| 16 assert_throws("InvalidStateError", | 16 assert_throws("InvalidStateError", |
| 17 function() { mediaSource.addSourceBuffer(MediaSourceUt
il.AUDIO_VIDEO_TYPE); }, | 17 function() { mediaSource.addSourceBuffer(MediaSourceUt
il.AUDIO_VIDEO_TYPE); }, |
| 18 "addSourceBuffer() threw an exception when in 'ended'
state."); | 18 "addSourceBuffer() threw an exception when in 'ended'
state."); |
| 19 test.done(); | 19 test.done(); |
| 20 }, "Test addSourceBuffer() in 'ended' state."); | 20 }, "Test addSourceBuffer() in 'ended' state."); |
| 21 | 21 |
| 22 mediasource_test(function(test, mediaElement, mediaSource) | 22 mediasource_test(function(test, mediaElement, mediaSource) |
| 23 { | 23 { |
| 24 assert_throws("InvalidAccessError", | 24 assert_throws("InvalidAccessError", |
| 25 function() { mediaSource.addSourceBuffer(""); }, | 25 function() { mediaSource.addSourceBuffer(""); }, |
| 26 "addSourceBuffer() threw an exception when passed an e
mpty string."); | 26 "addSourceBuffer() threw an exception when passed an e
mpty string."); |
| 27 test.done(); | 27 test.done(); |
| 28 }, "Test addSourceBuffer() with empty type"); | 28 }, "Test addSourceBuffer() with empty type"); |
| 29 | 29 |
| 30 mediasource_test(function(test, mediaElement, mediaSource) | 30 mediasource_test(function(test, mediaElement, mediaSource) |
| 31 { | 31 { |
| 32 assert_throws("NotSupportedError", | 32 assert_throws("NotSupportedError", |
| 33 function() { mediaSource.addSourceBuffer(null); }, | 33 function() { mediaSource.addSourceBuffer(null); }, |
| 34 "addSourceBuffer() threw an exception when passed null
."); | 34 "addSourceBuffer() threw an exception when passed null
."); |
| 35 test.done(); | 35 test.done(); |
| 36 }, "Test addSourceBuffer() with null"); | 36 }, "Test addSourceBuffer() with null"); |
| 37 | 37 |
| 38 mediasource_test(function(test, mediaElement, mediaSource) | 38 mediasource_test(function(test, mediaElement, mediaSource) |
| 39 { | 39 { |
| 40 assert_throws("NotSupportedError", | 40 assert_throws("NotSupportedError", |
| 41 function() { mediaSource.addSourceBuffer("invalidType"
); }, | 41 function() { mediaSource.addSourceBuffer("invalidType"
); }, |
| 42 "addSourceBuffer() threw an exception for an unsupport
ed type."); | 42 "addSourceBuffer() threw an exception for an unsupport
ed type."); |
| 43 test.done(); | 43 test.done(); |
| 44 }, "Test addSourceBuffer() with unsupported type"); | 44 }, "Test addSourceBuffer() with unsupported type"); |
| 45 | 45 |
| 46 mediasource_test(function(test, mediaElement, mediaSource) | 46 mediasource_test(function(test, mediaElement, mediaSource) |
| 47 { | 47 { |
| 48 var mimetype = 'video/webm;codecs="vp8,vorbis"'; | 48 var mimetype = 'video/webm;codecs="vp8,vorbis"'; |
| 49 | 49 |
| 50 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is
supported"); | 50 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is
supported"); |
| 51 | 51 |
| 52 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); | 52 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); |
| 53 assert_true(sourceBuffer != null, "New SourceBuffer returned"); | 53 assert_true(sourceBuffer != null, "New SourceBuffer returned"); |
| 54 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB
uffer is in mediaSource.sourceBuffers"); | 54 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB
uffer is in mediaSource.sourceBuffers"); |
| 55 assert_equals(mediaSource.activeSourceBuffers[0], sourceBuffer, "S
ourceBuffer is in mediaSource.activeSourceBuffers"); | 55 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu
ffer is not in mediaSource.activeSourceBuffers"); |
| 56 test.done(); | 56 test.done(); |
| 57 }, "Test addSourceBuffer() with Vorbis and VP8"); | 57 }, "Test addSourceBuffer() with Vorbis and VP8"); |
| 58 | 58 |
| 59 mediasource_test(function(test, mediaElement, mediaSource) | 59 mediasource_test(function(test, mediaElement, mediaSource) |
| 60 { | 60 { |
| 61 var videoMimetype = 'video/webm;codecs="vp8"'; | 61 var videoMimetype = 'video/webm;codecs="vp8"'; |
| 62 var audioMimetype = 'audio/webm;codecs="vorbis"'; | 62 var audioMimetype = 'audio/webm;codecs="vorbis"'; |
| 63 | 63 |
| 64 assert_true(MediaSource.isTypeSupported(videoMimetype), videoMimet
ype + " is supported"); | 64 assert_true(MediaSource.isTypeSupported(videoMimetype), videoMimet
ype + " is supported"); |
| 65 assert_true(MediaSource.isTypeSupported(audioMimetype), audioMimet
ype + " is supported"); | 65 assert_true(MediaSource.isTypeSupported(audioMimetype), audioMimet
ype + " is supported"); |
| 66 | 66 |
| 67 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype); | 67 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype); |
| 68 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype); | 68 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype); |
| 69 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "source
BufferA is in mediaSource.sourceBuffers"); | 69 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "source
BufferA is in mediaSource.sourceBuffers"); |
| 70 assert_equals(mediaSource.activeSourceBuffers[0], sourceBufferA, "
sourceBufferA is in mediaSource.activeSourceBuffers"); | 70 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu
fferA is not in mediaSource.activeSourceBuffers"); |
| 71 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "source
BufferB is in mediaSource.sourceBuffers"); | 71 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "source
BufferB is in mediaSource.sourceBuffers"); |
| 72 assert_equals(mediaSource.activeSourceBuffers[1], sourceBufferB, "
sourceBufferB is in mediaSource.activeSourceBuffers"); | 72 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu
fferB is not in mediaSource.activeSourceBuffers"); |
| 73 test.done(); | 73 test.done(); |
| 74 }, "Test addSourceBuffer() with Vorbis and VP8 in separate SourceBuffe
rs"); | 74 }, "Test addSourceBuffer() with Vorbis and VP8 in separate SourceBuffe
rs"); |
| 75 | 75 |
| 76 mediasource_test(function(test, mediaElement, mediaSource) | 76 mediasource_test(function(test, mediaElement, mediaSource) |
| 77 { | 77 { |
| 78 var mimetype = MediaSourceUtil.VIDEO_ONLY_TYPE; | 78 var mimetype = MediaSourceUtil.VIDEO_ONLY_TYPE; |
| 79 | 79 |
| 80 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is
supported"); | 80 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is
supported"); |
| 81 | 81 |
| 82 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); | 82 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); |
| 83 assert_true(sourceBuffer != null, "New SourceBuffer returned"); | 83 assert_true(sourceBuffer != null, "New SourceBuffer returned"); |
| 84 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB
uffer is in mediaSource.sourceBuffers"); | 84 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB
uffer is in mediaSource.sourceBuffers"); |
| 85 assert_equals(mediaSource.activeSourceBuffers[0], sourceBuffer, "S
ourceBuffer is in mediaSource.activeSourceBuffers"); | 85 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu
ffer is not in mediaSource.activeSourceBuffers"); |
| 86 test.done(); | 86 test.done(); |
| 87 }, "Test addSourceBuffer() video only"); | 87 }, "Test addSourceBuffer() video only"); |
| 88 | 88 |
| 89 mediasource_test(function(test, mediaElement, mediaSource) | 89 mediasource_test(function(test, mediaElement, mediaSource) |
| 90 { | 90 { |
| 91 var mimetype = MediaSourceUtil.AUDIO_ONLY_TYPE; | 91 var mimetype = MediaSourceUtil.AUDIO_ONLY_TYPE; |
| 92 | 92 |
| 93 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is
supported"); | 93 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is
supported"); |
| 94 | 94 |
| 95 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); | 95 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); |
| 96 assert_true(sourceBuffer != null, "New SourceBuffer returned"); | 96 assert_true(sourceBuffer != null, "New SourceBuffer returned"); |
| 97 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB
uffer is in mediaSource.sourceBuffers"); | 97 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB
uffer is in mediaSource.sourceBuffers"); |
| 98 assert_equals(mediaSource.activeSourceBuffers[0], sourceBuffer, "S
ourceBuffer is in mediaSource.activeSourceBuffers"); | 98 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu
ffer is not in mediaSource.activeSourceBuffers"); |
| 99 test.done(); | 99 test.done(); |
| 100 }, "Test addSourceBuffer() audio only"); | 100 }, "Test addSourceBuffer() audio only"); |
| 101 | 101 |
| 102 mediasource_test(function(test, mediaElement, mediaSource) | 102 mediasource_test(function(test, mediaElement, mediaSource) |
| 103 { | 103 { |
| 104 var mimetype = 'video/mp4;codecs="avc1.4D4001,mp4a.40.2"'; | 104 var mimetype = 'video/mp4;codecs="avc1.4D4001,mp4a.40.2"'; |
| 105 | 105 |
| 106 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is
supported"); | 106 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is
supported"); |
| 107 | 107 |
| 108 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); | 108 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); |
| 109 assert_true(sourceBuffer != null, "New SourceBuffer returned"); | 109 assert_true(sourceBuffer != null, "New SourceBuffer returned"); |
| 110 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB
uffer is in mediaSource.sourceBuffers"); | 110 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceB
uffer is in mediaSource.sourceBuffers"); |
| 111 assert_equals(mediaSource.activeSourceBuffers[0], sourceBuffer, "S
ourceBuffer is in mediaSource.activeSourceBuffers"); | 111 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu
ffer is not in mediaSource.activeSourceBuffers"); |
| 112 test.done(); | 112 test.done(); |
| 113 }, "Test addSourceBuffer() with AAC and H.264"); | 113 }, "Test addSourceBuffer() with AAC and H.264"); |
| 114 | 114 |
| 115 mediasource_test(function(test, mediaElement, mediaSource) | 115 mediasource_test(function(test, mediaElement, mediaSource) |
| 116 { | 116 { |
| 117 var videoMimetype = 'video/mp4;codecs="avc1.4D4001"'; | 117 var videoMimetype = 'video/mp4;codecs="avc1.4D4001"'; |
| 118 var audioMimetype = 'audio/mp4;codecs="mp4a.40.2"'; | 118 var audioMimetype = 'audio/mp4;codecs="mp4a.40.2"'; |
| 119 | 119 |
| 120 assert_true(MediaSource.isTypeSupported(videoMimetype), videoMimet
ype + " is supported"); | 120 assert_true(MediaSource.isTypeSupported(videoMimetype), videoMimet
ype + " is supported"); |
| 121 assert_true(MediaSource.isTypeSupported(audioMimetype), audioMimet
ype + " is supported"); | 121 assert_true(MediaSource.isTypeSupported(audioMimetype), audioMimet
ype + " is supported"); |
| 122 | 122 |
| 123 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype); | 123 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype); |
| 124 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype); | 124 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype); |
| 125 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "source
BufferA is in mediaSource.sourceBuffers"); | 125 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "source
BufferA is in mediaSource.sourceBuffers"); |
| 126 assert_equals(mediaSource.activeSourceBuffers[0], sourceBufferA, "
sourceBufferA is in mediaSource.activeSourceBuffers"); | 126 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu
fferA is not in mediaSource.activeSourceBuffers"); |
| 127 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "source
BufferB is in mediaSource.sourceBuffers"); | 127 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "source
BufferB is in mediaSource.sourceBuffers"); |
| 128 assert_equals(mediaSource.activeSourceBuffers[1], sourceBufferB, "
sourceBufferB is in mediaSource.activeSourceBuffers"); | 128 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBu
fferB is not in mediaSource.activeSourceBuffers"); |
| 129 test.done(); | 129 test.done(); |
| 130 }, "Test addSourceBuffer() with AAC and H.264 in separate SourceBuffer
s"); | 130 }, "Test addSourceBuffer() with AAC and H.264 in separate SourceBuffer
s"); |
| 131 | 131 |
| 132 mediasource_test(function(test, mediaElement, mediaSource) | 132 mediasource_test(function(test, mediaElement, mediaSource) |
| 133 { | 133 { |
| 134 var reachedLimit = false; | 134 var reachedLimit = false; |
| 135 | 135 |
| 136 // The 20 here is an arbitrary upper limit to make sure the test te
rminates. This test | 136 // The 20 here is an arbitrary upper limit to make sure the test te
rminates. This test |
| 137 // assumes that implementations won't support more than 20 SourceBu
ffers simultaneously. | 137 // assumes that implementations won't support more than 20 SourceBu
ffers simultaneously. |
| 138 for (var i = 0; i < 20; ++i) { | 138 for (var i = 0; i < 20; ++i) { |
| 139 try { | 139 try { |
| 140 mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYP
E); | 140 mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYP
E); |
| 141 } catch(e) { | 141 } catch(e) { |
| 142 assert_equals(e.name, "QuotaExceededError"); | 142 assert_equals(e.name, "QuotaExceededError"); |
| 143 reachedLimit = true; | 143 reachedLimit = true; |
| 144 break; | 144 break; |
| 145 } | 145 } |
| 146 } | 146 } |
| 147 assert_true(reachedLimit, "Reached SourceBuffer limit."); | 147 assert_true(reachedLimit, "Reached SourceBuffer limit."); |
| 148 test.done(); | 148 test.done(); |
| 149 }, "Test addSourceBuffer() QuotaExceededError."); | 149 }, "Test addSourceBuffer() QuotaExceededError."); |
| 150 </script> | 150 </script> |
| 151 </body> | 151 </body> |
| 152 </html> | 152 </html> |
| OLD | NEW |