tor-browser

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

dataUnavailableTests.js (1807B)


      1 'use strict';
      2 
      3 const TestStates = Object.freeze({
      4  "ShouldSucceedScheduleRAF": 1,
      5  "ShouldFailScheduleRAF": 2,
      6  "ShouldSucceedTestDone": 3,
      7 });
      8 
      9 const dataUnavailableTestFunction = function(session, controller, t, sessionObjects) {
     10  let state = TestStates.ShouldSucceedScheduleRAF;
     11  const isCpuOptimized = session.depthUsage === 'cpu-optimized';
     12 
     13  return session.requestReferenceSpace('viewer').then((viewerSpace) => {
     14    let done = false;
     15 
     16    const glBinding = new XRWebGLBinding(session, sessionObjects.gl);
     17 
     18    const rafCb = function(time, frame) {
     19      const pose = frame.getViewerPose(viewerSpace);
     20      for(const view of pose.views) {
     21        const depthInformation = isCpuOptimized ? frame.getDepthInformation(view)
     22                                                : glBinding.getDepthInformation(view);
     23 
     24        if (state == TestStates.ShouldSucceedScheduleRAF
     25        || state == TestStates.ShouldSucceedTestDone) {
     26          t.step(() => {
     27            assert_not_equals(depthInformation, null);
     28          });
     29        } else {
     30          t.step(() => {
     31            assert_equals(depthInformation, null);
     32          });
     33        }
     34      }
     35 
     36      switch(state) {
     37        case TestStates.ShouldSucceedScheduleRAF:
     38          controller.clearDepthSensingData();
     39          state = TestStates.ShouldFailScheduleRAF;
     40          session.requestAnimationFrame(rafCb);
     41          break;
     42        case TestStates.ShouldFailScheduleRAF:
     43          controller.setDepthSensingData(DEPTH_SENSING_DATA);
     44          state = TestStates.ShouldSucceedTestDone;
     45          session.requestAnimationFrame(rafCb);
     46          break;
     47        case TestStates.ShouldSucceedTestDone:
     48          done = true;
     49          break;
     50      }
     51    };
     52 
     53    session.requestAnimationFrame(rafCb);
     54 
     55    return t.step_wait(() => done);
     56  });
     57 };