diff options
Diffstat (limited to 'testing/web-platform/tests/webxr/events_referenceSpace_reset_inline.https.html')
-rw-r--r-- | testing/web-platform/tests/webxr/events_referenceSpace_reset_inline.https.html | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webxr/events_referenceSpace_reset_inline.https.html b/testing/web-platform/tests/webxr/events_referenceSpace_reset_inline.https.html new file mode 100644 index 0000000000..a445886a52 --- /dev/null +++ b/testing/web-platform/tests/webxr/events_referenceSpace_reset_inline.https.html @@ -0,0 +1,52 @@ +<!DOCTYPE html> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="resources/webxr_util.js"></script> +<script src="resources/webxr_test_constants.js"></script> + +<script> +let nonImmersiveTestName = "XRSession resetpose from a device properly fires off " + + "the right events for non-immersive sessions"; + +let watcherDone = new Event("watcherdone"); + +let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; + +let testFunction = function(session, fakeDeviceController, t) { + let resetPromise = session.requestReferenceSpace('local') + .then((refSpace) => { + let eventWatcher = new EventWatcher( + t, refSpace, ["reset", "watcherdone"]); + refSpace.addEventListener("reset", (event) => { + t.step(() => { + assert_equals(event.referenceSpace, refSpace); + + // Also make sure the same objects are returned each time these + // attributes are accessed. + let eventRefSpace = event.referenceSpace; + let transform = event.transform; + assert_equals(eventRefSpace, event.referenceSpace, + "XRReferenceSpaceEvent.referenceSpace returns the same object."); + assert_equals(transform, event.transform, + "XRReferenceSpaceEvent.transform returns the same object."); + }); + + refSpace.dispatchEvent(watcherDone); + }, false); + return eventWatcher.wait_for(["reset", "watcherdone"]); + }); + + fakeDeviceController.simulateResetPose(); + + // The triggered resetPose event should arrive after the next Animation Frame + session.requestAnimationFrame(() => {}); + + return resetPromise; +}; + +xr_session_promise_test( + nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline', { + requiredFeatures: ['local'], + }); + +</script> |