[Pkg-mozext-commits] [requestpolicy] 25/100: automatically update open preferences tabs on changes
David Prévot
taffit at moszumanska.debian.org
Fri Dec 12 22:56:51 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository requestpolicy.
commit 576d09db7a4476a76249e4bdc70f4e50c752fe24
Author: myrdd <myrdd at users.noreply.github.com>
Date: Tue Sep 16 14:54:46 2014 +0200
automatically update open preferences tabs on changes
This commit ensures that the preferences pages *always* display the correct
preferences. This means that a preferences page listens on preference changes
and updates its contents on an event.
A related/similar commit is cdf5713.
---
src/components/requestpolicyService.js | 5 +++++
src/content/settings/advancedprefs.js | 12 ++++++++++++
src/content/settings/basicprefs.js | 11 +++++++++++
src/content/settings/common.js | 24 ++++++++++++++++++++++++
src/content/settings/defaultpolicy.js | 11 +++++++++++
src/content/settings/subscriptions.js | 11 +++++++++++
src/content/settings/yourpolicy.js | 29 ++++++++++-------------------
7 files changed, 84 insertions(+), 19 deletions(-)
diff --git a/src/components/requestpolicyService.js b/src/components/requestpolicyService.js
index 3e63be5..1fdc037 100644
--- a/src/components/requestpolicyService.js
+++ b/src/components/requestpolicyService.js
@@ -609,6 +609,8 @@ RequestPolicyService.prototype = {
this._rootPrefs = this._prefService.getBranch("")
.QueryInterface(CI.nsIPrefBranch2);
+ this._rootPrefs.addObserver("network.prefetch-next", this, false);
+ this._rootPrefs.addObserver("network.dns.disablePrefetch", this, false);
},
_initVersionInfo : function() {
@@ -677,6 +679,9 @@ RequestPolicyService.prototype = {
default :
break;
}
+ var observerService = CC['@mozilla.org/observer-service;1'].
+ getService(CI.nsIObserverService);
+ observerService.notifyObservers(null, "requestpolicy-prefs-changed", null);
},
_loadLibraries : function() {
diff --git a/src/content/settings/advancedprefs.js b/src/content/settings/advancedprefs.js
index 1e72470..f154135 100644
--- a/src/content/settings/advancedprefs.js
+++ b/src/content/settings/advancedprefs.js
@@ -22,6 +22,9 @@ $(function () {
common.localize(PAGE_STRINGS);
});
+var prefsChangedObserver = null;
+
+
function updateDisplay() {
// Link prefetch.
document.getElementById('pref-linkPrefetch').checked =
@@ -43,6 +46,8 @@ function updateDisplay() {
document.getElementById('pref-prefetch.dns.restoreDefaultOnUninstall').checked =
rpService.prefs.getBoolPref('prefetch.dns.restoreDefaultOnUninstall');
+ // TODO: Create a class which acts as an API for preferences and which ensures
+ // that the returned value is always a valid value for "string" preferences.
var sorting = rpService.prefs.getCharPref('menu.sorting');
if (sorting == document.getElementById('sortByNumRequests').value) {
@@ -126,4 +131,11 @@ function onload() {
}
);
+ prefsChangedObserver = new common.PrefsChangedObserver(
+ function(subject, topic, data) {
+ updateDisplay();
+ });
+ window.addEventListener("beforeunload", function(event) {
+ prefsChangedObserver.unregister();
+ });
}
diff --git a/src/content/settings/basicprefs.js b/src/content/settings/basicprefs.js
index 4f25269..e0a43ec 100644
--- a/src/content/settings/basicprefs.js
+++ b/src/content/settings/basicprefs.js
@@ -12,6 +12,9 @@ $(function () {
common.localize(PAGE_STRINGS);
});
+var prefsChangedObserver = null;
+
+
function updateDisplay() {
document.getElementById('pref-indicateBlockedObjects').checked =
rpService.prefs.getBoolPref('indicateBlockedObjects');
@@ -54,4 +57,12 @@ function onload() {
rpService._prefService.savePrefFile(null);
}
);
+
+ prefsChangedObserver = new common.PrefsChangedObserver(
+ function(subject, topic, data) {
+ updateDisplay();
+ });
+ window.addEventListener("beforeunload", function(event) {
+ prefsChangedObserver.unregister();
+ });
}
diff --git a/src/content/settings/common.js b/src/content/settings/common.js
index 6357fd3..f88cb55 100644
--- a/src/content/settings/common.js
+++ b/src/content/settings/common.js
@@ -216,6 +216,30 @@ common.localize = function(stringNames) {
});
};
+
+common.Observer = function(functionToCall, aTopic) {
+ this.topic = aTopic;
+ this.observe = functionToCall;
+ this.register();
+}
+common.Observer.prototype.register = function() {
+ var observerService = Components.classes["@mozilla.org/observer-service;1"].
+ getService(Components.interfaces.nsIObserverService);
+ observerService.addObserver(this, this.topic, false);
+};
+common.Observer.prototype.unregister = function() {
+ var observerService = Components.classes["@mozilla.org/observer-service;1"].
+ getService(Components.interfaces.nsIObserverService);
+ observerService.removeObserver(this, this.topic);
+};
+
+common.PrefsChangedObserver = function(functionToCall)
+{
+ common.Observer.call(this, functionToCall, "requestpolicy-prefs-changed");
+}
+common.PrefsChangedObserver.prototype = Object.create(common.Observer.prototype);
+common.PrefsChangedObserver.prototype.constructor = common.PrefsChangedObserver;
+
$(function() {
common.localize(COMMON_STRINGS);
});
diff --git a/src/content/settings/defaultpolicy.js b/src/content/settings/defaultpolicy.js
index c4cff00..a199595 100644
--- a/src/content/settings/defaultpolicy.js
+++ b/src/content/settings/defaultpolicy.js
@@ -15,6 +15,9 @@ $(function () {
common.localize(PAGE_STRINGS);
});
+var prefsChangedObserver = null;
+
+
function updateDisplay() {
var defaultallow = rpService.prefs.getBoolPref('defaultPolicy.allow');
if (defaultallow) {
@@ -68,4 +71,12 @@ function onload() {
rpService._prefService.savePrefFile(null);
}
);
+
+ prefsChangedObserver = new common.PrefsChangedObserver(
+ function(subject, topic, data) {
+ updateDisplay();
+ });
+ window.addEventListener("beforeunload", function(event) {
+ prefsChangedObserver.unregister();
+ });
}
diff --git a/src/content/settings/subscriptions.js b/src/content/settings/subscriptions.js
index 0b27c15..9044f1c 100644
--- a/src/content/settings/subscriptions.js
+++ b/src/content/settings/subscriptions.js
@@ -20,6 +20,9 @@ $(function () {
common.localize(PAGE_STRINGS);
});
+var prefsChangedObserver = null;
+
+
function updateDisplay() {
var userSubs = rpService._subscriptions;
var subsInfo = userSubs.getSubscriptionInfo();
@@ -78,4 +81,12 @@ function onload() {
for (var i = 0; i < hideElements.length; i++) {
hideElements[i].style.display = 'none';
}
+
+ prefsChangedObserver = new common.PrefsChangedObserver(
+ function(subject, topic, data) {
+ updateDisplay();
+ });
+ window.addEventListener("beforeunload", function(event) {
+ prefsChangedObserver.unregister();
+ });
}
diff --git a/src/content/settings/yourpolicy.js b/src/content/settings/yourpolicy.js
index ad0f48d..ed27136 100644
--- a/src/content/settings/yourpolicy.js
+++ b/src/content/settings/yourpolicy.js
@@ -211,22 +211,13 @@ function addRuleHelper() {
function RulesChangedObserver()
{
- this.register();
+ common.Observer.call(this, function(subject, topic, data) {
+ var search = document.getElementById('rulesearch');
+ populateRuleTable(search.value);
+ }, "requestpolicy-rules-changed");
}
-RulesChangedObserver.prototype.observe = function(subject, topic, data) {
- var search = document.getElementById('rulesearch');
- populateRuleTable(search.value);
-};
-RulesChangedObserver.prototype.register = function() {
- var observerService = Components.classes["@mozilla.org/observer-service;1"].
- getService(Components.interfaces.nsIObserverService);
- observerService.addObserver(this, "requestpolicy-rules-changed", false);
-};
-RulesChangedObserver.prototype.unregister = function() {
- var observerService = Components.classes["@mozilla.org/observer-service;1"].
- getService(Components.interfaces.nsIObserverService);
- observerService.removeObserver(this, "requestpolicy-rules-changed");
-};
+RulesChangedObserver.prototype = Object.create(common.Observer.prototype);
+RulesChangedObserver.prototype.constructor = RulesChangedObserver;
function onload() {
var search = document.getElementById('rulesearch');
@@ -242,9 +233,9 @@ function onload() {
if (rpService.oldRulesExist()) {
$('#oldrulesexist').show();
}
- rulesChangedObserver = new RulesChangedObserver();
-}
-function onunload() {
- rulesChangedObserver.unregister();
+ rulesChangedObserver = new RulesChangedObserver();
+ window.addEventListener("beforeunload", function(event) {
+ rulesChangedObserver.unregister();
+ });
}
--
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