Backout e62c37b8e6b5 for Mulet test failure

This commit is contained in:
Chris Double 2014-11-19 16:00:09 +13:00
parent 79680ceb75
commit b22d071a6f
14 changed files with 35 additions and 119 deletions

View File

@ -418,10 +418,14 @@ void
MediaSource::DurationChange(double aOldDuration, double aNewDuration)
{
MOZ_ASSERT(NS_IsMainThread());
MSE_DEBUG("MediaSource(%p)::DurationChange(aOldDuration=%f, aNewDuration=%f)", this, aOldDuration, aNewDuration);
MSE_DEBUG("MediaSource(%p)::DurationChange(aNewDuration=%f)", this, aNewDuration);
if (aNewDuration < aOldDuration) {
mSourceBuffers->RangeRemoval(aNewDuration, aOldDuration);
ErrorResult rv;
mSourceBuffers->Remove(aNewDuration, aOldDuration, rv);
if (rv.Failed()) {
return;
}
}
// TODO: If partial audio frames/text cues exist, clamp duration based on mSourceBuffers.
}

View File

@ -188,19 +188,10 @@ SourceBuffer::Remove(double aStart, double aEnd, ErrorResult& aRv)
aRv.Throw(NS_ERROR_DOM_INVALID_ACCESS_ERR);
return;
}
if (mUpdating) {
if (mUpdating || mMediaSource->ReadyState() != MediaSourceReadyState::Open) {
aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return;
}
if (mMediaSource->ReadyState() == MediaSourceReadyState::Ended) {
mMediaSource->SetReadyState(MediaSourceReadyState::Open);
}
RangeRemoval(aStart, aEnd);
}
void
SourceBuffer::RangeRemoval(double aStart, double aEnd)
{
StartUpdating();
/// TODO: Run coded frame removal algorithm.

View File

@ -108,9 +108,6 @@ public:
double GetBufferedStart();
double GetBufferedEnd();
// Runs the range removal algorithm as defined by the MSE spec.
void RangeRemoval(double aStart, double aEnd);
#if defined(DEBUG)
void Dump(const char* aPath);
#endif

View File

@ -108,12 +108,15 @@ SourceBufferList::AnyUpdating()
}
void
SourceBufferList::RangeRemoval(double aStart, double aEnd)
SourceBufferList::Remove(double aStart, double aEnd, ErrorResult& aRv)
{
MOZ_ASSERT(NS_IsMainThread());
MSE_DEBUG("SourceBufferList(%p)::RangeRemoval(aStart=%f, aEnd=%f", this, aStart, aEnd);
MSE_DEBUG("SourceBufferList(%p)::Remove(aStart=%f, aEnd=%f", this, aStart, aEnd);
for (uint32_t i = 0; i < mSourceBuffers.Length(); ++i) {
mSourceBuffers[i]->RangeRemoval(aStart, aEnd);
mSourceBuffers[i]->Remove(aStart, aEnd, aRv);
if (aRv.Failed()) {
return;
}
}
}

View File

@ -66,8 +66,9 @@ public:
// Returns true if updating is true on any SourceBuffers in the list.
bool AnyUpdating();
// Runs the range removal steps from the MSE specification on each SourceBuffer.
void RangeRemoval(double aStart, double aEnd);
// Calls Remove(aStart, aEnd) on each SourceBuffer in the list. Aborts on
// first error, with result returned in aRv.
void Remove(double aStart, double aEnd, ErrorResult& aRv);
// Mark all SourceBuffers input buffers as ended.
void Ended();

View File

@ -9,8 +9,6 @@ support-files =
[test_MediaSource_disabled.html]
[test_BufferedSeek.html]
[test_BufferingWait.html]
[test_EndOfStream.html]
skip-if = (toolkit == 'android') #timeout android only bug 1101187
[test_FrameSelection.html]
[test_HaveMetadataUnbufferedSeek.html]
[test_LoadedMetadataFired.html]

View File

@ -12,8 +12,6 @@
SimpleTest.waitForExplicitFinish();
var updateCount = 0;
runWithMSE(function (ms, v) {
ms.addEventListener("sourceopen", function () {
var sb = ms.addSourceBuffer("video/webm");
@ -21,13 +19,7 @@ runWithMSE(function (ms, v) {
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();
};
ms.endOfStream()
});
});

View File

@ -1,50 +0,0 @@
<!DOCTYPE HTML>
<html>
<head>
<title>MSE: endOfStream call after an appendBuffer</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();
runWithMSE(function () {
var ms = new MediaSource();
var v = document.createElement("video");
v.src = URL.createObjectURL(ms);
document.body.appendChild(v);
ms.addEventListener("sourceopen", function () {
var sb = ms.addSourceBuffer("video/webm");
fetchWithXHR("seek.webm", function (arrayBuffer) {
sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 88966));
var count = 0;
sb.addEventListener("updateend", function () {
++count;
if (count == 1) {
setTimeout(function() {
var fail = false;
try {
ms.endOfStream();
} catch (e) {
fail = true;
}
ok(!fail, "MediaSource.endOfStream succeeded");
SimpleTest.finish();
}, 0);
}
});
});
});
});
</script>
</pre>
</body>
</html>

View File

@ -12,8 +12,6 @@
SimpleTest.waitForExplicitFinish();
var updateCount = 0;
runWithMSE(function (ms, v) {
ms.addEventListener("sourceopen", function () {
var sb = ms.addSourceBuffer("video/webm");
@ -36,13 +34,13 @@ runWithMSE(function (ms, v) {
fetchWithXHR("seek_lowres.webm", function (arrayBuffer) {
// Append initialization segment.
sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 438));
var first = true;
sb.addEventListener("updateend", function () {
updateCount++;
if (updateCount == 1) {
if (first) {
// Append media segment covering range [2, 4].
sb.appendBuffer(new Uint8Array(arrayBuffer, 51003));
}
else if (updateCount == 2) {
first = false;
} else {
ms.endOfStream();
target = targets.shift();
v.currentTime = target.currentTime;

View File

@ -57,12 +57,7 @@ runWithMSE(function () {
sb.addEventListener("update", function () {
is(sb.updating, false, "SourceBuffer.updating is expected value in update event");
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();
}
ms.endOfStream();
});
sb.addEventListener("updatestart", function () {
@ -89,10 +84,9 @@ runWithMSE(function () {
// XXX: Duration should be exactly 4.0, see bug 1065207.
ok(Math.abs(v.duration - 4) <= 0.002, "Video has correct duration");
ok(Math.abs(v.currentTime - 4) <= 0.002, "Video has played to end");
// XXX: 2 update events can be received dueto duration differences, see bug 1065207.
ok(updateCount == 1 || updateCount == 2, "update event received");
ok(updateendCount == 1 || updateendCount == 2, "updateend event received");
ok(updatestartCount == 1 || updatestartCount == 2, "updatestart event received");
is(updateCount, 1, "update event received");
is(updateendCount, 1, "updateend event received");
is(updatestartCount, 1, "updatestart event received");
is(loadedmetadataCount, 1, "loadedmetadata event received");
v.parentNode.removeChild(v);
SimpleTest.finish();

View File

@ -12,8 +12,6 @@
SimpleTest.waitForExplicitFinish();
var updateCount = 0;
runWithMSE(function (ms, v) {
ms.addEventListener("sourceopen", function () {
var sb = ms.addSourceBuffer("video/webm");
@ -21,13 +19,7 @@ runWithMSE(function (ms, v) {
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();
};
ms.endOfStream()
});
});

View File

@ -24,7 +24,7 @@ runWithMSE(function (ms, v) {
if (updateCount == 1) {
sb.appendBuffer(new Uint8Array(arrayBuffer, 25223));
}
else if (updateCount == 2) {
else {
ms.endOfStream();
}
});

View File

@ -12,20 +12,18 @@
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, 0, 318));
var first = true;
sb.addEventListener("updateend", function () {
updateCount++;
if (updateCount == 1) {
if (first) {
sb.appendBuffer(new Uint8Array(arrayBuffer, 318));
}
else if (updateCount == 2) {
first = false;
} else {
ms.endOfStream();
}
});

View File

@ -12,22 +12,20 @@
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, 0, 318));
var first = true;
sb.addEventListener("updateend", function () {
updateCount++;
if (updateCount == 1) {
if (first) {
window.setTimeout(function () {
sb.appendBuffer(new Uint8Array(arrayBuffer, 318));
first = false;
}, 1000);
}
else if (updateCount == 2) {
} else {
ms.endOfStream();
}
});