87 lines
2.6 KiB
HTML
87 lines
2.6 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>
|
|
<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>
|