xrSession_requestReferenceSpace.https.html (3097B)
1 <!DOCTYPE html> 2 <body> 3 <script src=/resources/testharness.js></script> 4 <script src=/resources/testharnessreport.js></script> 5 <script src="resources/webxr_util.js"></script> 6 <script src="resources/webxr_test_constants.js"></script> 7 <script> 8 9 let immersiveTestName = 10 "Immersive XRSession requestReferenceSpace returns expected objects"; 11 let nonImmersiveTestName = 12 "Non-immersive XRSession requestReferenceSpace returns expected objects"; 13 14 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; 15 16 let testFunction = function(session, fakeDeviceController, t) { 17 return promise_rejects_js(t, TypeError, session.requestReferenceSpace('foo')) 18 .then(() => Promise.all([ 19 session.requestReferenceSpace('viewer').then( (referenceSpace) => { 20 t.step(() => { 21 assert_true(referenceSpace instanceof XRSpace, 22 "identity reference space is not correct type."); 23 assert_true(referenceSpace instanceof XRReferenceSpace, 24 "identity reference space is not correct type."); 25 }); 26 }), 27 session.requestReferenceSpace('local').then( (referenceSpace) => { 28 t.step(() => { 29 assert_true(referenceSpace instanceof XRSpace, 30 "eye-level stationary reference space is not correct type."); 31 assert_true(referenceSpace instanceof XRReferenceSpace, 32 "eye-level stationary reference space is not correct type."); 33 }); 34 }), 35 session.requestReferenceSpace('local-floor').then( (referenceSpace) => { 36 t.step(() => { 37 assert_true(referenceSpace instanceof XRSpace, 38 "floor-level stationary reference space is not correct type."); 39 assert_true(referenceSpace instanceof XRReferenceSpace, 40 "floor-level stationary reference space is not correct type."); 41 }); 42 }) 43 ])) 44 .then(() => { 45 if (session.mode == 'inline') { 46 // Bounded reference spaces are not allowed in inline sessions. 47 return promise_rejects_dom(t, "NotSupportedError", session.requestReferenceSpace('bounded-floor')) 48 } 49 }) 50 .then(() => { 51 if (session.mode == 'inline') { 52 // Unbounded reference spaces are not allowed in inline sessions. 53 return promise_rejects_dom(t, "NotSupportedError", session.requestReferenceSpace('unbounded')) 54 } 55 }) 56 }; 57 58 // Reference spaces that aren't included in the default feature list must 59 // be specified as a required or optional features on session creation. 60 xr_session_promise_test( 61 immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr', 62 {requiredFeatures: ['local-floor'], 63 optionalFeatures: ['bounded-floor', 'unbounded']}); 64 xr_session_promise_test( 65 nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline', 66 {requiredFeatures: ['local'], 67 optionalFeatures: ['local-floor']}); 68 69 </script> 70 </body>