summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webxr/depth-sensing/staleViewsTests.js
blob: b1f11c9651d8d85e0acbb1123c35216857dfdf5b (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
37
38
39
'use strict';

const staleViewsTestFunctionGenerator = function(isCpuOptimized) {
  return (session, controller, t, sessionObjects) => {
    let done = false;

    const staleViews = new Set();

    return session.requestReferenceSpace('viewer').then((viewerSpace) => {
      const glBinding = new XRWebGLBinding(session, sessionObjects.gl);

      const secondRafCb = function(time, frame) {
        for(const view of staleViews) {
          t.step(() => {
            assert_throws_dom("InvalidStateError",
                                () => isCpuOptimized ? frame.getDepthInformation(view)
                                                     : glBinding.getDepthInformation(view),
                                "getDepthInformation() should throw when run with stale XRView");
          });
        }

        done = true;
      };

      const firstRafCb = function(time, frame) {
        const pose = frame.getViewerPose(viewerSpace);
        for(const view of pose.views) {
          staleViews.add(view);
        }

        session.requestAnimationFrame(secondRafCb);
      };

      session.requestAnimationFrame(firstRafCb);

      return t.step_wait(() => done);
    });
  };
};