diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /browser/base/content/test/sidebar/browser_sidebar_adopt.js | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/base/content/test/sidebar/browser_sidebar_adopt.js')
-rw-r--r-- | browser/base/content/test/sidebar/browser_sidebar_adopt.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/browser/base/content/test/sidebar/browser_sidebar_adopt.js b/browser/base/content/test/sidebar/browser_sidebar_adopt.js new file mode 100644 index 0000000000..e61e9a1972 --- /dev/null +++ b/browser/base/content/test/sidebar/browser_sidebar_adopt.js @@ -0,0 +1,67 @@ +/* This test checks that the SidebarFocused event doesn't fire in adopted + * windows when the sidebar gets opened during window opening, to make sure + * that sidebars don't steal focus from the page in this case (Bug 1394207). + * There's another case not covered here that has the same expected behavior - + * during the initial browser startup - but it would be hard to do with a mochitest. */ + +registerCleanupFunction(() => { + SidebarUI.hide(); +}); + +function failIfSidebarFocusedFires() { + ok(false, "This event shouldn't have fired"); +} + +add_task(async function testAdoptedTwoWindows() { + // First open a new window, show the sidebar in that window, and close it. + // Then, open another new window and confirm that the sidebar is closed since it is + // being adopted from the main window which doesn't have a shown sidebar. See Bug 1407737. + info("Ensure that sidebar state is adopted only from the opener"); + + let win1 = await BrowserTestUtils.openNewBrowserWindow(); + await win1.SidebarUI.show("viewBookmarksSidebar"); + await BrowserTestUtils.closeWindow(win1); + + let win2 = await BrowserTestUtils.openNewBrowserWindow(); + ok( + !win2.document.getElementById("sidebar-button").hasAttribute("checked"), + "Sidebar button isn't checked" + ); + ok(!win2.SidebarUI.isOpen, "Sidebar is closed"); + await BrowserTestUtils.closeWindow(win2); +}); + +add_task(async function testEventsReceivedInMainWindow() { + info( + "Opening the sidebar and expecting both SidebarShown and SidebarFocused events" + ); + + let initialShown = BrowserTestUtils.waitForEvent(window, "SidebarShown"); + let initialFocus = BrowserTestUtils.waitForEvent(window, "SidebarFocused"); + + await SidebarUI.show("viewBookmarksSidebar"); + await initialShown; + await initialFocus; + + ok(true, "SidebarShown and SidebarFocused events fired on a new window"); +}); + +add_task(async function testEventReceivedInNewWindow() { + info( + "Opening a new window and expecting the SidebarFocused event to not fire" + ); + + let promiseNewWindow = BrowserTestUtils.waitForNewWindow(); + let win = OpenBrowserWindow(); + + let adoptedShown = BrowserTestUtils.waitForEvent(win, "SidebarShown"); + win.addEventListener("SidebarFocused", failIfSidebarFocusedFires); + registerCleanupFunction(async function() { + win.removeEventListener("SidebarFocused", failIfSidebarFocusedFires); + await BrowserTestUtils.closeWindow(win); + }); + + await promiseNewWindow; + await adoptedShown; + ok(true, "SidebarShown event fired on an adopted window"); +}); |