mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* 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(() => {
 | 
						|
  SidebarController.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.SidebarController.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.SidebarController.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 SidebarController.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");
 | 
						|
});
 |