getInputPose_handedness.https.html (2301B)
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 7 <script> 8 9 let testName = "XRInputSources properly communicate their handedness"; 10 11 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; 12 13 let testFunction = 14 (session, fakeDeviceController, t) => new Promise((resolve) => { 15 let input_source = fakeDeviceController.simulateInputSourceConnection({ 16 handedness: "none", 17 targetRayMode: "tracked-pointer", 18 pointerOrigin: VALID_POINTER_TRANSFORM, 19 profiles: [] 20 }); 21 22 function CheckNone(time, xrFrame) { 23 let source = session.inputSources[0]; 24 25 t.step( () => { 26 assert_not_equals(source, null); 27 // Handedness should be "none" by default. 28 assert_equals(source.handedness, "none"); 29 }); 30 31 input_source.setHandedness("right"); 32 33 session.requestAnimationFrame(CheckRight); 34 } 35 36 function CheckRight(time, xrFrame) { 37 let source = session.inputSources[0]; 38 39 t.step( () => { 40 assert_not_equals(source, null); 41 // Handedness was set to "right", make sure it propegates. 42 assert_equals(source.handedness, "right"); 43 }); 44 45 input_source.setHandedness("left"); 46 47 session.requestAnimationFrame(CheckLeft); 48 } 49 50 function CheckLeft(time, xrFrame) { 51 let source = session.inputSources[0]; 52 53 t.step( () => { 54 assert_not_equals(source, null); 55 // Handedness was set to "left", make sure it propegates. 56 assert_equals(source.handedness, "left"); 57 }); 58 59 input_source.setHandedness("none"); 60 61 session.requestAnimationFrame(CheckNoneAgain); 62 } 63 64 function CheckNoneAgain(time, xrFrame) { 65 let source = session.inputSources[0]; 66 67 t.step( () => { 68 assert_not_equals(source, null); 69 // Handedness was set to "none" again, make sure it propegates. 70 assert_equals(source.handedness, "none"); 71 }); 72 73 resolve(); 74 } 75 76 // Handedness only updates during an XR frame. 77 requestSkipAnimationFrame(session, CheckNone); 78 }); 79 80 xr_session_promise_test( 81 testName, testFunction, fakeDeviceInitParams, 'immersive-vr'); 82 83 </script>