| <!DOCTYPE html> |
| <body> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src="../../webxr/resources/webxr_util.js"></script> |
| <script src="../../webxr/resources/webxr_test_constants.js"></script> |
| <canvas></canvas> |
| |
| <script> |
| const testDeviceNotReportingShutdownCompleteName = "end event fires when immersive session is ended by system"; |
| const testDeviceReportingShutdownCompleteName = "end event fires when immersive session is ended by system and device reports shutdown complete"; |
| |
| let watcherDone = new Event("watcherdone"); |
| const fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; |
| |
| let testDeviceNotReportingShutdownComplete = function(session, testDeviceController, t) { |
| testEndSessionBySystem(session, testDeviceController, t); |
| }; |
| |
| let testDeviceReportingShutdownComplete = function(session, testDeviceController, t) { |
| testDeviceController.setSupportsShutdownNotification(); |
| testEndSessionBySystem(session, testDeviceController, t); |
| }; |
| |
| let testEndSessionBySystem = function(session, testDeviceController, t) { |
| let eventWatcher = new EventWatcher(t, session, ["end", "watcherdone"]); |
| let eventPromise = eventWatcher.wait_for(["end", "watcherdone"]); |
| |
| function onSessionEnd(event) { |
| t.step( () => { |
| assert_equals(event.session, session); |
| |
| let eventSession = event.session; |
| assert_equals(eventSession, event.session, |
| "XRSessionEvent.session returns the same object."); |
| |
| session.dispatchEvent(watcherDone); |
| }); |
| } |
| session.addEventListener("end", onSessionEnd, false); |
| |
| testDeviceController.simulateShutdown(); |
| |
| return eventPromise; |
| }; |
| |
| xr_session_promise_test(testDeviceNotReportingShutdownCompleteName, testDeviceNotReportingShutdownComplete, |
| fakeDeviceInitParams, 'immersive-vr'); |
| xr_session_promise_test(testDeviceReportingShutdownCompleteName, testDeviceReportingShutdownComplete, |
| fakeDeviceInitParams, 'immersive-vr'); |
| |
| </script> |
| </body> |