summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--application/palemoon/app/profile/palemoon.js1
-rw-r--r--application/palemoon/base/content/browser.xul1
-rw-r--r--application/palemoon/components/nsBrowserGlue.js41
-rw-r--r--application/palemoon/components/preferences/aboutPermissions.js19
-rw-r--r--application/palemoon/components/preferences/aboutPermissions.xul20
-rw-r--r--application/palemoon/locales/en-US/chrome/browser/browser.properties9
-rw-r--r--application/palemoon/locales/en-US/chrome/browser/preferences/aboutPermissions.dtd2
-rw-r--r--application/palemoon/themes/linux/Push-16.pngbin0 -> 606 bytes
-rw-r--r--application/palemoon/themes/linux/Push-64.pngbin0 -> 8056 bytes
-rw-r--r--application/palemoon/themes/linux/browser.css8
-rw-r--r--application/palemoon/themes/linux/jar.mn2
-rw-r--r--application/palemoon/themes/linux/preferences/aboutPermissions.css3
-rw-r--r--application/palemoon/themes/osx/Push-16.pngbin0 -> 312 bytes
-rw-r--r--application/palemoon/themes/osx/Push-64.pngbin0 -> 8490 bytes
-rw-r--r--application/palemoon/themes/osx/browser.css8
-rw-r--r--application/palemoon/themes/osx/jar.mn2
-rw-r--r--application/palemoon/themes/osx/preferences/aboutPermissions.css3
-rw-r--r--application/palemoon/themes/windows/Push-16.pngbin0 -> 704 bytes
-rw-r--r--application/palemoon/themes/windows/Push-64.pngbin0 -> 8388 bytes
-rw-r--r--application/palemoon/themes/windows/browser.css8
-rw-r--r--application/palemoon/themes/windows/jar.mn2
-rw-r--r--application/palemoon/themes/windows/preferences/aboutPermissions.css3
22 files changed, 129 insertions, 3 deletions
diff --git a/application/palemoon/app/profile/palemoon.js b/application/palemoon/app/profile/palemoon.js
index ee4a95d381..20919eca4e 100644
--- a/application/palemoon/app/profile/palemoon.js
+++ b/application/palemoon/app/profile/palemoon.js
@@ -756,6 +756,7 @@ pref("goanna.handlerService.allowRegisterFromDifferentHost", false);
pref("browser.geolocation.warning.infoURL", "http://www.palemoon.org/info-url/geolocation.shtml");
pref("browser.mixedcontent.warning.infoURL", "http://www.palemoon.org/info-url/mixedcontent.shtml");
+pref("browser.push.warning.infoURL", "https://www.mozilla.org/%LOCALE%/firefox/push/");
pref("browser.EULA.version", 3);
pref("browser.rights.version", 3);
diff --git a/application/palemoon/base/content/browser.xul b/application/palemoon/base/content/browser.xul
index c2553f2956..6545e0ac2e 100644
--- a/application/palemoon/base/content/browser.xul
+++ b/application/palemoon/base/content/browser.xul
@@ -449,6 +449,7 @@
<box id="notification-popup-box" hidden="true" align="center">
<image id="default-notification-icon" class="notification-anchor-icon" role="button"/>
<image id="geo-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="push-notification-icon" class="notification-anchor-icon" role="button"/>
<image id="addons-notification-icon" class="notification-anchor-icon" role="button"/>
<image id="indexedDB-notification-icon" class="notification-anchor-icon" role="button"/>
<image id="password-notification-icon" class="notification-anchor-icon" role="button"/>
diff --git a/application/palemoon/components/nsBrowserGlue.js b/application/palemoon/components/nsBrowserGlue.js
index 225cddd529..3908ae81fa 100644
--- a/application/palemoon/components/nsBrowserGlue.js
+++ b/application/palemoon/components/nsBrowserGlue.js
@@ -1751,6 +1751,42 @@ ContentPermissionPrompt.prototype = {
}
},
+ _promptPush : function(aRequest) {
+ var browserBundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
+ var requestingURI = aRequest.principal.URI;
+
+ var message = browserBundle.formatStringFromName("push.enablePush",
+ [requestingURI.host], 1);
+
+ var actions = [
+ {
+ stringId: "push.alwaysAllow",
+ action: Ci.nsIPermissionManager.ALLOW_ACTION,
+ expireType: null,
+ callback: function() {}
+ },
+ {
+ stringId: "push.allowForSession",
+ action: Ci.nsIPermissionManager.ALLOW_ACTION,
+ expireType: Ci.nsIPermissionManager.EXPIRE_SESSION,
+ callback: function() {}
+ },
+ {
+ stringId: "push.alwaysBlock",
+ action: Ci.nsIPermissionManager.DENY_ACTION,
+ expireType: null,
+ callback: function() {}
+ }]
+
+ var options = {
+ learnMoreURL: Services.urlFormatter.formatURLPref("browser.push.warning.infoURL"),
+ };
+
+ this._showPrompt(aRequest, message, "push", actions, "push",
+ "push-notification-icon", options);
+
+ },
+
_promptGeo : function(aRequest) {
var browserBundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
var requestingURI = aRequest.principal.URI;
@@ -1875,7 +1911,6 @@ ContentPermissionPrompt.prototype = {
},
prompt: function CPP_prompt(request) {
-
// Only allow exactly one permission rquest here.
let types = request.types.QueryInterface(Ci.nsIArray);
if (types.length != 1) {
@@ -1887,6 +1922,7 @@ ContentPermissionPrompt.prototype = {
const kFeatureKeys = { "geolocation" : "geo",
"desktop-notification" : "desktop-notification",
"pointerLock" : "pointerLock",
+ "push" : "push"
};
// Make sure that we support the request.
@@ -1930,6 +1966,9 @@ ContentPermissionPrompt.prototype = {
case "pointerLock":
this._promptPointerLock(request, autoAllow);
break;
+ case "push":
+ this._promptPush(request);
+ break;
}
},
diff --git a/application/palemoon/components/preferences/aboutPermissions.js b/application/palemoon/components/preferences/aboutPermissions.js
index 416bcdf348..0c3f8b8231 100644
--- a/application/palemoon/components/preferences/aboutPermissions.js
+++ b/application/palemoon/components/preferences/aboutPermissions.js
@@ -449,6 +449,19 @@ var PermissionDefaults = {
let value = (aValue != this.DENY);
Services.prefs.setBoolPref("full-screen-api.pointer-lock.enabled", value);
},
+
+ get push() {
+ if (!Services.prefs.getBoolPref("dom.push.enabled")) {
+ return this.DENY;
+ }
+ // We always ask for permission to push with a specific site,
+ // so there is no global ALLOW.
+ return this.UNKNOWN;
+ },
+ set push(aValue) {
+ let value = (aValue != this.DENY);
+ Services.prefs.setBoolPref("dom.push.enabled", value);
+ },
}
/**
@@ -488,13 +501,13 @@ var AboutPermissions = {
*/
_supportedPermissions: ["password", "image", "popup", "cookie",
"desktop-notification", "install", "geo", "indexedDB",
- "fullscreen", "pointerLock"],
+ "fullscreen", "pointerLock", "push"],
/**
* Permissions that don't have a global "Allow" option.
*/
_noGlobalAllow: ["desktop-notification", "geo", "indexedDB", "fullscreen",
- "pointerLock"],
+ "pointerLock", "push"],
/**
* Permissions that don't have a global "Deny" option.
@@ -543,6 +556,7 @@ var AboutPermissions = {
Services.prefs.addObserver("plugins.click_to_play", this, false);
Services.prefs.addObserver("full-screen-api.enabled", this, false);
Services.prefs.addObserver("full-screen-api.pointer-lock.enabled", this, false);
+ Services.prefs.addObserver("dom.push.enabled", this, false);
Services.prefs.addObserver("permissions.places-sites-limit", this, false);
Services.obs.addObserver(this, "perm-changed", false);
@@ -695,6 +709,7 @@ var AboutPermissions = {
Services.prefs.removeObserver("plugins.click_to_play", this, false);
Services.prefs.removeObserver("full-screen-api.enabled", this, false);
Services.prefs.removeObserver("full-screen-api.pointer-lock.enabled", this, false);
+ Services.prefs.removeObserver("dom.push.enabled", this, false);
Services.prefs.removeObserver("permissions.places-sites-limit", this, false);
Services.obs.removeObserver(this, "perm-changed");
diff --git a/application/palemoon/components/preferences/aboutPermissions.xul b/application/palemoon/components/preferences/aboutPermissions.xul
index bd5a205c7a..279de8d9b1 100644
--- a/application/palemoon/components/preferences/aboutPermissions.xul
+++ b/application/palemoon/components/preferences/aboutPermissions.xul
@@ -391,6 +391,26 @@
</vbox>
</hbox>
+ <!-- Push Notifications -->
+ <hbox id="push-pref-item"
+ class="pref-item" align="top">
+ <image class="pref-icon" type="push"/>
+ <vbox>
+ <label class="pref-title" value="&push.label;"/>
+ <hbox align="center">
+ <menulist id="push-menulist"
+ class="pref-menulist"
+ type="push"
+ oncommand="AboutPermissions.onPermissionCommand(event);">
+ <menupopup>
+ <menuitem id="push-0" value="0" label="&permission.alwaysAsk;"/>
+ <menuitem id="push-1" value="1" label="&permission.allow;"/>
+ <menuitem id="push-2" value="2" label="&permission.block;"/>
+ </menupopup>
+ </menulist>
+ </hbox>
+ </vbox>
+ </hbox>
</vbox>
</hbox>
diff --git a/application/palemoon/locales/en-US/chrome/browser/browser.properties b/application/palemoon/locales/en-US/chrome/browser/browser.properties
index bf363d1035..aff5b6f7db 100644
--- a/application/palemoon/locales/en-US/chrome/browser/browser.properties
+++ b/application/palemoon/locales/en-US/chrome/browser/browser.properties
@@ -305,6 +305,15 @@ webNotifications.neverShow=Always Block Notifications
webNotifications.neverShow.accesskey=N
webNotifications.showFromSite=Would you like to show notifications from %S?
+# Push Notifications
+push.allowForSession=Allow for Session
+push.allowForSession.accesskey=S
+push.alwaysAllow=Always Allow Push Notifications
+push.alwaysAllow.accesskey=A
+push.alwaysBlock=Always Block Push Notifications
+push.alwaysBlock.accesskey=B
+push.enablePush=Would you like to allow Push Notifications for %S?
+
# Pointer lock UI
pointerLock.allow2=Hide pointer
diff --git a/application/palemoon/locales/en-US/chrome/browser/preferences/aboutPermissions.dtd b/application/palemoon/locales/en-US/chrome/browser/preferences/aboutPermissions.dtd
index ff1da3dd0d..731be8fe53 100644
--- a/application/palemoon/locales/en-US/chrome/browser/preferences/aboutPermissions.dtd
+++ b/application/palemoon/locales/en-US/chrome/browser/preferences/aboutPermissions.dtd
@@ -54,3 +54,5 @@
<!ENTITY fullscreen.label "Fullscreen">
<!ENTITY pointerLock.label "Hide the Mouse Pointer">
+
+<!ENTITY push.label "Receive Push Notifications">
diff --git a/application/palemoon/themes/linux/Push-16.png b/application/palemoon/themes/linux/Push-16.png
new file mode 100644
index 0000000000..082b177811
--- /dev/null
+++ b/application/palemoon/themes/linux/Push-16.png
Binary files differ
diff --git a/application/palemoon/themes/linux/Push-64.png b/application/palemoon/themes/linux/Push-64.png
new file mode 100644
index 0000000000..6e09ab9c32
--- /dev/null
+++ b/application/palemoon/themes/linux/Push-64.png
Binary files differ
diff --git a/application/palemoon/themes/linux/browser.css b/application/palemoon/themes/linux/browser.css
index 4f4964db8d..0be53ca265 100644
--- a/application/palemoon/themes/linux/browser.css
+++ b/application/palemoon/themes/linux/browser.css
@@ -1169,6 +1169,10 @@ toolbar[iconsize="small"] #webrtc-status-button {
list-style-image: url(chrome://browser/skin/Geolocation-64.png);
}
+.popup-notification-icon[popupid="push"] {
+ list-style-image: url(chrome://browser/skin/Push-64.png);
+}
+
.popup-notification-icon[popupid="xpinstall-disabled"],
.popup-notification-icon[popupid="addon-progress"],
.popup-notification-icon[popupid="addon-install-cancelled"],
@@ -1288,6 +1292,10 @@ toolbar[iconsize="small"] #webrtc-status-button {
list-style-image: url(chrome://browser/skin/Geolocation-16.png);
}
+#push-notification-icon {
+ list-style-image: url(chrome://browser/skin/Push-16.png);
+}
+
#addons-notification-icon {
list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.png);
}
diff --git a/application/palemoon/themes/linux/jar.mn b/application/palemoon/themes/linux/jar.mn
index 7e67d01293..d1c6d40132 100644
--- a/application/palemoon/themes/linux/jar.mn
+++ b/application/palemoon/themes/linux/jar.mn
@@ -23,6 +23,8 @@ browser.jar:
* skin/classic/browser/engineManager.css
skin/classic/browser/Geolocation-16.png
skin/classic/browser/Geolocation-64.png
+ skin/classic/browser/Push-16.png
+ skin/classic/browser/Push-64.png
skin/classic/browser/Go-arrow.png
skin/classic/browser/identity.png
skin/classic/browser/imagedocument.png
diff --git a/application/palemoon/themes/linux/preferences/aboutPermissions.css b/application/palemoon/themes/linux/preferences/aboutPermissions.css
index 4065688310..a642b385f3 100644
--- a/application/palemoon/themes/linux/preferences/aboutPermissions.css
+++ b/application/palemoon/themes/linux/preferences/aboutPermissions.css
@@ -98,6 +98,9 @@
.pref-icon[type="geo"] {
list-style-image: url(chrome://browser/skin/Geolocation-64.png);
}
+.pref-icon[type="push"] {
+ list-style-image: url(chrome://browser/skin/Push-64.png);
+}
.pref-icon[type="indexedDB"] {
list-style-image: url(chrome://global/skin/icons/question-64.png);
}
diff --git a/application/palemoon/themes/osx/Push-16.png b/application/palemoon/themes/osx/Push-16.png
new file mode 100644
index 0000000000..54ef8f8eae
--- /dev/null
+++ b/application/palemoon/themes/osx/Push-16.png
Binary files differ
diff --git a/application/palemoon/themes/osx/Push-64.png b/application/palemoon/themes/osx/Push-64.png
new file mode 100644
index 0000000000..099b9c76f3
--- /dev/null
+++ b/application/palemoon/themes/osx/Push-64.png
Binary files differ
diff --git a/application/palemoon/themes/osx/browser.css b/application/palemoon/themes/osx/browser.css
index 8d709d8e1d..26661558fa 100644
--- a/application/palemoon/themes/osx/browser.css
+++ b/application/palemoon/themes/osx/browser.css
@@ -1848,6 +1848,10 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
list-style-image: url(chrome://browser/skin/Geolocation-64.png);
}
+.popup-notification-icon[popupid="push"] {
+ list-style-image: url(chrome://browser/skin/Push-64.png);
+}
+
.popup-notification-icon[popupid="xpinstall-disabled"],
.popup-notification-icon[popupid="addon-progress"],
.popup-notification-icon[popupid="addon-install-cancelled"],
@@ -1975,6 +1979,10 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
list-style-image: url(chrome://browser/skin/Geolocation-16.png);
}
+#push-notification-icon {
+ list-style-image: url(chrome://browser/skin/Push-16.png);
+}
+
#addons-notification-icon {
list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.png);
}
diff --git a/application/palemoon/themes/osx/jar.mn b/application/palemoon/themes/osx/jar.mn
index 186cd8a750..0e12fdffa8 100644
--- a/application/palemoon/themes/osx/jar.mn
+++ b/application/palemoon/themes/osx/jar.mn
@@ -24,6 +24,8 @@ browser.jar:
* skin/classic/browser/engineManager.css
skin/classic/browser/Geolocation-16.png
skin/classic/browser/Geolocation-64.png
+ skin/classic/browser/Push-16.png
+ skin/classic/browser/Push-64.png
skin/classic/browser/Info.png
skin/classic/browser/identity.png
skin/classic/browser/imagedocument.png
diff --git a/application/palemoon/themes/osx/preferences/aboutPermissions.css b/application/palemoon/themes/osx/preferences/aboutPermissions.css
index cfb941bbb7..e10776e671 100644
--- a/application/palemoon/themes/osx/preferences/aboutPermissions.css
+++ b/application/palemoon/themes/osx/preferences/aboutPermissions.css
@@ -101,6 +101,9 @@
.pref-icon[type="geo"] {
list-style-image: url(chrome://browser/skin/Geolocation-64.png);
}
+.pref-icon[type="push"] {
+ list-style-image: url(chrome://browser/skin/Push-64.png);
+}
.pref-icon[type="indexedDB"] {
list-style-image: url(chrome://global/skin/icons/question-64.png);
}
diff --git a/application/palemoon/themes/windows/Push-16.png b/application/palemoon/themes/windows/Push-16.png
new file mode 100644
index 0000000000..d710e7336d
--- /dev/null
+++ b/application/palemoon/themes/windows/Push-16.png
Binary files differ
diff --git a/application/palemoon/themes/windows/Push-64.png b/application/palemoon/themes/windows/Push-64.png
new file mode 100644
index 0000000000..27fecb8588
--- /dev/null
+++ b/application/palemoon/themes/windows/Push-64.png
Binary files differ
diff --git a/application/palemoon/themes/windows/browser.css b/application/palemoon/themes/windows/browser.css
index 1c51accae4..6379eac603 100644
--- a/application/palemoon/themes/windows/browser.css
+++ b/application/palemoon/themes/windows/browser.css
@@ -2337,6 +2337,10 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
list-style-image: url(chrome://browser/skin/Geolocation-64.png);
}
+.popup-notification-icon[popupid="push"] {
+ list-style-image: url(chrome://browser/skin/Push-64.png);
+}
+
.popup-notification-icon[popupid="xpinstall-disabled"],
.popup-notification-icon[popupid="addon-progress"],
.popup-notification-icon[popupid="addon-install-cancelled"],
@@ -2462,6 +2466,10 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
list-style-image: url(chrome://browser/skin/Geolocation-16.png);
}
+#push-notification-icon {
+ list-style-image: url(chrome://browser/skin/Push-16.png);
+}
+
#addons-notification-icon {
list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.png);
}
diff --git a/application/palemoon/themes/windows/jar.mn b/application/palemoon/themes/windows/jar.mn
index a66714b133..d649d9c41a 100644
--- a/application/palemoon/themes/windows/jar.mn
+++ b/application/palemoon/themes/windows/jar.mn
@@ -25,6 +25,8 @@ browser.jar:
* skin/classic/browser/engineManager.css
skin/classic/browser/Geolocation-16.png
skin/classic/browser/Geolocation-64.png
+ skin/classic/browser/Push-16.png
+ skin/classic/browser/Push-64.png
skin/classic/browser/Info.png
skin/classic/browser/identity.png
skin/classic/browser/imagedocument.png
diff --git a/application/palemoon/themes/windows/preferences/aboutPermissions.css b/application/palemoon/themes/windows/preferences/aboutPermissions.css
index d9db6ccbf4..0a2a053584 100644
--- a/application/palemoon/themes/windows/preferences/aboutPermissions.css
+++ b/application/palemoon/themes/windows/preferences/aboutPermissions.css
@@ -101,6 +101,9 @@
.pref-icon[type="geo"] {
list-style-image: url(chrome://browser/skin/Geolocation-64.png);
}
+.pref-icon[type="push"] {
+ list-style-image: url(chrome://browser/skin/Push-64.png);
+}
.pref-icon[type="indexedDB"] {
list-style-image: url(chrome://global/skin/icons/question-48.png);
}