| <!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> | |
| <script> | |
| let testName = "XRFrame getViewerPose has emulatedPosition set properly."; | |
| const poseTransform = { | |
| position: [1, 1, 1], | |
| orientation: [0.5, 0.5, 0.5, 0.5] | |
| }; | |
| let testFunction = function(session, fakeDeviceController, t) { | |
| let debug = xr_debug.bind(this, 'testFunction'); | |
| return session.requestReferenceSpace('local') | |
| .then((referenceSpace) => new Promise((resolve, reject) => { | |
| debug('refSpace promise'); | |
| function CheckPositionNotEmulated(time, vrFrame){ | |
| debug('rAF 1: checkPositionNotEmulated'); | |
| t.step(() => { | |
| let pose = vrFrame.getViewerPose(referenceSpace); | |
| assert_not_equals(pose, null); | |
| assert_equals(pose.emulatedPosition, false); | |
| fakeDeviceController.setViewerOrigin(poseTransform, true); | |
| }); | |
| session.requestAnimationFrame(CheckPositionEmulated); | |
| } | |
| function CheckPositionEmulated(time, vrFrame) { | |
| debug('rAF 2: checkPositionEmulated'); | |
| t.step(() => { | |
| let pose = vrFrame.getViewerPose(referenceSpace); | |
| assert_not_equals(pose, null); | |
| assert_equals(pose.emulatedPosition, true); | |
| }); | |
| // Finished. | |
| debug('resolve'); | |
| resolve(); | |
| } | |
| requestSkipAnimationFrame(session, CheckPositionNotEmulated); | |
| })); | |
| }; | |
| xr_session_promise_test(testName, testFunction, | |
| TRACKED_IMMERSIVE_DEVICE, 'immersive-vr'); | |
| </script> | |
| </body> |