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
83
84
85
86
87
|
<!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>
const testName = "Validate enabledFeatures on XRSession";
const supportedFeatureList = [
'viewer',
'local',
'local-floor',
'anchors',
'hit-test',
'dom-overlay'
];
const fakeDeviceInitParams = {
supportsImmersive: true,
supportedModes: ["inline", "immersive-vr"],
views: VALID_VIEWS,
viewerOrigin: IDENTITY_TRANSFORM,
supportedFeatures: supportedFeatureList
};
// NOTE: We explicit don't ask for the 'default' features of viewer/local to
// verify that they are being added here.
const requestFeatures = [
'local-floor',
'anchors',
'secondary-views',
'camera-access',
];
const testFunction = function(session, fakeDeviceController, t) {
return new Promise((resolve,reject) => {
const unsupportedRequestedFeatures = [];
for (const feature of requestFeatures) {
if (!supportedFeatureList.includes(feature))
unsupportedRequestedFeatures.push(feature);
}
const enabledFeatures = session.enabledFeatures;
const modeDefaultFeatures = DEFAULT_FEATURES[session.mode];
t.step(() => {
// Whether they were requested or not, all Default features should be
// enabled.
for (const feature of modeDefaultFeatures) {
assert_true(enabledFeatures.includes(feature),
"Did not support default feature: " + feature);
}
// Assert that we asked for everything that was included apart from the
// default features
for (const feature of enabledFeatures) {
assert_true(requestFeatures.includes(feature) ||
modeDefaultFeatures.includes(feature),
"Enabled unrequested feature: " + feature);
}
// Assert that all of the features we asked are either excluded because
// they were unsupported, or included because they were supported.
for (const feature of requestFeatures) {
if (unsupportedRequestedFeatures.includes(feature)) {
assert_false(enabledFeatures.includes(feature),
"Enabled supposedly unsupported feature: " + feature);
} else {
assert_true(enabledFeatures.includes(feature),
"Did not enable supposedly supported feature: " + feature);
}
}
});
resolve();
});
};
xr_session_promise_test(testName, testFunction,
fakeDeviceInitParams, 'immersive-vr', { optionalFeatures: requestFeatures });
</script>
</body>
|