xrInputSource_add_remove.https.html (2086B)
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 can be properly added and removed from the " 10 + "session"; 11 12 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; 13 14 let testFunction = (session, fakeDeviceController, t) => new Promise((resolve) => { 15 let input_sources = session.inputSources; 16 17 t.step( () => { 18 assert_equals(input_sources.length, 0); 19 }); 20 21 let input_source_1 = fakeDeviceController.simulateInputSourceConnection(RIGHT_CONTROLLER); 22 23 requestSkipAnimationFrame(session, (time, xrFrame) => { 24 let input_sources = session.inputSources; 25 26 t.step( () => { 27 assert_equals(input_sources.length, 1); 28 assert_equals(input_sources[0].targetRayMode, "tracked-pointer"); 29 assert_equals(input_sources[0].handedness, "right"); 30 }); 31 32 let input_source_2 = fakeDeviceController.simulateInputSourceConnection({ 33 handedness: "none", 34 targetRayMode: "gaze", 35 pointerOrigin: VALID_POINTER_TRANSFORM, 36 profiles: [] 37 }); 38 39 session.requestAnimationFrame((time, xrFrame) => { 40 let input_sources = session.inputSources; 41 42 t.step( () => { 43 assert_equals(input_sources.length, 2); 44 assert_equals(input_sources[1].targetRayMode, "gaze"); 45 assert_equals(input_sources[1].handedness, "none"); 46 }); 47 48 input_source_1.disconnect(); 49 50 session.requestAnimationFrame((time, xrFrame) => { 51 let input_sources = session.inputSources; 52 53 t.step( () => { 54 assert_equals(input_sources.length, 1); 55 assert_equals(input_sources[0].targetRayMode, "gaze"); 56 assert_equals(input_sources[0].handedness, "none"); 57 }); 58 59 resolve(); 60 }); 61 }); 62 }); 63 }); 64 65 xr_session_promise_test( 66 testName, testFunction, fakeDeviceInitParams, 'immersive-vr'); 67 68 </script>