--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -525,21 +525,26 @@ this.UITour = {
log.warn("showInfo: Reached limit of allowed number of buttons");
break;
}
}
}
}
let infoOptions = {};
-
- if (typeof data.closeButtonCallbackID == "string")
- infoOptions.closeButtonCallbackID = data.closeButtonCallbackID;
- if (typeof data.targetCallbackID == "string")
- infoOptions.targetCallbackID = data.targetCallbackID;
+ if (typeof data.closeButtonCallbackID == "string") {
+ infoOptions.closeButtonCallback = () => {
+ this.sendPageCallback(messageManager, data.closeButtonCallbackID);
+ };
+ }
+ if (typeof data.targetCallbackID == "string") {
+ infoOptions.targetCallback = details => {
+ this.sendPageCallback(messageManager, data.targetCallbackID, details);
+ };
+ }
this.showInfo(window, messageManager, target, data.title, data.text, iconURL, buttons, infoOptions);
}).catch(log.error);
break;
}
case "hideInfo": {
this.hideInfo(window);
@@ -1402,27 +1407,28 @@ this.UITour = {
this._setAppMenuStateForAnnotation(aWindow, "highlight", false);
},
/**
* Show an info panel.
*
* @param {ChromeWindow} aChromeWindow
- * @param {nsIMessageSender} aMessageManager
+ * @param {nsIMessageSender} aMessageManager (This is currently unused.)
* @param {Node} aAnchor
* @param {String} [aTitle=""]
* @param {String} [aDescription=""]
* @param {String} [aIconURL=""]
* @param {Object[]} [aButtons=[]]
* @param {Object} [aOptions={}]
- * @param {String} [aOptions.closeButtonCallbackID]
+ * @param {String} [aOptions.closeButtonCallback]
+ * @param {String} [aOptions.targetCallback]
*/
- showInfo: function(aChromeWindow, aMessageManager, aAnchor, aTitle = "", aDescription = "", aIconURL = "",
- aButtons = [], aOptions = {}) {
+ showInfo(aChromeWindow, aMessageManager, aAnchor, aTitle = "",
+ aDescription = "", aIconURL = "", aButtons = [], aOptions = {}) {
function showInfoPanel(aAnchorEl) {
aAnchorEl.focus();
let document = aChromeWindow.document;
let tooltip = document.getElementById("UITourTooltip");
let tooltipTitle = document.getElementById("UITourTooltipTitle");
let tooltipDesc = document.getElementById("UITourTooltipDescription");
let tooltipIcon = document.getElementById("UITourTooltipIcon");
@@ -1468,36 +1474,37 @@ this.UITour = {
tooltipButtons.appendChild(el);
}
tooltipButtons.hidden = !aButtons.length;
let tooltipClose = document.getElementById("UITourTooltipClose");
let closeButtonCallback = (event) => {
this.hideInfo(document.defaultView);
- if (aOptions && aOptions.closeButtonCallbackID)
- this.sendPageCallback(aMessageManager, aOptions.closeButtonCallbackID);
+ if (aOptions && aOptions.closeButtonCallback) {
+ aOptions.closeButtonCallback();
+ }
};
tooltipClose.addEventListener("command", closeButtonCallback);
let targetCallback = (event) => {
let details = {
target: aAnchor.targetName,
type: event.type,
};
- this.sendPageCallback(aMessageManager, aOptions.targetCallbackID, details);
+ aOptions.targetCallback(details);
};
- if (aOptions.targetCallbackID && aAnchor.addTargetListener) {
+ if (aOptions.targetCallback && aAnchor.addTargetListener) {
aAnchor.addTargetListener(document, targetCallback);
}
tooltip.addEventListener("popuphiding", function tooltipHiding(event) {
tooltip.removeEventListener("popuphiding", tooltipHiding);
tooltipClose.removeEventListener("command", closeButtonCallback);
- if (aOptions.targetCallbackID && aAnchor.removeTargetListener) {
+ if (aOptions.targetCallback && aAnchor.removeTargetListener) {
aAnchor.removeTargetListener(document, targetCallback);
}
});
tooltip.setAttribute("targetName", aAnchor.targetName);
tooltip.hidden = false;
let alignment = "bottomcenter topright";
if (aAnchor.infoPanelPosition) {