[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