events_referenceSpace_reset_inline.https.html (1768B)
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 let nonImmersiveTestName = "XRSession resetpose from a device properly fires off " + 9 "the right events for non-immersive sessions"; 10 11 let watcherDone = new Event("watcherdone"); 12 13 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; 14 15 let testFunction = function(session, fakeDeviceController, t) { 16 let resetPromise = session.requestReferenceSpace('local') 17 .then((refSpace) => { 18 let eventWatcher = new EventWatcher( 19 t, refSpace, ["reset", "watcherdone"]); 20 refSpace.addEventListener("reset", (event) => { 21 t.step(() => { 22 assert_equals(event.referenceSpace, refSpace); 23 24 // Also make sure the same objects are returned each time these 25 // attributes are accessed. 26 let eventRefSpace = event.referenceSpace; 27 let transform = event.transform; 28 assert_equals(eventRefSpace, event.referenceSpace, 29 "XRReferenceSpaceEvent.referenceSpace returns the same object."); 30 assert_equals(transform, event.transform, 31 "XRReferenceSpaceEvent.transform returns the same object."); 32 }); 33 34 refSpace.dispatchEvent(watcherDone); 35 }, false); 36 return eventWatcher.wait_for(["reset", "watcherdone"]); 37 }); 38 39 fakeDeviceController.simulateResetPose(); 40 41 // The triggered resetPose event should arrive after the next Animation Frame 42 session.requestAnimationFrame(() => {}); 43 44 return resetPromise; 45 }; 46 47 xr_session_promise_test( 48 nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline', { 49 requiredFeatures: ['local'], 50 }); 51 52 </script>