xrSession_visibilityState_inline.https.html (2426B)
1 <!DOCTYPE html> 2 <html> 3 <title>View transitions: Transition in a hidden page</title> 4 <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> 5 <meta name="timeout" content="long"> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/resources/testdriver.js"></script> 9 <script src="/resources/testdriver-vendor.js"></script> 10 <script src="resources/webxr_util.js"></script> 11 <script src="resources/webxr_test_constants.js"></script> 12 <script src="../page-visibility/resources/window_state_context.js"></script> 13 <script> 14 let watcherDone = new Event("watcherdone"); 15 16 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE; 17 let testName = "Ensures that the XRSession's visibilityState is correctly " 18 + "reported and that the associated visibilitychange event fires for " 19 + "non-immersive sessions."; 20 21 promise_test( 22 async (setup) => { 23 xr_session_promise_test( 24 testName, 25 (session, fakeDeviceController, t) => { 26 let wsc = null; 27 let eventWatcher = new EventWatcher( 28 t, session, ["visibilitychange", "watcherdone"]); 29 let eventPromise = eventWatcher.wait_for( 30 ["visibilitychange", "visibilitychange", "watcherdone"]); 31 32 async function showDocument() { 33 await wsc.restore(); 34 } 35 36 async function hideDocument() { 37 wsc = window_state_context(t); 38 await wsc.minimize(); 39 } 40 41 function onSessionVisibilityChangeVisible(event) { 42 t.step( () => { 43 assert_equals(session.visibilityState, "visible"); 44 }); 45 t.step_timeout(()=>{ 46 session.dispatchEvent(watcherDone); 47 }, 300); 48 } 49 50 function onSessionVisibilityChangeHidden(event) { 51 t.step( () => { 52 assert_equals(session.visibilityState, "hidden"); 53 }); 54 session.removeEventListener("visibilitychange", onSessionVisibilityChangeHidden, false); 55 session.addEventListener("visibilitychange", onSessionVisibilityChangeVisible, false); 56 showDocument(); 57 } 58 59 assert_equals(session.visibilityState, "visible"); 60 61 session.addEventListener("visibilitychange", onSessionVisibilityChangeHidden, false); 62 hideDocument(); 63 64 return eventPromise; 65 }, 66 fakeDeviceInitParams, 'inline' 67 ); 68 }, 69 "setup" 70 ); 71 </script> 72 </body> 73 </html>