1
2
3
4
5
6
7
8
9
10
null
4
null
null
null
if (val)
this.setAttribute('notificationshidden', true);
else this.removeAttribute('notificationshidden');
= 0; n--) {
if (aValue == notifications[n].value)
return notifications[n];
}
return null;
]]>
this.PRIORITY_CRITICAL_BLOCK)
throw "Invalid notification priority " + aPriority;
// check for where the notification should be inserted according to
// priority. If two are equal, the existing one appears on top.
var notifications = this.allNotifications;
var insertPos = null;
for (var n = notifications.length - 1; n >= 0; n--) {
if (notifications[n].priority < aPriority)
break;
insertPos = notifications[n];
}
const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var newitem = document.createElementNS(XULNS, "notification");
newitem.setAttribute("label", aLabel);
newitem.setAttribute("value", aValue);
newitem.setAttribute("image", aImage);
if (!insertPos) {
newitem.style.position = "fixed";
newitem.style.top = "100%";
}
this.insertBefore(newitem, insertPos);
if (aButtons) {
for (var b = 0; b < aButtons.length; b++) {
var button = aButtons[b];
var buttonElem = document.createElementNS(XULNS, "button");
buttonElem.setAttribute("label", button.label);
buttonElem.setAttribute("accesskey", button.accessKey);
newitem.appendChild(buttonElem);
buttonElem.buttonInfo = button;
}
}
newitem.priority = aPriority;
if (aPriority >= this.PRIORITY_CRITICAL_LOW)
newitem.type = "critical";
else if (aPriority <= this.PRIORITY_INFO_HIGH)
newitem.type = "info";
else
newitem.type = "warning";
if (!insertPos)
this._showNotification(newitem, true);
// Fire event for accessibility APIs
var event = document.createEvent("Events");
event.initEvent("AlertActive", true, true);
newitem.dispatchEvent(event);
return newitem;
]]>
= 0; n--) {
if (aImmediate)
this.removeChild(notifications[n]);
else
this.removeNotification(notifications[n]);
}
this.currentNotification = null;
]]>
height)
height = this.currentNotification.boxObject.height;
this.currentNotification = aNotification;
this._closedNotification = null;
aNotification.style.removeProperty("position");
aNotification.style.removeProperty("top");
aNotification.style.marginTop = -height + "px";
aNotification.style.opacity = 0;
}
else {
change = -change;
this._closedNotification = aNotification;
var notifications = this.allNotifications;
var idx = notifications.length - 2;
if (idx >= 0)
this.currentNotification = notifications[idx];
else
this.currentNotification = null;
}
var opacitychange = change / height;
var self = this;
var slide = function slideInFn()
{
var done = false;
var style = window.getComputedStyle(aNotification, null);
var margin = style.getPropertyCSSValue("margin-top").
getFloatValue(CSSPrimitiveValue.CSS_PX);
if (change > 0 && margin + change >= 0) {
aNotification.style.marginTop = "0px";
aNotification.style.opacity = 1;
done = true;
}
else if (change < 0 && margin + change <= -height) {
aNotification.style.marginTop = -height + "px";
done = true;
}
else {
aNotification.style.marginTop = (margin + change) + "px";
if (opacitychange)
aNotification.style.opacity =
Number(aNotification.style.opacity) + opacitychange;
}
if (done) {
clearInterval(self._timer);
self._timer = null;
if (self._closedNotification)
self._closedNotification.parentNode.
removeChild(self._closedNotification);
}
}
this._timer = setInterval(slide, 50);
]]>