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> <canvas id="canvas" width="640" height="480"></canvas>
<script> <script>
let session;
let mock;
let canvas = document.getElementById("canvas"); let canvas = document.getElementById("canvas");
let gl = canvas.getContext('webgl'); let gl = canvas.getContext('webgl');
promise_test(async function() {
promise_test(function() { let mock = await navigator.xr.test.simulateDeviceConnection({supportsImmersive: true});
return navigator.xr.test.simulateDeviceConnection({supportsImmersive: true}).then((m) => {
mock = m;
mock.setViewerOrigin({position: [0.5, 0, 0, 1], orientation: [0, 0, 0, 1] }); mock.setViewerOrigin({position: [0.5, 0, 0, 1], orientation: [0, 0, 0, 1] });
mock.setViews(TEST_VIEWS); mock.setViews(TEST_VIEWS);
return navigator.xr.requestSession({mode: "immersive-vr"}); let session = await navigator.xr.requestSession({mode: "immersive-vr"});
}) await session.updateRenderState({"baseLayer": new XRWebGLLayer(session, gl, {})});
.then((s) => { let resolve;
session = s;
return session.updateRenderState({"baseLayer": new XRWebGLLayer(session, gl, {})}) let frame = await new Promise(resolve => {
}) session.requestAnimationFrame((time, frame) => resolve(frame));
.then(() => { });
return new Promise(function(resolve, reject) {
session.requestAnimationFrame(function(time, frame) { let space = await session.requestReferenceSpace("local");
session.requestReferenceSpace("local").then((space) => {
let pose = frame.getViewerPose(space); let pose = frame.getViewerPose(space);
for (view of pose.views) { for (view of pose.views) {
assert_matrix_approx_equals(view.projectionMatrix, VALID_PROJECTION_MATRIX, 0.001, "left projection matrix"); 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.z, 0, 0.001, "left z value");
assert_approx_equals(position.w, 1, 0.001, "left w value"); assert_approx_equals(position.w, 1, 0.001, "left w value");
} else { } else {
reject("got unknown view"); throw "got unknown view";
} }
} }
resolve();
}).catch((e) => reject(e));
});
});
}); });
});
</script> </script>
</body> </body>
</html> </html>