blob: 2129b8f4730fcba72d27958016355887e36c6ff9 [file] [log] [blame]
Aaron Colwellc6841a02014-03-07 01:37:561<!DOCTYPE html>
Matt Wolenetz74803c62016-08-19 01:46:402<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
Aaron Colwellc6841a02014-03-07 01:37:563<html>
4 <head>
Aaron Colwellaa3c90b2014-08-04 17:58:375 <title>Simple MediaSource playback test case.</title>
Matt Wolenetz11147d02019-06-13 23:52:476 <meta name="timeout" content="long">
Aaron Colwell06f8ec22014-03-07 18:09:477 <script src="/resources/testharness.js"></script>
8 <script src="/resources/testharnessreport.js"></script>
Aaron Colwellc6841a02014-03-07 01:37:569 <script src="mediasource-util.js"></script>
Aaron Colwellc6841a02014-03-07 01:37:5610 </head>
11 <body>
12 <div id="log"></div>
13 <script>
14 mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
15 {
Ms2ger979de362015-06-29 10:21:1916 mediaElement.addEventListener('error', test.unreached_func("Unexpected event 'error'"));
Ms2geredb207d2015-06-29 10:31:5717 mediaElement.addEventListener('ended', test.step_func_done());
Aaron Colwellc6841a02014-03-07 01:37:5618
Aaron Colwellcffb8af2014-05-23 22:27:1019 test.expectEvent(sourceBuffer, 'updatestart', 'sourceBuffer');
20 test.expectEvent(sourceBuffer, 'update', 'sourceBuffer');
21 test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer');
Aaron Colwellc6841a02014-03-07 01:37:5622
Chris Cunningham5d2bdef2018-01-17 20:45:2723 assert_false(sourceBuffer.updating, "sourceBuffer.updating");
24
Aaron Colwellc6841a02014-03-07 01:37:5625 sourceBuffer.appendBuffer(mediaData);
Aaron Colwellcffb8af2014-05-23 22:27:1026
Chris Cunningham5d2bdef2018-01-17 20:45:2727 assert_true(sourceBuffer.updating, "sourceBuffer.updating");
28
Aaron Colwellcffb8af2014-05-23 22:27:1029 test.waitForExpectedEvents(function()
30 {
Chris Cunningham5d2bdef2018-01-17 20:45:2731 assert_false(sourceBuffer.updating, "sourceBuffer.updating");
Aaron Colwellcffb8af2014-05-23 22:27:1032
Chris Cunningham5d2bdef2018-01-17 20:45:2733 // Truncate the buffered media to about 1 second duration.
34 sourceBuffer.remove(1, +Infinity);
Aaron Colwellcffb8af2014-05-23 22:27:1035
Chris Cunningham5d2bdef2018-01-17 20:45:2736 assert_true(sourceBuffer.updating, "sourceBuffer.updating");
Aaron Colwellcffb8af2014-05-23 22:27:1037 test.expectEvent(sourceBuffer, 'updatestart', 'sourceBuffer');
38 test.expectEvent(sourceBuffer, 'update', 'sourceBuffer');
39 test.expectEvent(sourceBuffer, 'updateend', 'sourceBuffer');
40 });
41
42 test.waitForExpectedEvents(function()
43 {
Jean-Yves Avenard1ad8d4d2016-08-01 14:14:1644 assert_false(sourceBuffer.updating, "updating");
45 assert_greater_than(mediaSource.duration, 1, "duration");
46
Chris Cunningham5d2bdef2018-01-17 20:45:2747 // Complete truncation of duration to 1 second.
Jean-Yves Avenard1ad8d4d2016-08-01 14:14:1648 mediaSource.duration = 1;
49
50 test.expectEvent(mediaElement, "durationchange");
51 });
52
53 test.waitForExpectedEvents(function()
54 {
Aaron Colwellcffb8af2014-05-23 22:27:1055 mediaSource.endOfStream();
56 mediaElement.play();
57 });
James Graham1da64702015-05-01 12:22:2258 }, "Test normal playback case with MediaSource API");
Aaron Colwellc6841a02014-03-07 01:37:5659 </script>
60 </body>
61</html>