2 <!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
4 <script src=
"/resources/testharness.js"></script>
5 <script src=
"/resources/testharnessreport.js"></script>
6 <script src=
"mediasource-util.js"></script>
8 function mediasource_detach_test(testFunction
, description
)
10 mediasource_test(function(test
, mediaElement
, mediaSource
)
12 var segmentInfo
= MediaSourceUtil
.SEGMENT_INFO
;
13 var sourceBuffer
= mediaSource
.addSourceBuffer(segmentInfo
.type
);
15 assert_equals(mediaElement
.readyState
, HTMLMediaElement
.HAVE_NOTHING
);
16 assert_equals(mediaSource
.readyState
, 'open');
18 mediaSource
.addEventListener('sourceclose', test
.step_func(function (event
)
20 assert_equals(mediaSource
.sourceBuffers
.length
, 0, 'sourceBuffers is empty');
21 assert_equals(mediaSource
.activeSourceBuffers
.length
, 0, 'activeSourceBuffers is empty');
22 assert_equals(mediaSource
.readyState
, 'closed', 'readyState is "closed"');
23 assert_true(Number
.isNaN(mediaSource
.duration
), 'duration is NaN');
27 MediaSourceUtil
.loadBinaryData(test
, segmentInfo
.url
, function(mediaData
)
29 testFunction(test
, mediaElement
, mediaSource
, sourceBuffer
, mediaData
);
34 mediasource_detach_test(function(test
, mediaElement
, mediaSource
, sourceBuffer
, mediaData
)
37 }, 'Test media.load() before appending data will trigger MediaSource detaching from a media element.');
39 mediasource_detach_test(function(test
, mediaElement
, mediaSource
, sourceBuffer
, mediaData
)
41 sourceBuffer
.addEventListener('updateend', test
.step_func(function (event
)
43 assert_greater_than(mediaElement
.readyState
, HTMLMediaElement
.HAVE_NOTHING
, 'media readyState is greater than "HAVE_NOTHING"')
44 assert_false(sourceBuffer
.updating
, 'updating attribute is false');
48 sourceBuffer
.appendBuffer(mediaData
);
49 }, 'Test media.load() after appending data will trigger MediaSource detaching from a media element.');