mirror of
https://github.com/servo/servo.git
synced 2025-08-18 03:45:33 +01:00
Update web-platform-tests to revision 6fa9de7201cd41564d02c3edd62365aeb40e171b
This commit is contained in:
parent
60f1ffc5a7
commit
dc1f7ba3ec
124 changed files with 2052 additions and 849 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
Loading…
Add table
Add a link
Reference in a new issue