Update web-platform-tests to revision 6fa9de7201cd41564d02c3edd62365aeb40e171b

This commit is contained in:
WPT Sync Bot 2019-07-20 10:25:14 +00:00
parent 60f1ffc5a7
commit dc1f7ba3ec
124 changed files with 2052 additions and 849 deletions

View file

@ -25,7 +25,7 @@ function xr_promise_test(name, func, properties) {
// device, and the test object.
// Requires a webglCanvas on the page.
function xr_session_promise_test(
name, func, fakeDeviceInit, sessionMode, properties) {
name, func, fakeDeviceInit, sessionMode, sessionInit, properties) {
let testDeviceController;
let testSession;
@ -39,7 +39,22 @@ function xr_session_promise_test(
xr_promise_test(
name,
(t) =>{
(t) => {
// Ensure that any pending sessions are ended and devices are
// disconnected when done. This needs to use a cleanup function to
// ensure proper sequencing. If this were done in a .then() for the
// success case, a test that expected failure would already be marked
// done at the time that runs, and the shutdown would interfere with
// the next test which may have started already.
t.add_cleanup(async () => {
// If a session was created, end it.
if (testSession) {
await testSession.end().catch(() => {});
}
// Cleanup system state.
await navigator.xr.test.disconnectAllDevices();
});
return navigator.xr.test.simulateDeviceConnection(fakeDeviceInit)
.then((controller) => {
testDeviceController = controller;
@ -48,7 +63,7 @@ function xr_session_promise_test(
.then(() => new Promise((resolve, reject) => {
// Perform the session request in a user gesture.
navigator.xr.test.simulateUserActivation(() => {
navigator.xr.requestSession(sessionMode)
navigator.xr.requestSession(sessionMode, sessionInit || {})
.then((session) => {
testSession = session;
session.mode = sessionMode;
@ -71,13 +86,8 @@ function xr_session_promise_test(
' with error: ' + err);
});
});
}))
.then(() => {
// Cleanup system state.
testSession.end().catch(() => {});
return navigator.xr.test.disconnectAllDevices();
})
},
}));
},
properties);
}

View file

@ -11,5 +11,17 @@
(session) => {
assert_not_equals(session, null);
}, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr');
xr_session_promise_test(
"Tests requestSession accepts XRSessionInit dictionary",
(session) => {
assert_not_equals(session, null);
}, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', {});
xr_session_promise_test(
"Tests requestSession ignores unknown optionalFeatures",
(session) => {
assert_not_equals(session, null);
}, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', {optionalFeatures: ['unicorns']});
</script>
</body>

View file

@ -0,0 +1,27 @@
<!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>
xr_session_promise_test(
"Tests requestSession accepts XRSessionInit dictionary",
(session) => {
assert_not_equals(session, null);
}, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', {});
xr_session_promise_test(
"Tests requestSession accepts XRSessionInit dictionary with empty feature lists",
(session) => {
assert_not_equals(session, null);
}, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', {requiredFeatures: [], optionalFeatures: []});
xr_session_promise_test(
"Tests requestSession ignores unknown optionalFeatures",
(session) => {
assert_not_equals(session, null);
}, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', {optionalFeatures: ['unicorns']});
</script>
</body>

View file

@ -0,0 +1,27 @@
<!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>
xr_promise_test(
"Tests requestSession rejects for unknown requiredFeatures",
(t) => {
return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE)
.then( (controller) => new Promise((resolve) => {
navigator.xr.test.simulateUserActivation( () => {
resolve(promise_rejects(
t,
"NotSupportedError",
navigator.xr.requestSession('immersive-vr',
{requiredFeatures: ['undefined-unicorns']}),
"unexpected requestSession success"
))
});
}));
});
</script>
</body>

View file

@ -56,10 +56,16 @@
})
};
// Reference spaces that aren't included in the default feature list must
// be specified as a required or optional features on session creation.
xr_session_promise_test(
immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr');
immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr',
{requiredFeatures: ['local-floor'],
optionalFeatures: ['bounded-floor', 'unbounded']});
xr_session_promise_test(
nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline');
nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline',
{requiredFeatures: ['local'],
optionalFeatures: ['local-floor']});
</script>
</body>

View file

@ -0,0 +1,83 @@
<!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 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(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>