browser_1087303_button_fullscreen.js (1759B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 /* eslint-disable mozilla/no-arbitrary-setTimeout */ 5 6 "use strict"; 7 8 add_task(async function () { 9 info("Check fullscreen button existence and functionality"); 10 11 CustomizableUI.addWidgetToArea( 12 "fullscreen-button", 13 CustomizableUI.AREA_FIXED_OVERFLOW_PANEL 14 ); 15 registerCleanupFunction(() => CustomizableUI.reset()); 16 17 await waitForOverflowButtonShown(); 18 19 await document.getElementById("nav-bar").overflowable.show(); 20 21 let fullscreenButton = document.getElementById("fullscreen-button"); 22 ok(fullscreenButton, "Fullscreen button appears in Panel Menu"); 23 24 let fullscreenPromise = promiseFullscreenChange(); 25 fullscreenButton.click(); 26 await fullscreenPromise; 27 28 ok(window.fullScreen, "Fullscreen mode was opened"); 29 30 // exit full screen mode 31 fullscreenPromise = promiseFullscreenChange(); 32 window.fullScreen = !window.fullScreen; 33 await fullscreenPromise; 34 35 ok(!window.fullScreen, "Successfully exited fullscreen"); 36 }); 37 38 function promiseFullscreenChange() { 39 return new Promise((resolve, reject) => { 40 info("Wait for fullscreen change"); 41 42 let timeoutId = setTimeout(() => { 43 window.removeEventListener("fullscreen", onFullscreenChange, true); 44 reject("Fullscreen change did not happen within " + 20000 + "ms"); 45 }, 20000); 46 47 function onFullscreenChange() { 48 clearTimeout(timeoutId); 49 window.removeEventListener("fullscreen", onFullscreenChange, true); 50 info("Fullscreen event received"); 51 resolve(); 52 } 53 window.addEventListener("fullscreen", onFullscreenChange, true); 54 }); 55 }