browser/components/customizableui/test/browser_981418-widget-onbeforecreated-handler.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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 });

mercurial