/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; add_task(async function testOneWindow() { let windows = []; for (let win of CustomizableUI.windows) { windows.push(win); } is(windows.length, 1, "Should have one customizable window"); }); add_task(async function testOpenCloseWindow() { let newWindow = null; let openListener = { onWindowOpened(window) { newWindow = window; }, }; CustomizableUI.addListener(openListener); { let win = await openAndLoadWindow(null, true); is( newWindow, win, "onWindowOpen event should have received expected window" ); isnot(newWindow, null, "Should have gotten onWindowOpen event"); } CustomizableUI.removeListener(openListener); let windows = []; for (let win of CustomizableUI.windows) { windows.push(win); } is(windows.length, 2, "Should have two customizable windows"); isnot( windows.indexOf(window), -1, "Current window should be in window collection." ); isnot( windows.indexOf(newWindow), -1, "New window should be in window collection." ); let closedWindow = null; let closeListener = { onWindowClosed(window) { closedWindow = window; }, }; CustomizableUI.addListener(closeListener); await promiseWindowClosed(newWindow); isnot(closedWindow, null, "Should have gotten onWindowClosed event"); is( newWindow, closedWindow, "Closed window should match previously opened window" ); CustomizableUI.removeListener(closeListener); windows = []; for (let win of CustomizableUI.windows) { windows.push(win); } is(windows.length, 1, "Should have one customizable window"); isnot( windows.indexOf(window), -1, "Current window should be in window collection." ); is( windows.indexOf(closedWindow), -1, "Closed window should not be in window collection." ); });