[Pkg-mozext-commits] [requestpolicy] 245/257: [fix] subscriptions: enable regardless of default policy
David Prévot
taffit at moszumanska.debian.org
Thu Jan 28 03:20:18 UTC 2016
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository requestpolicy.
commit 83f82b9b888ff5d6777e3ac4f873c259816058eb
Author: Martin Kimmerle <dev at 256k.de>
Date: Fri Dec 25 22:28:45 2015 +0100
[fix] subscriptions: enable regardless of default policy
Resolves #529.
---
src/content/lib/subscription.jsm | 20 +-------
src/content/main/requestpolicy-service.jsm | 17 +++----
src/content/settings/common.js | 51 --------------------
src/content/settings/defaultpolicy.js | 6 ---
src/content/settings/setup.js | 7 +--
src/content/settings/subscriptions.js | 45 ------------------
tests/marionette/rp_puppeteer/tests/manifest.ini | 1 +
.../tests/test_subscriptions_settings.py | 48 +++++++++++++++++++
.../rp_puppeteer/ui/settings/__init__.py | 4 ++
.../rp_puppeteer/ui/settings/subscriptions.py | 55 ++++++++++++++++++++++
tests/marionette/tests/settings/manifest.ini | 1 +
.../tests/settings/test_subscriptions.py | 54 +++++++++++++++++++++
12 files changed, 176 insertions(+), 133 deletions(-)
diff --git a/src/content/lib/subscription.jsm b/src/content/lib/subscription.jsm
index eb74ff5..122f55c 100644
--- a/src/content/lib/subscription.jsm
+++ b/src/content/lib/subscription.jsm
@@ -125,7 +125,7 @@ UserSubscriptions.prototype = {
FileUtil.stringToFile(JSON.stringify(this._data), userSubsFile);
},
- getSubscriptionInfo: function(defaultPolicy) {
+ getSubscriptionInfo: function() {
var lists = this._data.lists;
var result = {};
for (var listName in lists) {
@@ -134,12 +134,6 @@ UserSubscriptions.prototype = {
}
result[listName] = {};
for (let subName in lists[listName].subscriptions) {
- if (defaultPolicy === "allow" && subName.indexOf("allow_") === 0) {
- continue;
- }
- if (defaultPolicy === "deny" && subName.indexOf("deny_") === 0) {
- continue;
- }
result[listName][subName] = null;
}
}
@@ -172,7 +166,7 @@ UserSubscriptions.prototype = {
// make a big fat mess of the code, or more likely I'm just not good at
// making it not a mess. On the other hand, this parallelizes the update
// requests, though that may not be a great thing in this case.
- update: function(callback, serials, defaultPolicy) {
+ update: function(callback, serials) {
var updatingLists = {};
var updateResults = {};
@@ -207,16 +201,6 @@ UserSubscriptions.prototype = {
" " + subName);
continue;
}
- if (defaultPolicy === "allow" && subName.indexOf("allow_") === 0) {
- dprint("Skipping update of subscription that is only used " +
- "with a default deny policy: " + subName);
- continue;
- }
- if (defaultPolicy === "deny" && subName.indexOf("deny_") === 0) {
- dprint("Skipping update of subscription that is only used " +
- "with a default allow policy: " + subName);
- continue;
- }
updateSubs[subName] = {"serial": serials[listName][subName]};
subCount++;
}
diff --git a/src/content/main/requestpolicy-service.jsm b/src/content/main/requestpolicy-service.jsm
index 2b1dcc6..23f54b7 100644
--- a/src/content/main/requestpolicy-service.jsm
+++ b/src/content/main/requestpolicy-service.jsm
@@ -22,7 +22,7 @@
*/
/* global Components */
-const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+const {utils: Cu} = Components;
/* exported rpService */
this.EXPORTED_SYMBOLS = ["rpService"];
@@ -37,7 +37,6 @@ let {Prefs} = importModule("models/prefs");
let {PolicyManager} = importModule("lib/policy-manager");
let {UserSubscriptions, SUBSCRIPTION_UPDATED_TOPIC, SUBSCRIPTION_ADDED_TOPIC,
SUBSCRIPTION_REMOVED_TOPIC} = importModule("lib/subscription");
-let {C} = importModule("lib/utils/constants");
let {Environment, ProcessEnvironment} = importModule("lib/environment");
let {WindowUtils} = importModule("lib/utils/windows");
let {Info} = importModule("lib/utils/info");
@@ -63,10 +62,8 @@ var rpService = (function() {
subscriptions = new UserSubscriptions();
PolicyManager.loadUserRules();
- let defaultPolicy = Prefs.isDefaultAllow() ? "allow" : "deny";
-
let failures = PolicyManager.loadSubscriptionRules(
- subscriptions.getSubscriptionInfo(defaultPolicy));
+ subscriptions.getSubscriptionInfo());
// TODO: check a preference that indicates the last time we checked for
// updates. Don't do it if we've done it too recently.
// TODO: Maybe we should probably ship snapshot versions of the official
@@ -92,7 +89,7 @@ var rpService = (function() {
Logger.info(Logger.TYPE_INTERNAL,
"Subscription updates completed: " + result);
}
- subscriptions.update(updateCompleted, serials, defaultPolicy);
+ subscriptions.update(updateCompleted, serials);
}
// TODO: move to window manager
@@ -281,6 +278,10 @@ var rpService = (function() {
self.observe = function(subject, topic, data) {
switch (topic) {
+
+ // FIXME: The subscription logic should reside in the
+ // subscription module.
+
case SUBSCRIPTION_UPDATED_TOPIC: {
Logger.debug(Logger.TYPE_INTERNAL, "XXX updated: " + data);
// TODO: check if the subscription is enabled. The user might have
@@ -328,13 +329,13 @@ var rpService = (function() {
break;
// support for old browsers (Firefox <20)
- case "private-browsing" :
+ case "private-browsing":
if (data === "exit") {
PolicyManager.revokeTemporaryRules();
}
break;
- default :
+ default:
Logger.warning(Logger.TYPE_ERROR, "unknown topic observed: " + topic);
}
};
diff --git a/src/content/settings/common.js b/src/content/settings/common.js
index 1900f17..b633832 100644
--- a/src/content/settings/common.js
+++ b/src/content/settings/common.js
@@ -5,14 +5,9 @@ var {common, WinEnv, elManager, $id, $str} = (function() {
/* global Components */
const {utils: Cu} = Components;
- var {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
-
var {ScriptLoader: {importModule}} = Cu.import(
"chrome://rpcontinued/content/lib/script-loader.jsm", {});
var {StringUtils} = importModule("lib/utils/strings");
- var {Prefs} = importModule("models/prefs");
- var {UserSubscriptions, SUBSCRIPTION_ADDED_TOPIC,
- SUBSCRIPTION_REMOVED_TOPIC} = importModule("lib/subscription");
var {Environment, ProcessEnvironment} = importModule("lib/environment");
//============================================================================
@@ -40,52 +35,6 @@ var {common, WinEnv, elManager, $id, $str} = (function() {
var common = {};
- /*
- Based on the user's current default policy (allow or deny), swaps out which
- subscriptions are enabled. That is, each subscription are either intended to be
- used with a default allow or a default policy policy. So, if this has changed
- then calling this function will disable/enable the correct subscriptions.
- */
- // TODO: rename this function.
- common.switchSubscriptionPolicies = function() {
- var subscriptions = new UserSubscriptions();
-
- var newDefaultPolicy = Prefs.isDefaultAllow() ? "allow" : "deny";
- var oldDefaultPolicy = Prefs.isDefaultAllow() ? "deny" : "allow";
-
- var listName;
- var subName;
- var subInfo;
-
- var oldSubInfo = subscriptions.getSubscriptionInfo(oldDefaultPolicy);
- for (listName in oldSubInfo) {
- for (subName in oldSubInfo[listName]) {
- if (!subName.startsWith("allow_") && subName.startsWith("deny_")) {
- continue;
- }
- subInfo = {};
- subInfo[listName] = {};
- subInfo[listName][subName] = true;
- Services.obs.notifyObservers(null, SUBSCRIPTION_REMOVED_TOPIC,
- JSON.stringify(subInfo));
- }
- }
-
- var newSubInfo = subscriptions.getSubscriptionInfo(newDefaultPolicy);
- for (listName in newSubInfo) {
- for (subName in newSubInfo[listName]) {
- if (!subName.startsWith("allow_") && !subName.startsWith("deny_")) {
- continue;
- }
- subInfo = {};
- subInfo[listName] = {};
- subInfo[listName][subName] = true;
- Services.obs.notifyObservers(null, SUBSCRIPTION_ADDED_TOPIC,
- JSON.stringify(subInfo));
- }
- }
- };
-
/**
* Get a string representation of an endpoint (origin or dest) specification.
*
diff --git a/src/content/settings/defaultpolicy.js b/src/content/settings/defaultpolicy.js
index aa61b5d..1fcd8f2 100644
--- a/src/content/settings/defaultpolicy.js
+++ b/src/content/settings/defaultpolicy.js
@@ -56,9 +56,6 @@
var allow = event.target.checked;
Prefs.set("defaultPolicy.allow", allow);
Services.prefs.savePrefFile(null);
- // Reload all subscriptions because it's likely that different
- // subscriptions will now be active.
- common.switchSubscriptionPolicies();
updateDisplay();
showManageSubscriptionsLink();
});
@@ -69,9 +66,6 @@
var deny = event.target.checked;
Prefs.set("defaultPolicy.allow", !deny);
Services.prefs.savePrefFile(null);
- // Reload all subscriptions because it's likely that different
- // subscriptions will now be active.
- common.switchSubscriptionPolicies();
updateDisplay();
showManageSubscriptionsLink();
});
diff --git a/src/content/settings/setup.js b/src/content/settings/setup.js
index 1c12ac5..4bcffc1 100644
--- a/src/content/settings/setup.js
+++ b/src/content/settings/setup.js
@@ -48,7 +48,6 @@
$id("defaultallow").checked);
Services.prefs.savePrefFile(null);
setAllowSameDomainBlockDisplay();
- handleSubscriptionsChange();
}
function handleAllowSameDomainChange() {
@@ -67,8 +66,6 @@
function handleSubscriptionsChange() {
var enableSubs = $id("enablesubs").checked;
- var enableAllowSubs = enableSubs && $id("defaultdeny").checked;
- var enableDenySubs = enableSubs && $id("defaultallow").checked;
var subs = {
"allow_embedded": {},
"allow_extensions": {},
@@ -82,8 +79,8 @@
var subInfo = {};
subInfo.official = {};
subInfo.official[subName] = true;
- if (enableAllowSubs && subName.startsWith("allow_") ||
- enableDenySubs && subName.startsWith("deny_")) {
+ // FIXME: Add a pref to disable subscriptions globally (#713)
+ if (enableSubs) {
userSubs.addSubscription("official", subName);
Services.obs.notifyObservers(null, SUBSCRIPTION_ADDED_TOPIC,
JSON.stringify(subInfo));
diff --git a/src/content/settings/subscriptions.js b/src/content/settings/subscriptions.js
index f93887a..9640909 100644
--- a/src/content/settings/subscriptions.js
+++ b/src/content/settings/subscriptions.js
@@ -8,7 +8,6 @@
var {ScriptLoader: {importModule}} = Cu.import(
"chrome://rpcontinued/content/lib/script-loader.jsm", {});
- var {Prefs} = importModule("models/prefs");
var {Logger} = importModule("lib/logger");
var {SUBSCRIPTION_ADDED_TOPIC, SUBSCRIPTION_REMOVED_TOPIC} =
importModule("lib/subscription");
@@ -38,30 +37,6 @@
common.localize(PAGE_STRINGS);
});
- /**
- * @param {String} policy
- * "allow" or "deny"
- */
- function getDefaultPolicyElements(policy) {
- var selector = "[data-defaultpolicy=" + policy + "]";
- var matches = document.body.querySelectorAll(selector);
- var elements = Array.prototype.slice.call(matches);
- return elements;
- }
-
- function displayDefaultPolicyElements(policy, display) {
- // note: display could be undefined.
- display = display === false ? false : true;
- var elements = getDefaultPolicyElements(policy);
- for (var i = 0, len = elements.length; i < len; i++) {
- if (display) {
- elements[i].removeAttribute("style");
- } else {
- elements[i].style.display = "none";
- }
- }
- }
-
function getInputElement(subName) {
var elements = document.body.querySelectorAll(
"input[name=" + subName + "]");
@@ -92,18 +67,6 @@
var element = allSubElements[i];
element.input.checked = element.id in subsInfo.official;
}
-
- var currentPolicy;
- var otherPolicy;
- if (Prefs.isDefaultAllow()) {
- currentPolicy = "allow";
- otherPolicy = "deny";
- } else {
- currentPolicy = "deny";
- otherPolicy = "allow";
- }
- displayDefaultPolicyElements(currentPolicy, true);
- displayDefaultPolicyElements(otherPolicy, false);
}
function handleSubscriptionCheckboxChange(event) {
@@ -145,14 +108,6 @@
elManager.addListener(el, "change", handleSubscriptionCheckboxChange);
}
- var selector = "[data-defaultpolicy=" +
- (Prefs.isDefaultAllow() ? "deny" : "allow") + "]";
- var matches = document.body.querySelectorAll(selector);
- var hideElements = Array.prototype.slice.call(matches);
- for (var i = 0; i < hideElements.length; i++) {
- hideElements[i].style.display = "none";
- }
-
// call updateDisplay() every time a subscription is added or removed
WinEnv.obMan.observe([
SUBSCRIPTION_ADDED_TOPIC,
diff --git a/tests/marionette/rp_puppeteer/tests/manifest.ini b/tests/marionette/rp_puppeteer/tests/manifest.ini
index 2831a72..01999f8 100644
--- a/tests/marionette/rp_puppeteer/tests/manifest.ini
+++ b/tests/marionette/rp_puppeteer/tests/manifest.ini
@@ -8,6 +8,7 @@
[test_requests.py]
[test_rules.py]
[test_rules_table.py]
+[test_subscriptions_settings.py]
[test_tabs.py]
[test_web_utils.py]
[test_your_policy.py]
diff --git a/tests/marionette/rp_puppeteer/tests/test_subscriptions_settings.py b/tests/marionette/rp_puppeteer/tests/test_subscriptions_settings.py
new file mode 100644
index 0000000..97d5bab
--- /dev/null
+++ b/tests/marionette/rp_puppeteer/tests/test_subscriptions_settings.py
@@ -0,0 +1,48 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from rp_ui_harness import RequestPolicyTestCase
+
+
+class TestSubscriptionsSettings(RequestPolicyTestCase):
+
+ def setUp(self):
+ super(TestSubscriptionsSettings, self).setUp()
+ self.marionette.set_context("content")
+
+ def tearDown(self):
+ try:
+ self.marionette.set_context("chrome")
+ finally:
+ super(TestSubscriptionsSettings, self).tearDown()
+
+ ################
+ # Test Methods #
+ ################
+
+ def test_open(self):
+ self.marionette.navigate("about:blank")
+ self.assertNotEqual(self.marionette.get_url(),
+ "about:requestpolicy?subscriptions")
+ self.settings.subscriptions.open()
+ self.assertEqual(self.marionette.get_url(),
+ "about:requestpolicy?subscriptions")
+
+ def test_enable_disable(self):
+ def test(sub_name):
+ self.assertFalse(self.settings.subscriptions.is_enabled(sub_name))
+ self.settings.subscriptions.enable(sub_name)
+ self.assertTrue(self.settings.subscriptions.is_enabled(sub_name))
+ self.settings.subscriptions.disable(sub_name)
+ self.assertFalse(self.settings.subscriptions.is_enabled(sub_name))
+
+ self.settings.subscriptions.open()
+ self.settings.subscriptions.disable_all()
+
+ test("allow_embedded")
+ test("allow_extensions")
+ test("allow_functionality")
+ test("allow_mozilla")
+ test("allow_sameorg")
+ test("deny_trackers")
diff --git a/tests/marionette/rp_puppeteer/ui/settings/__init__.py b/tests/marionette/rp_puppeteer/ui/settings/__init__.py
index a0b6a07..608bc8d 100644
--- a/tests/marionette/rp_puppeteer/ui/settings/__init__.py
+++ b/tests/marionette/rp_puppeteer/ui/settings/__init__.py
@@ -12,6 +12,10 @@ class Settings(BaseLib):
def old_rules(self):
pass
+ @use_class_as_property('ui.settings.subscriptions.SubscriptionsSettings')
+ def subscriptions(self):
+ pass
+
@use_class_as_property('ui.settings.your_policy.YourPolicy')
def your_policy(self):
pass
diff --git a/tests/marionette/rp_puppeteer/ui/settings/subscriptions.py b/tests/marionette/rp_puppeteer/ui/settings/subscriptions.py
new file mode 100644
index 0000000..99976b7
--- /dev/null
+++ b/tests/marionette/rp_puppeteer/ui/settings/subscriptions.py
@@ -0,0 +1,55 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from rp_puppeteer.base import BaseLib
+import time
+
+
+class SubscriptionsSettings(BaseLib):
+
+ #################################
+ # Public Properties and Methods #
+ #################################
+
+ def open(self):
+ self.marionette.navigate("about:requestpolicy?subscriptions")
+
+ def enable(self, subscription_name):
+ if not self.is_enabled(subscription_name):
+ self.toggle(subscription_name)
+
+ def disable(self, subscription_name):
+ if self.is_enabled(subscription_name):
+ self.toggle(subscription_name)
+
+ def is_enabled(self, subscription_name):
+ return self._get(subscription_name).get_attribute("checked")
+
+ def toggle(self, subscription_name):
+ self._get(subscription_name).click()
+ # Wait for the subscriptions to be ready.
+ # FIXME: Use API for detection, as soon as there is such an API.
+ time.sleep(1)
+
+ def enable_all(self):
+ for name in self.AVAILABLE_SUBSCRIPTIONS:
+ self.enable(name)
+
+ def disable_all(self):
+ for name in self.AVAILABLE_SUBSCRIPTIONS:
+ self.disable(name)
+
+ ##################################
+ # Private Properties and Methods #
+ ##################################
+
+ AVAILABLE_SUBSCRIPTIONS = [
+ "allow_embedded", "allow_extensions", "allow_functionality",
+ "allow_mozilla", "allow_sameorg", "deny_trackers"
+ ]
+
+ def _get(self, subscription_name):
+ return (self.marionette
+ .find_element("css selector",
+ "input[name={}]".format(subscription_name)))
diff --git a/tests/marionette/tests/settings/manifest.ini b/tests/marionette/tests/settings/manifest.ini
index 82b2450..511d4d6 100644
--- a/tests/marionette/tests/settings/manifest.ini
+++ b/tests/marionette/tests/settings/manifest.ini
@@ -1 +1,2 @@
+[test_subscriptions.py]
[test_your_policy.py]
diff --git a/tests/marionette/tests/settings/test_subscriptions.py b/tests/marionette/tests/settings/test_subscriptions.py
new file mode 100644
index 0000000..f68f0b0
--- /dev/null
+++ b/tests/marionette/tests/settings/test_subscriptions.py
@@ -0,0 +1,54 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from rp_ui_harness import RequestPolicyTestCase
+
+
+class TestSubscriptionsSettings(RequestPolicyTestCase):
+
+ def setUp(self):
+ super(TestSubscriptionsSettings, self).setUp()
+ self.marionette.set_context("content")
+
+ def tearDown(self):
+ try:
+ self.marionette.set_context("chrome")
+ finally:
+ super(TestSubscriptionsSettings, self).tearDown()
+
+ ################
+ # Test Methods #
+ ################
+
+ def test_subscription_contains_rules(self):
+ def count_rules():
+ return self.settings.your_policy.rules_table.count_rules()
+
+ def test(sub_name):
+ # assert no rules
+ self.settings.your_policy.open()
+ self.assertEqual(0, count_rules())
+
+ # enable
+ self.settings.subscriptions.open()
+ self.settings.subscriptions.enable(sub_name)
+
+ # assert rules
+ self.settings.your_policy.open()
+ self.assertGreater(count_rules(), 0)
+
+ # disable
+ self.settings.subscriptions.open()
+ self.settings.subscriptions.disable(sub_name)
+
+ # assert no rules
+ self.settings.your_policy.open()
+ self.assertEqual(0, count_rules())
+
+ self.settings.subscriptions.open()
+ self.settings.subscriptions.disable_all()
+
+ test("allow_functionality")
+ test("allow_sameorg")
+ test("deny_trackers")
--
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