| <!DOCTYPE html> |
| <body> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src="resources/webxr_util.js"></script> |
| <script src="resources/webxr_test_constants.js"></script> |
| <canvas></canvas> |
| <script> |
| |
| let immersiveTestName = |
| "Immersive XRSession requestReferenceSpace returns expected objects"; |
| let nonImmersiveTestName = |
| "Non-immersive XRSession requestReferenceSpace returns expected objects"; |
| |
| let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; |
| |
| let testFunction = function(session, fakeDeviceController, t) { |
| return promise_rejects(t, new TypeError(), session.requestReferenceSpace('foo')) |
| .then(() => Promise.all([ |
| session.requestReferenceSpace('viewer').then( (referenceSpace) => { |
| t.step(() => { |
| assert_true(referenceSpace instanceof XRSpace, |
| "identity reference space is not correct type."); |
| assert_true(referenceSpace instanceof XRReferenceSpace, |
| "identity reference space is not correct type."); |
| }); |
| }), |
| session.requestReferenceSpace('local').then( (referenceSpace) => { |
| t.step(() => { |
| assert_true(referenceSpace instanceof XRSpace, |
| "eye-level stationary reference space is not correct type."); |
| assert_true(referenceSpace instanceof XRReferenceSpace, |
| "eye-level stationary reference space is not correct type."); |
| }); |
| }), |
| session.requestReferenceSpace('local-floor').then( (referenceSpace) => { |
| t.step(() => { |
| assert_true(referenceSpace instanceof XRSpace, |
| "floor-level stationary reference space is not correct type."); |
| assert_true(referenceSpace instanceof XRReferenceSpace, |
| "floor-level stationary reference space is not correct type."); |
| }); |
| }) |
| ])) |
| .then(() => { |
| if (!session.immersive) { |
| // Bounded reference spaces are not allowed in inline sessions. |
| return promise_rejects(t, "NotSupportedError", session.requestReferenceSpace('bounded-floor')) |
| } |
| }) |
| .then(() => { |
| if (!session.immersive) { |
| // Unbounded reference spaces are not allowed in inline sessions. |
| return promise_rejects(t, "NotSupportedError", session.requestReferenceSpace('unbounded')) |
| } |
| }) |
| }; |
| |
| xr_session_promise_test( |
| immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr'); |
| xr_session_promise_test( |
| nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline'); |
| |
| </script> |
| </body> |