Bug 1306999 - Add mochitest. r=jib

Differential Revision: https://phabricator.services.mozilla.com/D33290

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Andreas Pehrson 2019-06-10 13:10:38 +00:00
Родитель 4b40176aea
Коммит 4d29471713
2 изменённых файлов: 68 добавлений и 0 удалений

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

@ -1198,6 +1198,8 @@ tags=msg capturestream
[test_streams_element_capture_twice.html]
skip-if = toolkit == 'android' # android(bug 1232305)
tags=msg capturestream
[test_streams_firstframe.html]
tags=msg capturestream
[test_streams_gc.html]
skip-if = android_version == '17' || (android_version == '19' && debug) # android(bug 1232305)
tags=msg capturestream

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

@ -0,0 +1,66 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test that a non-autoplaying, non-playing element with a MediaStream source triggers canplay and shows a first frame</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="manifest.js"></script>
<script src="/tests/dom/canvas/test/captureStream_common.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<pre id="test">
<script class="testbody" type="text/javascript">
async function runTest() {
const canvas = document.createElement("canvas");
canvas.getContext("2d");
const helper = new CaptureStreamTestHelper2D(100, 100);
const video = document.createElement("video");
document.body.appendChild(video);
video.srcObject = canvas.captureStream();
helper.drawColor(canvas, helper.red);
await Promise.race([
new Promise(r => video.oncanplay = r),
new Promise(r => setTimeout(r, 30000))
.then(() => Promise.reject(new Error("Canplay timeout"))),
]);
ok(true, "Got \"canplay\"");
is(video.readyState, video.HAVE_ENOUGH_DATA, "Expected readyState");
ok(helper.isPixel(helper.getPixel(video), helper.red),
"First frame is rendered before playing");
helper.drawColor(canvas, helper.green);
await helper.pixelMustNotBecome(video, helper.green, {
time: 1000,
infoString: "Rendered first frame doesn't change on new frame from source"
});
ok(helper.isPixel(helper.getPixel(video), helper.red),
"First frame is still rendered");
video.play();
helper.drawColor(canvas, helper.blue);
await helper.pixelMustBecome(video, helper.blue, {
infoString: "New frame gets rendered when playing"
});
video.srcObject.getTracks().forEach(t => t.stop());
}
(async function() {
SimpleTest.waitForExplicitFinish();
SimpleTest.requestFlakyTimeout("Explicit timeout reasons");
try {
await runTest();
} catch(e) {
ok(false, e);
}
SimpleTest.finish();
})();
</script>
</pre>
</body>
</html>