browser_981418-widget-onbeforecreated-handler.js (2198B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 /* eslint-disable mozilla/no-arbitrary-setTimeout */ 5 6 "use strict"; 7 const kWidgetId = "test-981418-widget-onbeforecreated"; 8 9 // Should be able to add broken view widget 10 add_task(async function testAddOnBeforeCreatedWidget() { 11 let onBeforeCreatedCalled = false; 12 let widgetSpec = { 13 id: kWidgetId, 14 type: "view", 15 viewId: kWidgetId + "idontexistyet", 16 tooltiptext: "I am an accessible name", 17 onBeforeCreated(doc) { 18 let view = doc.createXULElement("panelview"); 19 view.id = kWidgetId + "idontexistyet"; 20 document.getElementById("appMenu-viewCache").appendChild(view); 21 onBeforeCreatedCalled = true; 22 }, 23 }; 24 25 CustomizableUI.createWidget(widgetSpec); 26 CustomizableUI.addWidgetToArea(kWidgetId, CustomizableUI.AREA_NAVBAR); 27 28 ok(onBeforeCreatedCalled, "onBeforeCreated should have been called"); 29 30 let widgetNode = document.getElementById(kWidgetId); 31 let viewNode = document.getElementById(kWidgetId + "idontexistyet"); 32 ok(widgetNode, "Widget should exist"); 33 ok(viewNode, "Panelview should exist"); 34 35 let viewShownPromise = BrowserTestUtils.waitForEvent(viewNode, "ViewShown"); 36 widgetNode.click(); 37 await viewShownPromise; 38 39 let widgetPanel = document.getElementById("customizationui-widget-panel"); 40 ok(widgetPanel, "Widget panel should exist"); 41 42 let panelHiddenPromise = promisePanelElementHidden(window, widgetPanel); 43 widgetPanel.hidePopup(); 44 await panelHiddenPromise; 45 46 CustomizableUI.addWidgetToArea( 47 kWidgetId, 48 CustomizableUI.AREA_FIXED_OVERFLOW_PANEL 49 ); 50 await waitForOverflowButtonShown(); 51 await document.getElementById("nav-bar").overflowable.show(); 52 53 viewShownPromise = BrowserTestUtils.waitForEvent(viewNode, "ViewShown"); 54 widgetNode.click(); 55 await viewShownPromise; 56 57 let panelHidden = promiseOverflowHidden(window); 58 PanelUI.overflowPanel.hidePopup(); 59 await panelHidden; 60 61 CustomizableUI.destroyWidget(kWidgetId); 62 }); 63 64 add_task(async function asyncCleanup() { 65 await resetCustomization(); 66 });