tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

HTMLVideoElement-captureStream-settings.tentative.html (2584B)


      1 <!DOCTYPE html>
      2 <meta charset=utf-8>
      3 <title>HTMLVideoElement.captureStream().track.getSettings()</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/common/media.js"></script>
      7 <script>
      8 'use strict';
      9 
     10 // Tentative pending resolution of https://github.com/w3c/mediacapture-fromelement/issues/48.
     11 
     12 promise_test(async t => {
     13  if (!document.body) {
     14    await new Promise(r => document.addEventListener("DOMContentLoaded", r, {once: true}));
     15  }
     16 
     17  // Create a canvas and wait for a frame to be captured.
     18  const canvas = document.createElement("canvas");
     19  canvas.width = 166;
     20  canvas.height = 72;
     21  document.body.appendChild(canvas);
     22 
     23  const ctx = canvas.getContext("2d");
     24  ctx.fillStyle = 'green';
     25  ctx.fillRect(0, 0, canvas.width, canvas.height);
     26  await new Promise(r => requestAnimationFrame(r));
     27 
     28  // Capture the canvas and check track settings.
     29  const video = document.createElement("video");
     30  video.srcObject = canvas.captureStream();
     31  t.add_cleanup(async () => {
     32    video.srcObject.getTracks().forEach(track => track.stop());
     33    video.srcObject = null;
     34  });
     35  video.play();
     36  await new Promise(r => video.onloadedmetadata = r);
     37  const stream = video.mozCaptureStream();
     38  const [track] = stream.getTracks();
     39 
     40  assert_equals(track.getSettings().width, 166, "Track width setting initially set");
     41  assert_equals(track.getSettings().height, 72, "Track height setting initially set");
     42 
     43  // Resize the canvas and check that track settings are updated.
     44  canvas.width = 200;
     45  canvas.height = 100;
     46  ctx.fillRect(0, 0, canvas.width, canvas.height);
     47  await new Promise(r => video.onresize = r);
     48  assert_equals(track.getSettings().width, 200, "Track width setting follows captured frames");
     49  assert_equals(track.getSettings().height, 100, "Track height setting follows captured frames");
     50 }, "HTMLVideoElement.captureStream() with MediaStream source creates tracks that populate resolution settings");
     51 
     52 promise_test(async t => {
     53  const video = document.createElement("video");
     54  video.preload = "auto";
     55  video.src = getVideoURI("/media/2x2-green");
     56  t.add_cleanup(async () => video.src = "");
     57  await new Promise(r => video.onloadedmetadata = r);
     58  const stream = video.mozCaptureStream();
     59  const [track] = stream.getVideoTracks();
     60 
     61  assert_equals(track.getSettings().width, 2, "Track width setting");
     62  assert_equals(track.getSettings().height, 2, "Track height setting");
     63 }, "HTMLVideoElement.captureStream() with file source creates tracks that populate resolution settings");
     64 </script>