1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
<!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>
|