<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<title>SourceBuffer#abort() for already removed buffer from parent media source</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div id="log"></div>
<script>
var mimes = ['video/webm; codecs="vorbis,vp8"', 'video/mp4'];
//check the browser supports the MIME used in this test
function isTypeSupported(mime) {
if(!MediaSource.isTypeSupported(mime)) {
this.step(function() {
assert_unreached("Browser doesn't support the MIME used in this test: " + mime);
});
this.done();
return false;
}
return true;
}
function mediaTest(mime) {
async_test(function(t) {
if(!isTypeSupported.bind(t)(mime)) {
return;
}
var mediaSource = new MediaSource();
mediaSource.addEventListener('sourceopen', t.step_func_done(function(e) {
var sourceBuffer = mediaSource.addSourceBuffer(mime);
mediaSource.removeSourceBuffer(sourceBuffer);
assert_throws_dom('InvalidStateError',
function() {
sourceBuffer.abort();
},
'SourceBuffer#abort() after removing the SourceBuffer object');
}), false);
var video = document.createElement('video');
video.src = window.URL.createObjectURL(mediaSource);
}, 'SourceBuffer#abort (' + mime + ') : ' +
'if this object has been removed from the sourceBuffers attribute of the parent media source, ' +
'then throw an INVALID_STATE_ERR exception and abort these steps.');
}
mimes.forEach(function(mime) {
mediaTest(mime);
});
</script>
</body>
</html>