| <!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 testName = |
| "Inline viewer support with no device"; |
| |
| // Purposefully not connecting a device to ensure that viewer is always |
| // supported if that is the only feature requested. |
| xr_promise_test(testName, |
| (t) => { |
| function session_resolves(sessionMode, sessionInit) { |
| return navigator.xr.requestSession(sessionMode, sessionInit) |
| .then(session => session.end()); |
| } |
| |
| function session_rejects(expected, sessionMode, sessionInit) { |
| return promise_rejects_dom(t, expected, navigator.xr.requestSession(sessionMode, sessionInit) |
| .then(session => session.end())); |
| } |
| |
| return session_resolves('inline', { |
| // RequestSession with 'viewer' as a required featre should succeed, even |
| // without user activation. |
| requiredFeatures: ['viewer'] |
| }) |
| .then(() => { |
| // RequestSession with 'viewer' as an optional feature should succeed, even |
| // without user activation. |
| return session_resolves('inline', { |
| optionalFeatures: ['viewer'] |
| }) |
| }) |
| .then(() => { |
| // RequestSession with no requirements should succeed. |
| return session_resolves('inline', {}); |
| }) |
| .then(() => { |
| // RequestSession with non-viewer optional features should fail |
| // without user activation. |
| return session_rejects("SecurityError", 'inline', { |
| optionalFeatures: ['local'] |
| }); |
| }) |
| .then(() => { |
| // RequestSession with non-viewer required features should fail |
| // without user activation. |
| return session_rejects("SecurityError", 'inline', { |
| optionalFeatures: ['local'] |
| }); |
| }) |
| .then(() => promise_simulate_user_activation(() => { |
| // RequestSession with unsupported optional features should succeed. |
| return session_resolves('inline', { |
| requiredFeatures: ['viewer'], |
| optionalFeatures: ['local'] |
| }) |
| })) |
| .then(() => promise_simulate_user_activation(() => { |
| // Request with unsupported required features should reject. |
| return session_rejects("NotSupportedError", 'inline', { |
| requiredFeatures: ['local'] |
| }); |
| })); |
| }); |
| |
| </script> |
| </body> |