82 lines
3.7 KiB
HTML
82 lines
3.7 KiB
HTML
<!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 makeSpaceTest = (space_type) => {
|
|
return (session, fakeDeviceController, t) => {
|
|
return session.requestReferenceSpace(space_type).then( (referenceSpace) => {
|
|
t.step(() => {
|
|
assert_true(referenceSpace instanceof XRReferenceSpace,
|
|
"reference space is not correct type.");
|
|
});
|
|
});
|
|
};
|
|
};
|
|
|
|
let makeInvalidSpaceTest = (space_type) => {
|
|
return (session, fakeDeviceController, t) => {
|
|
return promise_rejects_dom(t, "NotSupportedError",
|
|
session.requestReferenceSpace(space_type),
|
|
"requestReferenceSpace('" + space_type + "')");
|
|
};
|
|
};
|
|
|
|
let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
|
|
|
|
// Test that reference spaces matching default features work.
|
|
xr_session_promise_test(
|
|
"Non-immersive session supports viewer space by default",
|
|
makeSpaceTest('viewer'), fakeDeviceInitParams, 'inline', {});
|
|
xr_session_promise_test(
|
|
"Immersive session supports viewer space by default",
|
|
makeSpaceTest('viewer'), fakeDeviceInitParams, 'immersive-vr', {});
|
|
xr_session_promise_test(
|
|
"Immersive session supports local space by default",
|
|
makeSpaceTest('local'), fakeDeviceInitParams, 'immersive-vr', {});
|
|
|
|
// Test that session-appropriate non-default reference spaces work when requested
|
|
xr_session_promise_test(
|
|
"Non-immersive session supports local space when required",
|
|
makeSpaceTest('local'), fakeDeviceInitParams, 'inline',
|
|
{requiredFeatures: ['local']});
|
|
xr_session_promise_test(
|
|
"Non-immersive session supports local space when optional",
|
|
makeSpaceTest('local'), fakeDeviceInitParams, 'inline',
|
|
{optionalFeatures: ['local']});
|
|
xr_session_promise_test(
|
|
"Non-immersive session supports local-floor space when required",
|
|
makeSpaceTest('local-floor'), fakeDeviceInitParams, 'inline',
|
|
{requiredFeatures: ['local-floor']});
|
|
xr_session_promise_test(
|
|
"Immersive session supports local-floor space when required",
|
|
makeSpaceTest('local-floor'), fakeDeviceInitParams, 'immersive-vr',
|
|
{requiredFeatures: ['local-floor']});
|
|
xr_session_promise_test(
|
|
"Immersive session supports local-floor space when optional",
|
|
makeSpaceTest('local-floor'), fakeDeviceInitParams, 'immersive-vr',
|
|
{optionalFeatures: ['local-floor']});
|
|
|
|
// Test that inline space can't request 'bounded-floor' or 'unbounded'
|
|
xr_session_promise_test(
|
|
"Non-immersive session rejects bounded-floor space even when requested",
|
|
makeInvalidSpaceTest('bounded-floor'), fakeDeviceInitParams, 'inline',
|
|
{optionalFeatures: ['bounded-floor']});
|
|
xr_session_promise_test(
|
|
"Non-immersive session rejects unbounded space even when requested",
|
|
makeInvalidSpaceTest('unbounded'), fakeDeviceInitParams, 'inline',
|
|
{optionalFeatures: ['unbounded']});
|
|
|
|
// Test that reference spaces that aren't default features are rejected
|
|
// when not requested as a feature.
|
|
xr_session_promise_test(
|
|
"Non-immersive session rejects local space if not requested",
|
|
makeInvalidSpaceTest('local'), fakeDeviceInitParams, 'inline', {});
|
|
xr_session_promise_test(
|
|
"Immersive session rejects local-floor space if not requested",
|
|
makeInvalidSpaceTest('local-floor'), fakeDeviceInitParams, 'immersive-vr', {});
|
|
</script>
|
|
</body>
|