| <!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> | |
| <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_js(t, 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.mode == 'inline') { | |
| // Bounded reference spaces are not allowed in inline sessions. | |
| return promise_rejects_dom(t, "NotSupportedError", session.requestReferenceSpace('bounded-floor')) | |
| } | |
| }) | |
| .then(() => { | |
| if (session.mode == 'inline') { | |
| // Unbounded reference spaces are not allowed in inline sessions. | |
| return promise_rejects_dom(t, "NotSupportedError", session.requestReferenceSpace('unbounded')) | |
| } | |
| }) | |
| }; | |
| // Reference spaces that aren't included in the default feature list must | |
| // be specified as a required or optional features on session creation. | |
| xr_session_promise_test( | |
| immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr', | |
| {requiredFeatures: ['local-floor'], | |
| optionalFeatures: ['bounded-floor', 'unbounded']}); | |
| xr_session_promise_test( | |
| nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline', | |
| {requiredFeatures: ['local'], | |
| optionalFeatures: ['local-floor']}); | |
| </script> | |
| </body> |