xrSession_viewer_availability.https.html (2434B)
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 "Inline viewer support with no device"; 12 13 // Purposefully not connecting a device to ensure that viewer is always 14 // supported if that is the only feature requested. 15 xr_promise_test(testName, 16 (t) => { 17 function session_resolves(sessionMode, sessionInit) { 18 return navigator.xr.requestSession(sessionMode, sessionInit) 19 .then(session => session.end()); 20 } 21 22 function session_rejects(expected, sessionMode, sessionInit) { 23 return promise_rejects_dom(t, expected, navigator.xr.requestSession(sessionMode, sessionInit) 24 .then(session => session.end())); 25 } 26 27 return session_resolves('inline', { 28 // RequestSession with 'viewer' as a required featre should succeed, even 29 // without user activation. 30 requiredFeatures: ['viewer'] 31 }) 32 .then(() => { 33 // RequestSession with 'viewer' as an optional feature should succeed, even 34 // without user activation. 35 return session_resolves('inline', { 36 optionalFeatures: ['viewer'] 37 }) 38 }) 39 .then(() => { 40 // RequestSession with no requirements should succeed. 41 return session_resolves('inline', {}); 42 }) 43 .then(() => { 44 // RequestSession with non-viewer optional features should fail 45 // without user activation. 46 return session_rejects("SecurityError", 'inline', { 47 optionalFeatures: ['local'] 48 }); 49 }) 50 .then(() => { 51 // RequestSession with non-viewer required features should fail 52 // without user activation. 53 return session_rejects("SecurityError", 'inline', { 54 optionalFeatures: ['local'] 55 }); 56 }) 57 .then(() => promise_simulate_user_activation(() => { 58 // RequestSession with unsupported optional features should succeed. 59 return session_resolves('inline', { 60 requiredFeatures: ['viewer'], 61 optionalFeatures: ['local'] 62 }) 63 })) 64 .then(() => promise_simulate_user_activation(() => { 65 // Request with unsupported required features should reject. 66 return session_rejects("NotSupportedError", 'inline', { 67 requiredFeatures: ['local'] 68 }); 69 })); 70 }); 71 72 </script> 73 </body>