xrDevice_disconnect_ends.https.html (1367B)
1 <!DOCTYPE html> 2 <body> 3 <script src=/resources/testharness.js></script> 4 <script src=/resources/testharnessreport.js></script> 5 <script src="resources/webxr_util.js"></script> 6 <script src="resources/webxr_test_constants.js"></script> 7 8 <script> 9 const testName = "Immersive session ends when device is disconnected"; 10 let watcherDone = new Event("watcherdone"); 11 const fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; 12 13 let testFunction = function(session, testDeviceController, t) { 14 let sessionWatcher = new EventWatcher(t, session, ["end", "watcherdone"]); 15 let sessionPromise = sessionWatcher.wait_for(["end", "watcherdone"]); 16 17 let xrWatcher = new EventWatcher(t, navigator.xr, ["devicechange"]); 18 let xrPromise = xrWatcher.wait_for(["devicechange"]); 19 20 function onSessionEnd(event) { 21 t.step( () => { 22 assert_equals(event.session, session); 23 session.dispatchEvent(watcherDone); 24 }); 25 } 26 27 session.addEventListener("end", onSessionEnd, false); 28 29 // The javascript needs to yield so that the event registration processes. 30 t.step_timeout(() => { testDeviceController.disconnect(); }, 0); 31 32 return Promise.all([sessionPromise, xrPromise]); 33 }; 34 35 xr_session_promise_test(testName, testFunction, 36 fakeDeviceInitParams, 'immersive-vr'); 37 </script> 38 </body>