| <!DOCTYPE html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../../resources/webxr_util.js"></script> |
| <script src="../../resources/webxr_test_asserts.js"></script> |
| <script src="../../resources/webxr_test_constants.js"></script> |
| <script src="../../resources/webxr_test_constants_fake_depth.js"></script> |
| <script src="../incorrectUsageTests.js"></script> |
| |
| <script> |
| |
| const fakeDeviceInitParams = { |
| supportedModes: ["immersive-ar"], |
| views: VALID_VIEWS, |
| supportedFeatures: ALL_FEATURES, |
| }; |
| |
| const incorrectUsagetestFunctionTryGetWebGLOnCpu = function (session, controller, t, sessionObjects) { |
| return session.requestReferenceSpace('viewer').then((viewerSpace) => { |
| let done = false; |
| |
| const glBinding = new XRWebGLBinding(session, sessionObjects.gl); |
| |
| session.requestAnimationFrame((time, frame) => { |
| const pose = frame.getViewerPose(viewerSpace); |
| for(const view of pose.views) { |
| t.step(() => { |
| assert_throws_dom("InvalidStateError", () => glBinding.getDepthInformation(view), |
| "XRWebGLBinding.getDepthInformation() should throw when depth sensing is in `cpu-optimized` usage mode"); |
| }); |
| } |
| |
| done = true; |
| }); |
| |
| return t.step_wait(() => done); |
| }); |
| }; |
| |
| xr_session_promise_test("Ensures XRWebGLDepthInformation is not obtainable in `cpu-optimized` usage mode", |
| incorrectUsagetestFunctionTryGetWebGLOnCpu, |
| fakeDeviceInitParams, |
| 'immersive-ar', { |
| requiredFeatures: ['depth-sensing'], |
| depthSensing: VALID_DEPTH_CONFIG_CPU_USAGE, |
| }); |
| |
| </script> |