forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			87 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|  * http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| const { AppMenuNotifications } = ChromeUtils.importESModule(
 | |
|   "resource://gre/modules/AppMenuNotifications.sys.mjs"
 | |
| );
 | |
| 
 | |
| add_task(async function testModals() {
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [["prompts.windowPromptSubDialog", true]],
 | |
|   });
 | |
| 
 | |
|   is(
 | |
|     PanelUI.notificationPanel.state,
 | |
|     "closed",
 | |
|     "update-manual doorhanger is closed."
 | |
|   );
 | |
|   let mainActionCalled = false;
 | |
|   let mainAction = {
 | |
|     callback: () => {
 | |
|       mainActionCalled = true;
 | |
|     },
 | |
|   };
 | |
|   AppMenuNotifications.showNotification("update-manual", mainAction);
 | |
| 
 | |
|   isnot(
 | |
|     PanelUI.notificationPanel.state,
 | |
|     "closed",
 | |
|     "update-manual doorhanger is showing."
 | |
|   );
 | |
|   let notifications = [...PanelUI.notificationPanel.children].filter(
 | |
|     n => !n.hidden
 | |
|   );
 | |
|   is(
 | |
|     notifications.length,
 | |
|     1,
 | |
|     "PanelUI doorhanger is only displaying one notification."
 | |
|   );
 | |
|   let doorhanger = notifications[0];
 | |
|   is(
 | |
|     doorhanger.id,
 | |
|     "appMenu-update-manual-notification",
 | |
|     "PanelUI is displaying the update-manual notification."
 | |
|   );
 | |
| 
 | |
|   let popuphiddenPromise = BrowserTestUtils.waitForEvent(
 | |
|     PanelUI.notificationPanel,
 | |
|     "popuphidden"
 | |
|   );
 | |
| 
 | |
|   let dialogPromise = BrowserTestUtils.promiseAlertDialogOpen("accept");
 | |
|   Services.prompt.asyncAlert(
 | |
|     window.browsingContext,
 | |
|     Services.prompt.MODAL_TYPE_INTERNAL_WINDOW,
 | |
|     "Test alert",
 | |
|     "Test alert description"
 | |
|   );
 | |
|   await popuphiddenPromise;
 | |
|   is(
 | |
|     PanelUI.notificationPanel.state,
 | |
|     "closed",
 | |
|     "update-manual doorhanger is closed."
 | |
|   );
 | |
| 
 | |
|   let popupshownPromise = BrowserTestUtils.waitForEvent(
 | |
|     PanelUI.notificationPanel,
 | |
|     "popupshown"
 | |
|   );
 | |
| 
 | |
|   await dialogPromise;
 | |
|   await popupshownPromise;
 | |
|   isnot(
 | |
|     PanelUI.notificationPanel.state,
 | |
|     "closed",
 | |
|     "update-manual doorhanger is showing."
 | |
|   );
 | |
| 
 | |
|   doorhanger.button.click();
 | |
|   ok(mainActionCalled, "Main action callback was called");
 | |
|   is(
 | |
|     PanelUI.notificationPanel.state,
 | |
|     "closed",
 | |
|     "update-manual doorhanger is closed."
 | |
|   );
 | |
| });
 | 
