mediasource-buffered-seek.html (2713B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Test MediaSource behavior when a seek is requested to a buffered position.</title> 5 <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> 6 <link rel="author" title="Alicia Boya GarcĂa" href="mailto:aboya@igalia.com"/> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="mediasource-util.js"></script> 10 </head> 11 <body> 12 <div id="log"></div> 13 <script> 14 mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) 15 { 16 mediaElement.play(); 17 18 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init); 19 var firstSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.media[0]); 20 21 // Append the initialization segment to trigger a transition to HAVE_METADATA. 22 test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer'); 23 test.expectEvent(mediaElement, 'loadedmetadata', 'Reached HAVE_METADATA'); 24 sourceBuffer.appendBuffer(initSegment); 25 26 test.waitForExpectedEvents(function() 27 { 28 assert_false(mediaElement.seeking, 'mediaElement is not seeking'); 29 assert_equals(mediaElement.readyState, mediaElement.HAVE_METADATA, 'Still in HAVE_METADATA'); 30 31 test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer'); 32 sourceBuffer.appendBuffer(firstSegment); 33 test.expectEvent(mediaElement, 'playing', 'mediaElement playing'); 34 }); 35 36 test.waitForExpectedEvents(function() 37 { 38 assert_greater_than(mediaElement.readyState, mediaElement.HAVE_METADATA, 'readyState > HAVE_METADATA'); 39 40 // Seek to a position we know it's buffered by now. 41 mediaElement.currentTime = Math.max(segmentInfo.media[0].timev, segmentInfo.media[0].timea) / 2; 42 43 assert_true(mediaElement.seeking, 'mediaElement is seeking'); 44 45 test.expectEvent(mediaElement, 'seeking', 'mediaElement seeking'); 46 test.expectEvent(mediaElement, 'seeked', 'mediaElement finished seek'); 47 }); 48 49 test.waitForExpectedEvents(function() 50 { 51 assert_greater_than(mediaElement.readyState, mediaElement.HAVE_METADATA, 'readyState > HAVE_METADATA'); 52 test.done(); 53 }); 54 55 }, 'Test seeking to a buffered location.'); 56 </script> 57 </body> 58 </html>