tor-browser

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

MediaStreamTrack-getSettings.https.html (3595B)


      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 the settings defined in the mock Mojo service
     12 // implementation are the same as those returned by the corresponding
     13 // MediaStreamTrack.getSettings(), except for PTZ settings when PTZ
     14 // permission is denied.
     15 
     16 function makeImageCaptureTest(hasPanTiltZoomPermissionGranted) {
     17  image_capture_test(async (t, imageCaptureTest) => {
     18    const ptzPermission = hasPanTiltZoomPermissionGranted ? 'granted' : 'denied';
     19    await test_driver.set_permission({name: 'camera', panTiltZoom: true},
     20        ptzPermission);
     21 
     22    let mockSettings = imageCaptureTest.mockImageCapture().state();
     23 
     24    // |stream| must be created _after_ |mock| is constructed to give the
     25    // latter time to override the bindings.
     26    let stream = await navigator.mediaDevices.getUserMedia({video: true});
     27    let videoTrack = stream.getVideoTracks()[0];
     28 
     29    // |videoTrack|s settings retrieval, just like the actual capture, is a
     30    // process kicked right after creation, we introduce a small delay to
     31    // allow for those to be collected.
     32    await new Promise(resolve => step_timeout(resolve, 100));
     33 
     34    let settings = videoTrack.getSettings();
     35    assert_equals(typeof settings, 'object');
     36 
     37    assert_equals(settings.whiteBalanceMode,
     38                  meteringModeNames[mockSettings.currentWhiteBalanceMode],
     39                  'whiteBalanceMode');
     40    assert_equals(settings.exposureMode,
     41                  meteringModeNames[mockSettings.currentExposureMode],
     42                  'exposureMode;');
     43    assert_equals(settings.focusMode,
     44                  meteringModeNames[mockSettings.currentFocusMode],
     45                  'focusMode');
     46 
     47    assert_point2d_array_approx_equals(
     48        settings.pointsOfInterest, mockSettings.pointsOfInterest, 0.01);
     49 
     50    assert_equals(settings.exposureCompensation,
     51                  mockSettings.exposureCompensation.current);
     52    assert_equals(settings.exposureTime,
     53                  mockSettings.exposureTime.current);
     54    assert_equals(settings.colorTemperature,
     55                  mockSettings.colorTemperature.current);
     56    assert_equals(settings.iso, mockSettings.iso.current);
     57 
     58    assert_equals(settings.brightness, mockSettings.brightness.current);
     59    assert_equals(settings.contrast, mockSettings.contrast.current);
     60    assert_equals(settings.saturation, mockSettings.saturation.current);
     61    assert_equals(settings.sharpness, mockSettings.sharpness.current);
     62 
     63    assert_equals(settings.focusDistance, mockSettings.focusDistance.current);
     64 
     65    if (ptzPermission === 'granted') {
     66      assert_equals(settings.pan, mockSettings.pan.current);
     67      assert_equals(settings.tilt, mockSettings.tilt.current);
     68      assert_equals(settings.zoom, mockSettings.zoom.current);
     69    } else if (ptzPermission === 'denied') {
     70      assert_false('pan' in settings);
     71      assert_false('tilt' in settings);
     72      assert_false('zoom' in settings);
     73    }
     74 
     75    assert_equals(settings.torch, mockSettings.torch, 'torch');
     76  });
     77 }
     78 
     79 generate_tests(makeImageCaptureTest, [
     80  [
     81    "exercises MediaStreamTrack.getSettings() with PTZ permission denied",
     82    false,
     83  ],
     84  [
     85    "exercises MediaStreamTrack.getSettings() with PTZ permission granted",
     86    true,
     87  ],
     88 ]);
     89 </script>