diff --git a/mozilla/toolkit/mozapps/extensions/content/extensions.css b/mozilla/toolkit/mozapps/extensions/content/extensions.css
index 1fb3c1c6261..e1f6291af39 100644
--- a/mozilla/toolkit/mozapps/extensions/content/extensions.css
+++ b/mozilla/toolkit/mozapps/extensions/content/extensions.css
@@ -96,10 +96,6 @@ richlistitem[opType="needs-disable"] hbox.addon-description {
-moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#addon-needs-disable");
}
-addonsmessage {
- -moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#addonsmessage");
-}
-
#viewGroup radio {
-moz-binding: url("chrome://mozapps/content/extensions/extensions.xml#viewbutton");
-moz-box-orient: vertical;
diff --git a/mozilla/toolkit/mozapps/extensions/content/extensions.js b/mozilla/toolkit/mozapps/extensions/content/extensions.js
index 23aacd5eeff..5a899a445ce 100644
--- a/mozilla/toolkit/mozapps/extensions/content/extensions.js
+++ b/mozilla/toolkit/mozapps/extensions/content/extensions.js
@@ -57,6 +57,7 @@ var gCheckCompat = true;
var gUpdatesOnly = false;
var gAppID = "";
var gPref = null;
+var gPriorityCount = 0;
const PREF_EM_CHECK_COMPATIBILITY = "extensions.checkCompatibility";
const PREF_EXTENSIONS_GETMORETHEMESURL = "extensions.getMoreThemesURL";
@@ -103,6 +104,43 @@ function getExtensionString(key, strings) {
return gExtensionStrings.getString(key);
}
+function MessageButton(aLabel, aAccesskey, aData) {
+ this.label = aLabel;
+ this.accessKey = aAccesskey;
+ this.data = aData || "addons-message-dismiss";
+}
+MessageButton.prototype = {
+ label: null,
+ accessKey: null,
+ data: null,
+
+ callback: function (aNotification, aButton) {
+ var os = Components.classes["@mozilla.org/observer-service;1"]
+ .getService(Components.interfaces.nsIObserverService);
+ os.notifyObservers(null, "addons-message-notification", aButton.data);
+ aNotification.close();
+ return true;
+ }
+};
+
+function showMessage(aIconURL, aMessage, aButtonLabel, aButtonAccesskey,
+ aShowCloseButton, aNotifyData) {
+ var addonsMsg = document.getElementById("addonsMsg");
+ var buttons = null;
+ if (aButtonLabel)
+ buttons = [new MessageButton(aButtonLabel, aButtonAccesskey, aNotifyData)];
+ var oldMessage = addonsMsg.getNotificationWithValue(aMessage);
+ if (oldMessage)
+ addonsMsg.removeNotification(oldMessage);
+ if (addonsMsg.currentNotification)
+ gPriorityCount += 0.0001;
+ else
+ gPriorityCount = 0;
+ addonsMsg.appendNotification(aMessage, aMessage, aIconURL,
+ addonsMsg.PRIORITY_WARNING_LOW + gPriorityCount,
+ buttons).hideclose = !aShowCloseButton;
+}
+
// dynamically creates a template
var AddonsViewBuilder = {
_bindingList: null,
@@ -460,7 +498,7 @@ function flushDataSource()
function noUpdatesDismiss(aEvent)
{
window.removeEventListener("command", noUpdatesDismiss, true);
- if (aEvent.target.localName == "addonsmessage")
+ if (aEvent.target.localName == "notification")
return;
var children = gExtensionsView.children;
@@ -469,7 +507,7 @@ function noUpdatesDismiss(aEvent)
if (child.hasAttribute("updateStatus"))
child.removeAttribute("updateStatus");
}
- document.getElementById("addonsMsg").hideMessage();
+ document.getElementById("addonsMsg").removeCurrentNotification();
}
function setRestartMessage(aItem)
@@ -547,16 +585,14 @@ function Startup()
var buttonLabel = getExtensionString("enableButtonLabel");
var buttonAccesskey = getExtensionString("enableButtonAccesskey");
var notifyData = "addons-enable-compatibility";
- var addonsMsg = document.getElementById("addonsMsg");
- addonsMsg.showMessage("chrome://mozapps/skin/extensions/question.png",
- msgText, buttonLabel, buttonAccesskey,
- true, notifyData);
+ showMessage("chrome://mozapps/skin/extensions/question.png",
+ msgText, buttonLabel, buttonAccesskey,
+ true, notifyData);
}
if (gInSafeMode) {
- var addonsMsg = document.getElementById("addonsMsg");
- addonsMsg.showMessage("chrome://mozapps/skin/extensions/question.png",
- getExtensionString("safeModeMsg"),
- null, null, true, null);
+ showMessage("chrome://mozapps/skin/extensions/question.png",
+ getExtensionString("safeModeMsg"),
+ null, null, true, null);
}
if ("arguments" in window) {
@@ -571,10 +607,9 @@ function Startup()
document.getElementById("viewGroup").hidden = true;
document.getElementById("extensionsView").setAttribute("norestart", "");
showView("updates");
- var addonsMsg = document.getElementById("addonsMsg");
- addonsMsg.showMessage("chrome://mozapps/skin/extensions/question.png",
- getExtensionString("newUpdatesAvailableMsg"),
- null, null, true, null);
+ showMessage("chrome://mozapps/skin/extensions/question.png",
+ getExtensionString("newUpdatesAvailableMsg"),
+ null, null, true, null);
document.title = getExtensionString("newUpdateWindowTitle", [getBrandShortName()]);
}
}
@@ -606,7 +641,8 @@ function Shutdown()
.getService(Components.interfaces.nsIObserverService);
os.removeObserver(gAddonsMsgObserver, "addons-message-notification");
os.removeObserver(gDownloadManager, "xpinstall-download-started");
- if (document.getElementById("addonsMsg").notifyData == "addons-no-updates")
+ var currentNotification = document.getElementById("addonsMsg").currentNotification;
+ if (currentNotification && currentNotification.value == "addons-no-updates")
window.removeEventListener("command", noUpdatesDismiss, true);
}
@@ -843,10 +879,9 @@ UpdateCheckListener.prototype = {
if (this._updateFound)
showView("updates");
else {
- var addonsMsg = document.getElementById("addonsMsg");
- addonsMsg.showMessage("chrome://mozapps/skin/extensions/question.png",
- getExtensionString("noUpdatesMsg"),
- null, null, true, "addons-no-updates");
+ showMessage("chrome://mozapps/skin/extensions/question.png",
+ getExtensionString("noUpdatesMsg"),
+ null, null, true, "addons-no-updates");
window.addEventListener("command", noUpdatesDismiss, true);
}
},
@@ -1253,10 +1288,9 @@ function isXPInstallEnabled() {
var buttonLabel = locked ? null : getExtensionString("enableButtonLabel");
var buttonAccesskey = locked ? null : getExtensionString("enableButtonAccesskey");
var notifyData = locked ? null : "addons-enable-xpinstall";
- var addonsMsg = document.getElementById("addonsMsg");
- addonsMsg.showMessage("chrome://mozapps/skin/extensions/question.png",
- msgText, buttonLabel, buttonAccesskey,
- !locked, notifyData);
+ showMessage("chrome://mozapps/skin/extensions/question.png",
+ msgText, buttonLabel, buttonAccesskey,
+ !locked, notifyData);
return false;
}
@@ -1264,12 +1298,11 @@ function isOffline(messageKey) {
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
.getService(nsIIOService);
if (ioService.offline) {
- var addonsMsg = document.getElementById("addonsMsg");
- addonsMsg.showMessage("chrome://mozapps/skin/extensions/question.png",
- getExtensionString(messageKey, [getBrandShortName()]),
- getExtensionString("goOnlineButtonLabel"),
- getExtensionString("goOnlineButtonAccesskey"),
- true, "addons-go-online");
+ showMessage("chrome://mozapps/skin/extensions/question.png",
+ getExtensionString(messageKey, [getBrandShortName()]),
+ getExtensionString("goOnlineButtonLabel"),
+ getExtensionString("goOnlineButtonAccesskey"),
+ true, "addons-go-online");
}
return ioService.offline;
}
@@ -1391,10 +1424,8 @@ function installUpdatesAll() {
if (!isXPInstallEnabled())
return;
- if (gUpdatesOnly) {
- var addonsMsg = document.getElementById("addonsMsg");
- addonsMsg.hideMessage();
- }
+ if (gUpdatesOnly)
+ document.getElementById("addonsMsg").removeCurrentNotification();
var items = [];
var children = gExtensionsView.children;
diff --git a/mozilla/toolkit/mozapps/extensions/content/extensions.xml b/mozilla/toolkit/mozapps/extensions/content/extensions.xml
index 73bdf04d69a..c3db06310be 100644
--- a/mozilla/toolkit/mozapps/extensions/content/extensions.xml
+++ b/mozilla/toolkit/mozapps/extensions/content/extensions.xml
@@ -588,214 +588,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- null
-
- []
-
-
- 0) {
- this.showMessage(this.queue[0][0], this.queue[0][1], this.queue[0][2],
- this.queue[0][3], this.queue[0][4], this.queue[0][5]);
- this.queue.splice(0, 1);
- }
- ]]>
-
-
-
-
- document.getAnonymousElementByAttribute(this, "anonid", "messageImage");
-
-
-
-
-
-
-
-
-
-
-
- document.getAnonymousElementByAttribute(this, "anonid", "messageText");
-
-
- "";
-
-
-
-
-
-
-
-
-
-
-
-
- document.getAnonymousElementByAttribute(this, "anonid", "messageButton");
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mozilla/toolkit/mozapps/extensions/content/extensions.xul b/mozilla/toolkit/mozapps/extensions/content/extensions.xul
index 968dae75ca0..5c175c7726a 100644
--- a/mozilla/toolkit/mozapps/extensions/content/extensions.xul
+++ b/mozilla/toolkit/mozapps/extensions/content/extensions.xul
@@ -163,33 +163,34 @@
-
-
-
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+