tor-browser

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

MediaStreamTrack-getCapabilities.https.html (6632B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script src="/resources/testdriver.js"></script>
      5 <script src="/resources/testdriver-vendor.js"></script>
      6 <script src="/mediacapture-image/resources/imagecapture-helpers.js"></script>
      7 <script>
      8 
      9 const meteringModeNames = ['none', 'manual', 'single-shot', 'continuous'];
     10 
     11 // This test verifies that MediaTrackCapabilities are returned upon
     12 // MediaStreamTrack.getCapabilities(), with a mock Mojo service implementation.
     13 // When PTZ permission is denied though, PTZ capabilities are not available.
     14 
     15 function makeImageCaptureTest(hasPanTiltZoomPermissionGranted) {
     16  image_capture_test(async (t, imageCaptureTest) => {
     17    const ptzPermission = hasPanTiltZoomPermissionGranted ? 'granted' : 'denied';
     18    await test_driver.set_permission({name: 'camera', panTiltZoom: true},
     19        ptzPermission);
     20 
     21    let mockCapabilities = imageCaptureTest.mockImageCapture().state();
     22 
     23    // |stream| must be created _after_ |mock| is constructed to give the
     24    // latter time to override the bindings.
     25    let stream = await navigator.mediaDevices.getUserMedia({video: true});
     26    assert_equals(stream.getAudioTracks().length, 0);
     27    assert_equals(stream.getVideoTracks().length, 1);
     28 
     29    let videoTrack = stream.getVideoTracks()[0];
     30    assert_equals(typeof videoTrack.getCapabilities, 'function');
     31 
     32    let capabilities = videoTrack.getCapabilities();
     33    assert_equals(typeof capabilities, 'object');
     34 
     35    assert_equals(capabilities.whiteBalanceMode.length,
     36                  mockCapabilities.supportedWhiteBalanceModes.length,
     37                  'whiteBalanceMode');
     38    for (i = 0; i < capabilities.whiteBalanceMode.length; ++i) {
     39      assert_equals(
     40          capabilities.whiteBalanceMode[i],
     41          meteringModeNames[mockCapabilities
     42                                .supportedWhiteBalanceModes[i]],
     43          'whiteBalanceMode');
     44    }
     45 
     46    assert_equals(capabilities.exposureMode.length,
     47                  mockCapabilities.supportedExposureModes.length,
     48                  'exposureMode');
     49    for (i = 0; i < capabilities.exposureMode.length; ++i) {
     50      assert_equals(
     51          capabilities.exposureMode[i],
     52          meteringModeNames[mockCapabilities.supportedExposureModes[i]],
     53          'exposureMode');
     54    }
     55 
     56    assert_equals(capabilities.focusMode.length,
     57                  mockCapabilities.supportedFocusModes.length,
     58                  'focusMode');
     59    for (i = 0; i < capabilities.focusMode.length; ++i) {
     60      assert_equals(
     61          capabilities.focusMode[i],
     62          meteringModeNames[mockCapabilities.supportedFocusModes[i]],
     63          'focusMode');
     64    }
     65 
     66    assert_equals(capabilities.exposureCompensation.max,
     67                  mockCapabilities.exposureCompensation.max);
     68    assert_equals(capabilities.exposureCompensation.min,
     69                  mockCapabilities.exposureCompensation.min);
     70    assert_equals(capabilities.exposureCompensation.step,
     71                  mockCapabilities.exposureCompensation.step);
     72 
     73    assert_equals(capabilities.exposureTime.max,
     74                  mockCapabilities.exposureTime.max);
     75    assert_equals(capabilities.exposureTime.min,
     76                  mockCapabilities.exposureTime.min);
     77    assert_equals(capabilities.exposureTime.step,
     78                  mockCapabilities.exposureTime.step);
     79 
     80    assert_equals(capabilities.colorTemperature.max,
     81                  mockCapabilities.colorTemperature.max);
     82    assert_equals(capabilities.colorTemperature.min,
     83                  mockCapabilities.colorTemperature.min);
     84    assert_equals(capabilities.colorTemperature.step,
     85                  mockCapabilities.colorTemperature.step);
     86 
     87    assert_equals(capabilities.iso.max, mockCapabilities.iso.max);
     88    assert_equals(capabilities.iso.min, mockCapabilities.iso.min);
     89    assert_equals(capabilities.iso.step, mockCapabilities.iso.step);
     90 
     91    assert_equals(capabilities.brightness.max,
     92                  mockCapabilities.brightness.max);
     93    assert_equals(capabilities.brightness.min,
     94                  mockCapabilities.brightness.min);
     95    assert_equals(capabilities.brightness.step,
     96                  mockCapabilities.brightness.step);
     97 
     98    assert_equals(capabilities.contrast.max,
     99                  mockCapabilities.contrast.max);
    100    assert_equals(capabilities.contrast.min,
    101                  mockCapabilities.contrast.min);
    102    assert_equals(capabilities.contrast.step,
    103                  mockCapabilities.contrast.step);
    104 
    105    assert_equals(capabilities.saturation.max,
    106                  mockCapabilities.saturation.max);
    107    assert_equals(capabilities.saturation.min,
    108                  mockCapabilities.saturation.min);
    109    assert_equals(capabilities.saturation.step,
    110                  mockCapabilities.saturation.step);
    111 
    112    assert_equals(capabilities.sharpness.max,
    113                  mockCapabilities.sharpness.max);
    114    assert_equals(capabilities.sharpness.min,
    115                  mockCapabilities.sharpness.min);
    116    assert_equals(capabilities.sharpness.step,
    117                  mockCapabilities.sharpness.step);
    118 
    119    assert_equals(capabilities.focusDistance.max,
    120                  mockCapabilities.focusDistance.max);
    121    assert_equals(capabilities.focusDistance.min,
    122                  mockCapabilities.focusDistance.min);
    123    assert_equals(capabilities.focusDistance.step,
    124                  mockCapabilities.focusDistance.step);
    125 
    126    if (ptzPermission === 'granted') {
    127      assert_equals(capabilities.pan.max, mockCapabilities.pan.max);
    128      assert_equals(capabilities.pan.min, mockCapabilities.pan.min);
    129      assert_equals(capabilities.pan.step, mockCapabilities.pan.step);
    130 
    131      assert_equals(capabilities.tilt.max, mockCapabilities.tilt.max);
    132      assert_equals(capabilities.tilt.min, mockCapabilities.tilt.min);
    133      assert_equals(capabilities.tilt.step, mockCapabilities.tilt.step);
    134 
    135      assert_equals(capabilities.zoom.max, mockCapabilities.zoom.max);
    136      assert_equals(capabilities.zoom.min, mockCapabilities.zoom.min);
    137      assert_equals(capabilities.zoom.step, mockCapabilities.zoom.step);
    138    } else if (ptzPermission === 'denied') {
    139      assert_false('pan' in capabilities);
    140      assert_false('tilt' in capabilities);
    141      assert_false('zoom' in capabilities);
    142    }
    143 
    144    assert_equals(capabilities.torch, mockCapabilities.supportsTorch,
    145                  'torch');
    146  });
    147 }
    148 
    149 generate_tests(makeImageCaptureTest, [
    150  [
    151    "exercises MediaStreamTrack.getCapabilities() with PTZ permission denied",
    152    false,
    153  ],
    154  [
    155    "exercises MediaStreamTrack.getCapabilities() with PTZ permission granted",
    156    true,
    157  ],
    158 ]);
    159 </script>