Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* 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_setup(function () {
CustomizableUI.addWidgetToArea("sidebar-button", "nav-bar");
registerCleanupFunction(() =>
CustomizableUI.removeWidgetFromArea("sidebar-button")
);
});
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");
});