multi-screen-fullscreen-companion.tentative.https.html (2344B)
1 <!DOCTYPE html> 2 <meta name="timeout" content="long"> 3 <!-- user agents are not required to support open features other than `noopener` 4 and on some platforms position and size features don't make sense --> 5 <meta name="flags" content="may"> 6 <title>Window Management test: Fullscreen Companion Window</title> 7 <link rel="help" href="https://w3c.github.io/window-management/"> 8 Tests use of multi-screen details to enter fullscreen and open a 'companion' 9 popup window in the same user activation.<br> 10 The host device must have 2+ screens to yield meaningful results.<br><br> 11 <button id="closeButton" onclick="closePopups">Close popups</button><br> 12 <input id="autoClose" type="checkbox" checked=true>Auto-close popups</input> 13 <ul id="list"></ul> 14 <script src="/resources/testharness.js"></script> 15 <script src="/resources/testharnessreport.js"></script> 16 <script src="/resources/testdriver.js"></script> 17 <script src="/resources/testdriver-vendor.js"></script> 18 <script src="resources/helpers.js"></script> 19 <script> 20 'use strict'; 21 22 let popups = []; 23 function closePopups() { 24 popups.forEach(p => p.close()); 25 popups = []; 26 } 27 28 promise_test(async setUpTest => { 29 await setUpWindowManagement(setUpTest); 30 const screens = window.screenDetails.screens; 31 const originalScreen = window.screenDetails.currentScreen; 32 for (const [i, screenA] of screens.entries()) { 33 const screenB = screens[(i + 1) % screens.length]; 34 let name = `Fullscreen on '${screenA.label}'; popup on '${screenB.label}'`; 35 promise_test(async test => { 36 await buttonClick(test, name); 37 await document.documentElement.requestFullscreen({ screen: screenA }); 38 await assertWindowOnScreen(window, screenA); 39 // Expect the popup to open if multiple screens are available. 40 const assertPlacement = screens.length > 1; 41 const popup = await openPopupOnScreen(screenB, assertPlacement); 42 if (!!popup) 43 popups.push(popup); 44 // Exit fullscreen; `window` should move back to `originalScreen`. 45 await buttonClick(test, `Exit fullscreen`); 46 await document.exitFullscreen(); 47 await assertWindowOnScreen(window, originalScreen); 48 assert_false(!!document.fullscreenElement); 49 if (autoClose.checked) 50 closePopups(); 51 }, name); 52 } 53 }, 'Enter fullscreen and open a popup from one transient activation.'); 54 </script>