[Pkg-mozext-commits] [requestpolicy] 118/280: RP Menu: Hide permanent rules in Private Windows
David Prévot
taffit at moszumanska.debian.org
Sat May 2 20:30:09 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository requestpolicy.
commit e17c52d45afaa1f64d8b81da1e05cc113d29b22e
Author: Martin Kimmerle <dev at 256k.de>
Date: Tue Jan 6 14:48:36 2015 +0100
RP Menu: Hide permanent rules in Private Windows
for details see #533
---
src/content/lib/utils/windows.jsm | 33 ++++++++++++++++++++++++++
src/content/main/requestpolicy-service.jsm | 37 ++++++++++--------------------
src/content/ui/menu.js | 32 ++++++++++++++++----------
3 files changed, 65 insertions(+), 37 deletions(-)
diff --git a/src/content/lib/utils/windows.jsm b/src/content/lib/utils/windows.jsm
index 52197a1..ce38ef9 100644
--- a/src/content/lib/utils/windows.jsm
+++ b/src/content/lib/utils/windows.jsm
@@ -55,6 +55,39 @@ let WindowUtils = (function() {
.getInterface(Ci.nsIDOMWindow);
};
+ //
+ // Private Browsing
+ //
+
+ // depending on the Firefox vesion, create the `isWindowPrivate` function
+ self.isWindowPrivate = (function() {
+ try {
+ // Firefox 20+
+ Components.utils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
+
+ return (function(aWindow) {
+ return PrivateBrowsingUtils.isWindowPrivate(aWindow)
+ });
+ } catch(e) {
+ // pre Firefox 20
+ try {
+ let pbs = Cc["@mozilla.org/privatebrowsing;1"]
+ .getService(Ci.nsIPrivateBrowsingService);
+
+ return (function(aWindow) {
+ return pbs.privateBrowsingEnabled;
+ });
+ } catch(e) {
+ Components.utils.reportError(e);
+ // It's uncertain if private browsing is possible at all, so assume
+ // that Private Browsing is not possible.
+ return (function(aWindow) {
+ return true;
+ });
+ }
+ }
+ }());
+
//
// Window & DOM utilities
diff --git a/src/content/main/requestpolicy-service.jsm b/src/content/main/requestpolicy-service.jsm
index 5eefc4d..2179cc8 100644
--- a/src/content/main/requestpolicy-service.jsm
+++ b/src/content/main/requestpolicy-service.jsm
@@ -116,17 +116,7 @@ let rpService = (function() {
subscriptions.update(updateCompleted, serials, defaultPolicy);
}
- // TODO: fix this
- function initializePrivateBrowsing() {
- try {
- var pbs = Cc["@mozilla.org/privatebrowsing;1"].
- getService(Ci.nsIPrivateBrowsingService);
- self._privateBrowsingEnabled = pbs.privateBrowsingEnabled;
- } catch (e) {
- // Ignore exceptions from browsers that do not support private browsing.
- }
- }
-
+ // TODO: move to window manager
function showWelcomeWindow() {
if (!rpPrefBranch.getBoolPref("welcomeWindowShown")) {
var url = "about:requestpolicy?setup";
@@ -165,10 +155,14 @@ let rpService = (function() {
ProcessEnvironment.enqueueStartupFunction(function() {
ProcessEnvironment.obMan.observe({
"sessionstore-windows-restored": self.observe,
- "private-browsing": self.observe,
SUBSCRIPTION_UPDATED_TOPIC: self.observe,
SUBSCRIPTION_ADDED_TOPIC: self.observe,
- SUBSCRIPTION_REMOVED_TOPIC: self.observe
+ SUBSCRIPTION_REMOVED_TOPIC: self.observe,
+
+ // support for old browsers (Firefox <20)
+ // TODO: support per-window temporary rules
+ // see https://github.com/RequestPolicyContinued/requestpolicy/issues/533#issuecomment-68851396
+ "private-browsing": self.observe
});
});
@@ -186,13 +180,6 @@ let rpService = (function() {
self = {
- // TODO: private windows instead.
- _privateBrowsingEnabled : false,
-
-
- isPrivateBrowsingEnabled: function() {
- return self._privateBrowsingEnabled;
- },
getSubscriptions: function() {
return subscriptions;
},
@@ -250,16 +237,16 @@ let rpService = (function() {
case "sessionstore-windows-restored":
showWelcomeWindow();
break;
+
+ // support for old browsers (Firefox <20)
case "private-browsing" :
- if (data == "enter") {
- self._privateBrowsingEnabled = true;
- } else if (data == "exit") {
- self._privateBrowsingEnabled = false;
+ if (data == "exit") {
PolicyManager.revokeTemporaryRules();
}
break;
+
default :
- Logger.warning(Logger.TYPE_ERROR, "uknown topic observed: " + topic);
+ Logger.warning(Logger.TYPE_ERROR, "unknown topic observed: " + topic);
}
},
};
diff --git a/src/content/ui/menu.js b/src/content/ui/menu.js
index f1cb44f..d50cad7 100644
--- a/src/content/ui/menu.js
+++ b/src/content/ui/menu.js
@@ -47,6 +47,7 @@ requestpolicy.menu = (function() {
GUILocation, GUILocationProperties} = iMod("lib/gui-location");
let {StringUtils} = iMod("lib/utils/strings");
let {DOMUtils} = iMod("lib/utils/dom");
+ let {WindowUtils} = iMod("lib/utils/windows");
let {rpService} = iMod("main/requestpolicy-service");
let {C} = iMod("lib/utils/constants");
@@ -97,6 +98,16 @@ requestpolicy.menu = (function() {
}
};
+
+ /**
+ * „Should be permanent rules be displayed or hidden?“
+ */
+ function mayPermRulesBeDisplayed() {
+ return WindowUtils.isWindowPrivate(window) &&
+ !rpPrefBranch.getBoolPref("privateBrowsingPermanentWhitelisting");
+ }
+
+
self.prepareMenu = function() {
try {
var disabled = Prefs.isBlockingDisabled();
@@ -145,9 +156,6 @@ requestpolicy.menu = (function() {
.getAllRequestsInBrowser(gBrowser.selectedBrowser);
self._allRequestsOnDocument.print("_allRequestsOnDocument");
- self._privateBrowsingEnabled = rpService.isPrivateBrowsingEnabled()
- && !rpPrefBranch.getBoolPref("privateBrowsingPermanentWhitelisting");
-
self._setPrivateBrowsingStyles();
// var hidePrefetchInfo = !Prefs.isPrefetchEnabled();
@@ -349,13 +357,13 @@ requestpolicy.menu = (function() {
if (Prefs.isDefaultAllow()) {
// It seems pretty rare that someone will want to add a rule to block all
// requests from a given origin.
- //if (!self._privateBrowsingEnabled) {
+ //if (mayPermRulesBeDisplayed() === true) {
// var item = self._addMenuItemDenyOrigin(
// self._addRulesList, ruleData);
//}
//var item = self._addMenuItemTempDenyOrigin(self._addRulesList, ruleData);
} else {
- if (!self._privateBrowsingEnabled) {
+ if (mayPermRulesBeDisplayed() === true) {
var item = self._addMenuItemAllowOrigin(self._addRulesList, ruleData);
}
var item = self._addMenuItemTempAllowOrigin(self._addRulesList, ruleData);
@@ -380,7 +388,7 @@ requestpolicy.menu = (function() {
// -- this enables support for blacklisting.
if (!PolicyManager.ruleExists(C.RULE_ACTION_ALLOW, ruleData) &&
!PolicyManager.ruleExists(C.RULE_ACTION_DENY, ruleData)) {
- if (!self._privateBrowsingEnabled) {
+ if (mayPermRulesBeDisplayed() === true) {
var item = self._addMenuItemDenyOriginToDest(
self._addRulesList, ruleData);
}
@@ -390,7 +398,7 @@ requestpolicy.menu = (function() {
if (!PolicyManager.ruleExists(C.RULE_ACTION_ALLOW, destOnlyRuleData) &&
!PolicyManager.ruleExists(C.RULE_ACTION_DENY, destOnlyRuleData)) {
- if (!self._privateBrowsingEnabled) {
+ if (mayPermRulesBeDisplayed() === true) {
var item = self._addMenuItemDenyDest(
self._addRulesList, destOnlyRuleData);
}
@@ -406,7 +414,7 @@ requestpolicy.menu = (function() {
// -- this enables support for whitelisting.
if (!PolicyManager.ruleExists(C.RULE_ACTION_ALLOW, ruleData) &&
!PolicyManager.ruleExists(C.RULE_ACTION_DENY, ruleData)) {
- if (!self._privateBrowsingEnabled) {
+ if (mayPermRulesBeDisplayed() === true) {
var item = self._addMenuItemAllowOriginToDest(
self._addRulesList, ruleData);
}
@@ -416,7 +424,7 @@ requestpolicy.menu = (function() {
if (!PolicyManager.ruleExists(C.RULE_ACTION_ALLOW, destOnlyRuleData) &&
!PolicyManager.ruleExists(C.RULE_ACTION_DENY, destOnlyRuleData)) {
- if (!self._privateBrowsingEnabled) {
+ if (mayPermRulesBeDisplayed() === true) {
var item = self._addMenuItemAllowDest(
self._addRulesList, destOnlyRuleData);
}
@@ -466,7 +474,7 @@ requestpolicy.menu = (function() {
self._setPrivateBrowsingStyles = function() {
document.getElementById('rp-details').setAttribute(
- 'class', self._privateBrowsingEnabled ? 'privatebrowsing' : '');
+ 'class', mayPermRulesBeDisplayed() === true ? '' : 'privatebrowsing');
};
self._resetSelectedOrigin = function() {
@@ -1181,7 +1189,7 @@ requestpolicy.menu = (function() {
};
if (!PolicyManager.ruleExists(C.RULE_ACTION_ALLOW, ruleData) &&
!PolicyManager.ruleExists(C.RULE_ACTION_DENY, ruleData)) {
- if (!self._privateBrowsingEnabled) {
+ if (mayPermRulesBeDisplayed() === true) {
var item = self._addMenuItemAllowOriginToDest(list, ruleData);
}
var item = self._addMenuItemTempAllowOriginToDest(list, ruleData);
@@ -1194,7 +1202,7 @@ requestpolicy.menu = (function() {
};
if (!PolicyManager.ruleExists(C.RULE_ACTION_ALLOW, destOnlyRuleData) &&
!PolicyManager.ruleExists(C.RULE_ACTION_DENY, destOnlyRuleData)) {
- if (!self._privateBrowsingEnabled) {
+ if (mayPermRulesBeDisplayed() === true) {
var item = self._addMenuItemAllowDest(list, destOnlyRuleData);
}
var item = self._addMenuItemTempAllowDest(list, destOnlyRuleData);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git
More information about the Pkg-mozext-commits
mailing list