xrInputSource_emulatedPosition.https.html (2016B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="resources/webxr_util.js"></script> 5 <script src="resources/webxr_test_constants.js"></script> 6 <script src="resources/webxr_test_asserts.js"></script> 7 8 <script> 9 10 let testName = "Poses from XRInputSource.gripSpace have emulatedPosition set " 11 + "properly"; 12 13 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; 14 15 let testFunction = 16 (session, fakeDeviceController, t) => new Promise((resolve) => { 17 let input_source = fakeDeviceController.simulateInputSourceConnection({ 18 handedness: "right", 19 targetRayMode: "tracked-pointer", 20 pointerOrigin: IDENTITY_TRANSFORM, 21 gripOrigin: VALID_GRIP_TRANSFORM, 22 profiles: [] 23 }); 24 25 // Must have a reference space to get input poses. eye-level doesn't apply 26 // any transforms to the given matrix. 27 session.requestReferenceSpace('local').then( (referenceSpace) => { 28 29 function CheckPositionNotEmulated(time, xrFrame) { 30 let source = session.inputSources[0]; 31 let grip_pose = xrFrame.getPose(source.gripSpace, referenceSpace); 32 33 t.step(() => { 34 assert_not_equals(grip_pose, null); 35 assert_equals(grip_pose.emulatedPosition, false); 36 }); 37 38 input_source.setGripOrigin(VALID_GRIP_TRANSFORM, true); 39 session.requestAnimationFrame(CheckPositionEmulated); 40 } 41 42 function CheckPositionEmulated(time, xrFrame) { 43 let source = session.inputSources[0]; 44 let grip_pose = xrFrame.getPose(source.gripSpace, referenceSpace); 45 46 t.step(() => { 47 assert_not_equals(grip_pose, null); 48 assert_equals(grip_pose.emulatedPosition, true); 49 }); 50 51 resolve(); 52 } 53 54 // Can only request input poses in an xr frame. 55 requestSkipAnimationFrame(session, CheckPositionNotEmulated); 56 }); 57 }); 58 59 xr_session_promise_test( 60 testName, testFunction, fakeDeviceInitParams, 'immersive-vr'); 61 62 </script>