Wed, 31 Dec 2014 07:16:47 +0100
Revert simplistic fix pending revisit of Mozilla integration attempt.
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/. */
5 "use strict";
6 const kWidgetId = 'test-981418-widget-onbeforecreated';
8 // Should be able to add broken view widget
9 add_task(function testAddOnBeforeCreatedWidget() {
10 let viewShownDeferred = Promise.defer();
11 let onBeforeCreatedCalled = false;
12 let widgetSpec = {
13 id: kWidgetId,
14 type: 'view',
15 viewId: kWidgetId + 'idontexistyet',
16 onBeforeCreated: function(doc) {
17 let view = doc.createElement("panelview");
18 view.id = kWidgetId + 'idontexistyet';
19 let label = doc.createElement("label");
20 label.setAttribute("value", "Hello world");
21 label.className = 'panel-subview-header';
22 view.appendChild(label);
23 document.getElementById("PanelUI-multiView").appendChild(view);
24 onBeforeCreatedCalled = true;
25 },
26 onViewShowing: function() {
27 viewShownDeferred.resolve();
28 }
29 };
31 let noError = true;
32 try {
33 CustomizableUI.createWidget(widgetSpec);
34 CustomizableUI.addWidgetToArea(kWidgetId, CustomizableUI.AREA_NAVBAR);
35 } catch (ex) {
36 Cu.reportError(ex);
37 noError = false;
38 }
39 ok(noError, "Should not throw an exception trying to add the widget.");
40 ok(onBeforeCreatedCalled, "onBeforeCreated should have been called");
42 let widgetNode = document.getElementById(kWidgetId);
43 ok(widgetNode, "Widget should exist");
44 if (widgetNode) {
45 try {
46 widgetNode.click();
48 let shownTimeout = setTimeout(() => viewShownDeferred.reject("Panel not shown within 20s"), 20000);
49 yield viewShownDeferred.promise;
50 clearTimeout(shownTimeout);
51 ok(true, "Found view shown");
53 let tempPanel = document.getElementById("customizationui-widget-panel");
54 let panelHiddenPromise = promisePanelElementHidden(window, tempPanel);
55 tempPanel.hidePopup();
56 yield panelHiddenPromise;
58 CustomizableUI.addWidgetToArea(kWidgetId, CustomizableUI.AREA_PANEL);
59 yield PanelUI.show();
61 viewShownDeferred = Promise.defer();
62 widgetNode.click();
64 shownTimeout = setTimeout(() => viewShownDeferred.reject("Panel not shown within 20s"), 20000);
65 yield viewShownDeferred.promise;
66 clearTimeout(shownTimeout);
67 ok(true, "Found view shown");
69 let panelHidden = promisePanelHidden(window);
70 PanelUI.hide();
71 yield panelHidden;
72 } catch (ex) {
73 ok(false, "Unexpected exception (like a timeout for one of the yields) " +
74 "when testing view widget.");
75 }
76 }
78 noError = true;
79 try {
80 CustomizableUI.destroyWidget(kWidgetId);
81 } catch (ex) {
82 Cu.reportError(ex);
83 noError = false;
84 }
85 ok(noError, "Should not throw an exception trying to remove the broken view widget.");
86 });
88 add_task(function asyncCleanup() {
89 yield resetCustomization();
90 });