xrSession_features_deviceSupport.https.html (1902B)
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 <canvas></canvas> 8 <script> 9 10 let testName = 11 "Immersive XRSession requests with no supported device should reject"; 12 13 let fakeDeviceInitParams = { 14 supportsImmersive: true, 15 supportedModes: ["inline", "immersive-vr"], 16 views: VALID_VIEWS, 17 viewerOrigin: IDENTITY_TRANSFORM, 18 supportedFeatures: [ 19 "viewer", 20 "local", 21 "local-floor"] 22 }; 23 24 25 xr_promise_test(testName, 26 (t) => { 27 function session_resolves(sessionMode, sessionInit) { 28 return navigator.xr.requestSession(sessionMode, sessionInit) 29 .then((session) => { 30 return session.end(); 31 }); 32 } 33 34 return navigator.xr.test.simulateDeviceConnection(fakeDeviceInitParams) 35 .then((controller) => 36 promise_simulate_user_activation(() => { 37 // Attempting to request required features that aren't supported by 38 // the device should reject. 39 40 return promise_rejects_dom(t, "NotSupportedError", 41 navigator.xr.requestSession("immersive-vr", { 42 requiredFeatures: ['bounded-floor'] 43 })) 44 }).then(() => promise_simulate_user_activation(() => { 45 // Attempting to request with an unsupported feature as optional 46 // should succeed 47 return session_resolves("immersive-vr", { 48 optionalFeatures: ['bounded-floor'] 49 }); 50 })).then(() => promise_simulate_user_activation(() => { 51 // Attempting to request with supported features only should succeed. 52 return session_resolves("immersive-vr", { 53 requiredFeatures: ['local', 'local-floor'] 54 }) 55 })) 56 ); 57 }); 58 59 </script> 60 </body>