browser_file_close_tabs.js (1980B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 /** 4 * This test verifies behavior from bug 1732375: 5 * https://bugzilla.mozilla.org/show_bug.cgi?id=1732375 6 * 7 * If there are multiple tabs selected, the 'Close' entry 8 * under the File menu should correctly reflect the number of 9 * selected tabs 10 */ 11 add_task(async function test_menu_close_tab_count() { 12 // Window should have one tab open already, so we 13 // just need to add one more to have a total of two 14 info("Adding new tabs"); 15 // eslint-disable-next-line @microsoft/sdl/no-insecure-url 16 await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com"); 17 18 info("Selecting all tabs"); 19 await gBrowser.selectAllTabs(); 20 is(gBrowser.multiSelectedTabsCount, 2, "Two (2) tabs are selected"); 21 22 let fileMenu = document.getElementById("menu_FilePopup"); 23 await simulateMenuOpen(fileMenu); 24 25 let closeMenuEntry = document.getElementById("menu_close"); 26 let closeMenuL10nArgsObject = document.l10n.getAttributes(closeMenuEntry); 27 28 is( 29 closeMenuL10nArgsObject.args.tabCount, 30 2, 31 "Menu bar reflects multi-tab selection number (Close 2 Tabs)" 32 ); 33 34 let onClose = BrowserTestUtils.waitForEvent( 35 gBrowser.tabContainer, 36 "TabClose" 37 ); 38 39 BrowserTestUtils.removeTab(gBrowser.selectedTab); 40 41 await onClose; 42 43 info("Tabs closed"); 44 }); 45 46 async function simulateMenuOpen(menu) { 47 return new Promise(resolve => { 48 menu.addEventListener("popupshown", resolve, { once: true }); 49 menu.dispatchEvent(new MouseEvent("popupshowing", { bubbles: true })); 50 menu.dispatchEvent(new MouseEvent("popupshown", { bubbles: true })); 51 }); 52 } 53 54 async function simulateMenuClosed(menu) { 55 return new Promise(resolve => { 56 menu.addEventListener("popuphidden", resolve, { once: true }); 57 menu.dispatchEvent(new MouseEvent("popuphiding", { bubbles: true })); 58 menu.dispatchEvent(new MouseEvent("popuphidden", { bubbles: true })); 59 }); 60 }