Bug 1208371 - Improve reliability of test_mediarecorder_record_timeslice.html. r=jwwang

MozReview-Commit-ID: HFstfYnRyJP

--HG--
extra : rebase_source : 80ed79a6f1e1a1e6eafb3426ef16e1739b353245
This commit is contained in:
Andreas Pehrson 2016-01-06 11:56:27 +08:00
Родитель f33e7b4b07
Коммит 312d19a45e
1 изменённых файлов: 62 добавлений и 62 удалений

Просмотреть файл

@ -25,76 +25,76 @@ function startTest(test, token) {
element.src = test.name;
element.test = test;
element.stream = element.mozCaptureStream();
element.loop = true;
element.preload = "auto";
var mediaRecorder = new MediaRecorder(element.stream);
mediaRecorder.onerror = function () {
ok(false, 'Unexpected onerror callback fired');
};
mediaRecorder.onwarning = function () {
ok(false, 'Unexpected onwarning callback fired');
};
mediaRecorder.onstop = function () {
ok(false, 'Unexpected onstop callback fired');
};
var dataAvailableCount = 0;
var onDataAvailableFirst = false;
// This handler fires every 250ms to generate a blob.
mediaRecorder.ondataavailable = function (evt) {
info('ondataavailable fired');
dataAvailableCount++;
ok(evt instanceof BlobEvent,
'Events fired from ondataavailable should be BlobEvent');
is(evt.type, 'dataavailable',
'Event type should dataavailable');
ok(evt.data.size >= 0,
'Blob data size received is greater than or equal to zero');
is(evt.data.type, expectedMimeType,
'Blob data received should have type = ' + expectedMimeType);
is(mediaRecorder.mimeType, expectedMimeType,
'Mime type in ondataavailable = ' + mediaRecorder.mimeType);
// We'll stop recording upon the 1st blob being received
if (dataAvailableCount === 1) {
mediaRecorder.onstop = function (evt) {
info('onstop fired');
if (!onDataAvailableFirst) {
ok(false, 'onstop unexpectedly fired before ondataavailable');
}
element.pause();
manager.finished(token);
};
mediaRecorder.stop();
is(mediaRecorder.state, 'inactive',
'Media recorder is inactive after being stopped');
is(mediaRecorder.stream, element.stream,
'Media recorder stream = element stream post recording');
} else if (dataAvailableCount === 2) {
// Ensure we've received at least two ondataavailable events before onstop
onDataAvailableFirst = true;
}
};
// Start recording once metadataloaded fires
// Set up MediaRecorder once loadedmetadata fires and tracks are available.
element.onloadedmetadata = function() {
element.onloadedmetadata = null;
var mediaRecorder = new MediaRecorder(element.stream);
mediaRecorder.onerror = function () {
ok(false, 'Unexpected onerror callback fired');
};
mediaRecorder.onwarning = function () {
ok(false, 'Unexpected onwarning callback fired');
};
mediaRecorder.onstop = function () {
ok(false, 'Unexpected onstop callback fired');
};
var dataAvailableCount = 0;
var onDataAvailableFirst = false;
// This handler fires every 250ms to generate a blob.
mediaRecorder.ondataavailable = function (evt) {
info('ondataavailable fired');
dataAvailableCount++;
ok(evt instanceof BlobEvent,
'Events fired from ondataavailable should be BlobEvent');
is(evt.type, 'dataavailable',
'Event type should dataavailable');
ok(evt.data.size >= 0,
'Blob data size received is greater than or equal to zero');
is(evt.data.type, expectedMimeType,
'Blob data received should have type = ' + expectedMimeType);
is(mediaRecorder.mimeType, expectedMimeType,
'Mime type in ondataavailable = ' + mediaRecorder.mimeType);
// We'll stop recording upon the 1st blob being received
if (dataAvailableCount === 1) {
mediaRecorder.onstop = function (evt) {
info('onstop fired');
if (!onDataAvailableFirst) {
ok(false, 'onstop unexpectedly fired before ondataavailable');
}
element.pause();
manager.finished(token);
};
mediaRecorder.stop();
is(mediaRecorder.state, 'inactive',
'Media recorder is inactive after being stopped');
is(mediaRecorder.stream, element.stream,
'Media recorder stream = element stream post recording');
} else if (dataAvailableCount === 2) {
// Ensure we've received at least two ondataavailable events before onstop
onDataAvailableFirst = true;
}
};
mediaRecorder.start(250);
element.play();
is(mediaRecorder.state, 'recording', 'Media recorder should be recording');
is(mediaRecorder.stream, element.stream,
'Media recorder stream = element stream at the start of recording');
};
element.play();
}
manager.runTests(gMediaRecorderTests, startTest);