Make webxr test use async/await

This commit is contained in:
Manish Goregaokar 2019-06-12 10:39:04 -07:00
parent 8e783577d2
commit 167ea556ce
2 changed files with 750 additions and 2206 deletions

File diff suppressed because it is too large Load diff

View file

@ -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>