Bug 1152151 - [EME] Some tests keep working after they should have finished, part 2: Only load that each test actually needs - r=edwin

This commit is contained in:
Gerald Squelart 2015-04-15 10:09:25 +10:00
parent dd2237503f
commit 0e79995cec
5 changed files with 28 additions and 13 deletions

View File

@ -144,23 +144,28 @@ function MaybeCrossOriginURI(test, uri)
}
}
function AppendTrack(test, ms, track, token)
function AppendTrack(test, ms, track, token, loadParams)
{
return new Promise(function(resolve, reject) {
var sb;
var curFragment = 0;
var resolved = false;
var fragments = track.fragments;
var fragmentFile;
if (loadParams && loadParams.onlyLoadFirstFragments) {
fragments = fragments.slice(0, loadParams.onlyLoadFirstFragments);
}
function addNextFragment() {
if (curFragment >= track.fragments.length) {
if (curFragment >= fragments.length) {
Log(token, track.name + ": end of track");
resolve();
resolved = true;
return;
}
fragmentFile = MaybeCrossOriginURI(test, track.fragments[curFragment++]);
fragmentFile = MaybeCrossOriginURI(test, fragments[curFragment++]);
var req = new XMLHttpRequest();
req.open("GET", fragmentFile);
@ -206,7 +211,7 @@ function AppendTrack(test, ms, track, token)
//Returns a promise that is resolved when the media element is ready to have
//its play() function called; when it's loaded MSE fragments.
function LoadTest(test, elem, token)
function LoadTest(test, elem, token, loadParams)
{
if (!test.tracks) {
ok(false, token + " test does not have a tracks list");
@ -227,10 +232,14 @@ function LoadTest(test, elem, token)
firstOpen = false;
Log(token, "sourceopen");
return Promise.all(test.tracks.map(function(track) {
return AppendTrack(test, ms, track, token);
return AppendTrack(test, ms, track, token, loadParams);
})).then(function(){
Log(token, "end of stream");
ms.endOfStream();
if (loadParams && loadParams.noEndOfStream) {
Log(token, "Tracks loaded");
} else {
Log(token, "Tracks loaded, calling MediaSource.endOfStream()");
ms.endOfStream();
}
resolve();
});
})

View File

@ -38,7 +38,8 @@ function startTest(test, token)
manager.finished(token);
});
LoadTestWithManagedLoadToken(test, v, manager, token);
LoadTestWithManagedLoadToken(test, v, manager, token,
{ onlyLoadFirstFragments:2, noEndOfStream:true });
}
function beginTest() {

View File

@ -51,7 +51,8 @@ function startTest(test, token)
manager.finished(token);
});
LoadTestWithManagedLoadToken(test, v, manager, token);
LoadTestWithManagedLoadToken(test, v, manager, token,
{ onlyLoadFirstFragments:2, noEndOfStream:true });
}
function beginTest() {

View File

@ -146,7 +146,8 @@ function startTest(test, token)
}
);
LoadTestWithManagedLoadToken(test, v, manager, token);
LoadTestWithManagedLoadToken(test, v, manager, token,
{ onlyLoadFirstFragments:2, noEndOfStream:true });
}
function beginTest() {

View File

@ -32,7 +32,8 @@ function startTest(test, token)
ok(false, TimeStamp(case1token) + " should never reach loadeddata, as setMediaKeys should fail");
});
manager.started(case1token);
LoadTestWithManagedLoadToken(test, v1, manager, case1token);
LoadTestWithManagedLoadToken(test, v1, manager, case1token,
{ onlyLoadFirstFragments:2, noEndOfStream:true });
// Case 2. creating a MediaElementSource on a media element with a MediaKeys should fail.
@ -51,7 +52,8 @@ function startTest(test, token)
manager.finished(case2token);
});
manager.started(case2token);
LoadTestWithManagedLoadToken(test, v2, manager, case2token);
LoadTestWithManagedLoadToken(test, v2, manager, case2token,
{ onlyLoadFirstFragments:2, noEndOfStream:true });
// Case 3. capturing a media element with mozCaptureStream that has a MediaKeys should fail.
@ -69,7 +71,8 @@ function startTest(test, token)
manager.finished(case3token);
});
manager.started(case3token);
LoadTestWithManagedLoadToken(test, v3, manager, case3token);
LoadTestWithManagedLoadToken(test, v3, manager, case3token,
{ onlyLoadFirstFragments:2, noEndOfStream:true });
}
function beginTest() {