diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/media/test/test_streams_capture_origin.html | |
parent | Initial commit. (diff) | |
download | firefox-esr-upstream.tar.xz firefox-esr-upstream.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/media/test/test_streams_capture_origin.html')
-rw-r--r-- | dom/media/test/test_streams_capture_origin.html | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/dom/media/test/test_streams_capture_origin.html b/dom/media/test/test_streams_capture_origin.html new file mode 100644 index 0000000000..13d5589c0d --- /dev/null +++ b/dom/media/test/test_streams_capture_origin.html @@ -0,0 +1,90 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test for Bug 1189506</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> + <script type="text/javascript" src="manifest.js"></script> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1189506">Mozilla Bug 1189506</a> +<p id="display"></p> +<video id="vin"></video> +<video id="vout"></video> +<video id="vout_cors" crossorigin></video> +<canvas id="cin" width="40" height="30"></canvas> +<canvas id="cout" width="40" height="30"></canvas> +<canvas id="cout_cors" width="40" height="30"></canvas> +<div id="content" style="display: none"> +</div> +<pre id="test"> +<script type="application/javascript"> +/* global vin, vout, vout_cors, cin, cout, cout_cors */ + +/** Test for Bug 1189506 **/ + +SimpleTest.waitForExplicitFinish(); + +async function start() { + const resource = getPlayableVideo(gSmallTests).name; + vin.src = "http://example.org:8000/tests/dom/media/test/" + resource; + vin.preload = "metadata"; + + await new Promise(r => vin.onloadedmetadata = r); + vout.srcObject = vin.mozCaptureStreamUntilEnded(); + vout_cors.srcObject = vin.mozCaptureStreamUntilEnded(); + vin.play(); + vout.play(); + vout_cors.play(); + + await new Promise(r => vout.onended = r); + is(vin.ended, vout.ended, "Source media element ends first"); + + const ctxin = SpecialPowers.wrap(cin.getContext("2d")); + ctxin.drawImage(vin, 0, 0); + + { + info("Testing that the last frame is rendered"); + const powerCtx = SpecialPowers.wrap(cout.getContext("2d")); + powerCtx.drawImage(vout, 0, 0); + const datain = ctxin.getImageData(0, 0, cin.width, cin.height); + const dataout = powerCtx.getImageData(0, 0, cout.width, cout.height); + for (let i = 0; i < datain.data.length; i += 4) { + const pixelin = datain.data.slice(i, i + 4).join(','); + const pixelout = dataout.data.slice(i, i + 4).join(','); + if (pixelin != pixelout) { + is(pixelout, pixelin, `Pixel #${i/4} is rendered as expected`); + break; + } + } + is(datain.data.length / 4, cin.width * cin.height, + "Checked expected number of pixels"); + } + + { + info("Testing that the principal is set"); + const ctx = cout.getContext("2d"); + ctx.drawImage(vout, 0, 0); + SimpleTest.doesThrow(() => ctx.getImageData(0, 0, cout.width, cout.height), + "SecurityError"); + } + + { + info("Testing that the crossorigin attribute is ignored for MediaStreams"); + const ctx = cout_cors.getContext("2d"); + ctx.drawImage(vout_cors, 0, 0); + SimpleTest.doesThrow( + () => ctx.getImageData(0, 0, cout_cors.width, cout_cors.height), + "SecurityError"); + } +} + +(async () => { + try { await start(); } + catch(e) { ok(false, `Rejected with ${e}`); } + finally { SimpleTest.finish(); } +})(); +</script> +</pre> +</body> +</html> |