mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Make webxr test use async/await
This commit is contained in:
parent
8e783577d2
commit
167ea556ce
2 changed files with 750 additions and 2206 deletions
File diff suppressed because it is too large
Load diff
|
@ -8,26 +8,21 @@
|
|||
<canvas id="canvas" width="640" height="480"></canvas>
|
||||
|
||||
<script>
|
||||
let session;
|
||||
let mock;
|
||||
let canvas = document.getElementById("canvas");
|
||||
let gl = canvas.getContext('webgl');
|
||||
|
||||
promise_test(function() {
|
||||
return navigator.xr.test.simulateDeviceConnection({supportsImmersive: true}).then((m) => {
|
||||
mock = m;
|
||||
promise_test(async function() {
|
||||
let mock = await navigator.xr.test.simulateDeviceConnection({supportsImmersive: true});
|
||||
mock.setViewerOrigin({position: [0.5, 0, 0, 1], orientation: [0, 0, 0, 1] });
|
||||
mock.setViews(TEST_VIEWS);
|
||||
return navigator.xr.requestSession({mode: "immersive-vr"});
|
||||
})
|
||||
.then((s) => {
|
||||
session = s;
|
||||
return session.updateRenderState({"baseLayer": new XRWebGLLayer(session, gl, {})})
|
||||
})
|
||||
.then(() => {
|
||||
return new Promise(function(resolve, reject) {
|
||||
session.requestAnimationFrame(function(time, frame) {
|
||||
session.requestReferenceSpace("local").then((space) => {
|
||||
let session = await navigator.xr.requestSession({mode: "immersive-vr"});
|
||||
await session.updateRenderState({"baseLayer": new XRWebGLLayer(session, gl, {})});
|
||||
let resolve;
|
||||
|
||||
let frame = await new Promise(resolve => {
|
||||
session.requestAnimationFrame((time, frame) => resolve(frame));
|
||||
});
|
||||
|
||||
let space = await session.requestReferenceSpace("local");
|
||||
let pose = frame.getViewerPose(space);
|
||||
for (view of pose.views) {
|
||||
assert_matrix_approx_equals(view.projectionMatrix, VALID_PROJECTION_MATRIX, 0.001, "left projection matrix");
|
||||
|
@ -47,16 +42,11 @@
|
|||
assert_approx_equals(position.z, 0, 0.001, "left z value");
|
||||
assert_approx_equals(position.w, 1, 0.001, "left w value");
|
||||
} else {
|
||||
reject("got unknown view");
|
||||
throw "got unknown view";
|
||||
}
|
||||
}
|
||||
resolve();
|
||||
}).catch((e) => reject(e));
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue