summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webxr/depth-sensing/inactiveFrameTests.js
blob: b310f01ef871a248bdde3da0efef6b2126f13cd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'use strict';

const inactiveFrameTestFunctionGenerator = function(isCpuOptimized) {
  return (session, controller, t, sessionObjects) => {
    return session.requestReferenceSpace('viewer').then((viewerSpace) => {
      let callbacksKickedOff = false;
      let callbackCounter = 0;

      const glBinding = new XRWebGLBinding(session, sessionObjects.gl);

      const rafCb = function(time, frame) {
        const pose = frame.getViewerPose(viewerSpace);
        for(const view of pose.views) {
          const callback = () => {
            t.step(() => {
              assert_throws_dom("InvalidStateError",
                                () => isCpuOptimized ? frame.getDepthInformation(view)
                                                     : glBinding.getDepthInformation(view),
                                "getDepthInformation() should throw when ran outside RAF");
            });
            callbackCounter--;
          }

          t.step_timeout(callback, 10);
          callbackCounter++;
        }

        callbacksKickedOff = true;
      };

      session.requestAnimationFrame(rafCb);

      return t.step_wait(() => callbacksKickedOff && (callbackCounter == 0));
    });
  };
};