tor-browser

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

MediaStreamTrack-applyConstraints-fast.html (2473B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <body>
      5 <canvas id='canvas' width=10 height=10></canvas>
      6 </body>
      7 <script>
      8 
      9 // This test verifies that MediaStreamTrack.applyConstraints() exists and that,
     10 // when called with no parameters, returns a Promise that is resolved. This
     11 // might not make sense: https://github.com/w3c/mediacapture-main/issues/438 .
     12 // Other tests go deeper.
     13 promise_test(function(t) {
     14  var canvas = document.getElementById('canvas');
     15  var context = canvas.getContext("2d");
     16  context.fillStyle = "red";
     17  context.fillRect(0, 0, 10, 10);
     18 
     19  var stream = canvas.captureStream();
     20  assert_equals(stream.getAudioTracks().length, 0);
     21  assert_equals(stream.getVideoTracks().length, 1);
     22 
     23  var videoTrack = stream.getVideoTracks()[0];
     24  return videoTrack.applyConstraints();
     25 }, 'MediaStreamTrack.applyConstraints()');
     26 
     27 // This test verifies that MediaStreamTrack.applyConstraints() exists and that,
     28 // when called with an empty advanced constraint set, returns a Promise that is
     29 // resolved.
     30 promise_test(function(t) {
     31  var canvas = document.getElementById('canvas');
     32  var context = canvas.getContext("2d");
     33  context.fillStyle = "red";
     34  context.fillRect(0, 0, 10, 10);
     35 
     36  var stream = canvas.captureStream();
     37  assert_equals(stream.getAudioTracks().length, 0);
     38  assert_equals(stream.getVideoTracks().length, 1);
     39 
     40  var videoTrack = stream.getVideoTracks()[0];
     41  return videoTrack.applyConstraints({advanced: []});
     42 }, 'MediaStreamTrack.applyConstraints({advanced: []})');
     43 
     44 // This test verifies that applyConstraints() rejects the returned Promise if
     45 // passed a non-supported image-capture constraint (https://crbug.com/711694).
     46 promise_test(async function(t) {
     47  var canvas = document.getElementById('canvas');
     48  var context = canvas.getContext("2d");
     49  context.fillStyle = "red";
     50  context.fillRect(0, 0, 10, 10);
     51 
     52  var stream = canvas.captureStream();
     53  var videoTrack = stream.getVideoTracks()[0];
     54 
     55  // Use e.g. |torch| as an example of unsupported constraint.
     56  assert_false("torch" in videoTrack.getCapabilities());
     57  try {
     58    await videoTrack.applyConstraints({torch: {exact: true}});
     59  } catch (error) {
     60    assert_equals(error.name, 'OverconstrainedError');
     61    assert_equals(error.constraint, 'torch');
     62    return;
     63  }
     64  assert_unreached('expected applyConstraints to reject');
     65 }, 'MediaStreamTrack.applyConstraints() with unsupported constraint');
     66 
     67 </script>