mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 12:37:37 +00:00
d37876d9b3
Reopens the MediaSource when SourceBuffer::Remove is called on an Ended MediaSource. Only run the Range Removal algorithm when MediaSource duration is changed instead of calling Remove on SourceBuffers. Updates tests for the fact that update{start,end} can now be called more than once due to DurationChange. --HG-- extra : rebase_source : d4c96b982ffa9f5cd0b24e6e3a4ef5dffe9be6f6
64 lines
1.7 KiB
HTML
64 lines
1.7 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>MSE: seeking in buffered range</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="text/javascript" src="mediasource.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body>
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
var updateCount = 0;
|
|
|
|
runWithMSE(function (ms, v) {
|
|
ms.addEventListener("sourceopen", function () {
|
|
var sb = ms.addSourceBuffer("video/webm");
|
|
|
|
fetchWithXHR("seek.webm", function (arrayBuffer) {
|
|
sb.appendBuffer(new Uint8Array(arrayBuffer));
|
|
sb.addEventListener("updateend", function () {
|
|
updateCount++;
|
|
/* Ensure that we endOfStream on the first update event only as endOfStream can
|
|
raise more if the duration of the last buffered range and the intial duration
|
|
differ. See bug 1065207 */
|
|
if (updateCount == 1) {
|
|
ms.endOfStream();
|
|
};
|
|
});
|
|
});
|
|
|
|
var target = 2;
|
|
|
|
v.addEventListener("loadedmetadata", function () {
|
|
if (v.currentTime != target &&
|
|
v.buffered.length &&
|
|
target >= v.buffered.start(0) &&
|
|
target < v.buffered.end(0)) {
|
|
v.currentTime = target;
|
|
}
|
|
});
|
|
|
|
var wasSeeking = false;
|
|
|
|
v.addEventListener("seeking", function () {
|
|
wasSeeking = true;
|
|
is(v.currentTime, target, "Video currentTime at target");
|
|
});
|
|
|
|
v.addEventListener("seeked", function () {
|
|
ok(wasSeeking, "Received expected seeking and seeked events");
|
|
is(v.currentTime, target, "Video currentTime at target");
|
|
SimpleTest.finish();
|
|
});
|
|
});
|
|
});
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|