setup({timeout: 180000});
var t = async_test(document.title, {timeout: 180000}), mediaSource, video,
-sourceopenCallback, onGetBufferArray, sourceBuffer, updateCb;
+sourceopenCallback, onGetBufferArray, onDurationChanged, sourceBuffer, updateCb, end;
t.step(function() {
onGetBufferArray = t.step_func(function(uint8Array) {
sourceBuffer.appendBuffer(uint8Array);
});
+ onDurationChanged = t.step_func(function(uint8Array) {
+ video.removeEventListener('durationchange', onDurationChanged);
+ assert_approx_equals(video.duration, end, 'video Duration not equals.');
+ t.done();
+ });
+
updateCb = function() {
sourceBuffer.abort();
- mediaSource.duration = sourceBuffer.buffered.end(0);
- assert_equals(mediaSource.duration, sourceBuffer.buffered.end(0), "mediaSource duration should be equals.");
- setTimeout(function(){
- assert_equals(video.duration, sourceBuffer.buffered.end(0), "video duration should be equals.");
- t.done();
- }, 0);
+ video.addEventListener('durationchange', onDurationChanged);
+ end = sourceBuffer.buffered.end(0);
+ mediaSource.duration = end;
}
sourceopenCallback = t.step_func(function (event){