[Pkg-mozext-commits] [firetray] 03/09: cleaner observer for accountmanager.accounts

David Prévot taffit at alioth.debian.org
Wed Nov 6 22:03:55 UTC 2013


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch dfsg-clean
in repository firetray.

commit 088f7f56e4c366275aa386161d59fee39dcb062d
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Sun Nov 3 02:09:07 2013 +0100

    cleaner observer for accountmanager.accounts
    
    We also need to start observing the mail.accountmanager.accounts pref *after*
    it's fully built.
---
 src/modules/FiretrayHandler.jsm   |    4 ++++
 src/modules/FiretrayMessaging.jsm |   28 ++++++++++++++++++++++++----
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/src/modules/FiretrayHandler.jsm b/src/modules/FiretrayHandler.jsm
index 5ba6a30..eacbcc4 100644
--- a/src/modules/FiretrayHandler.jsm
+++ b/src/modules/FiretrayHandler.jsm
@@ -239,6 +239,10 @@ firetray.Handler = {
         Ci.nsITimer.TYPE_ONE_SHOT, function() {
           firetray.Handler.appStarted = true;
           log.info("*** appStarted ***");
+
+          if (firetray.Handler.inMailApp) {
+            firetray.Messaging.addPrefObserver();
+          }
         });
   },
 
diff --git a/src/modules/FiretrayMessaging.jsm b/src/modules/FiretrayMessaging.jsm
index 533bbbc..4805794 100644
--- a/src/modules/FiretrayMessaging.jsm
+++ b/src/modules/FiretrayMessaging.jsm
@@ -23,6 +23,8 @@ const FLDRS_UNINTERESTING = {
   Virtual:   Ci.nsMsgFolderFlags.Virtual
 };
 
+const ACCOUNTS_PREF_BRANCH = "mail.accountmanager.accounts";
+
 let log = firetray.Logging.getLogger("firetray.Messaging");
 
 
@@ -38,9 +40,9 @@ firetray.Messaging = {
     }
     log.debug("Enabling Messaging");
 
-    // includes IM accounts
-    Services.prefs.addObserver("mail.accountmanager.accounts",
-                               firetray.Messaging.cleanExcludedAccounts, false);
+    /* addPrefObserver() called after appStarted because it's hazardous to
+     clean our excludedAccounts while mail.accountmanager.accounts is being
+     built dynamically at startup */
 
     let that = this;
     MailServices.mailSession.AddFolderListener(that.mailSessionListener,
@@ -55,11 +57,29 @@ firetray.Messaging = {
 
     MailServices.mailSession.RemoveFolderListener(this.mailSessionListener);
 
-    Services.prefs.removeObserver("mail.accountmanager.accounts", this);
+    this.removePrefObserver();
 
     this.initialized = false;
   },
 
+  addPrefObserver: function() {
+    // includes IM accounts
+    Services.prefs.addObserver(ACCOUNTS_PREF_BRANCH, this, false);
+    log.debug("PrefObserver added");
+  },
+  removePrefObserver: function() {
+    Services.prefs.removeObserver(ACCOUNTS_PREF_BRANCH, this);
+  },
+
+  /* could also use a PrefListener, but let's keep it simple for now */
+  observe: function(subject, topic, data) {
+    if (topic === "nsPref:changed" &&
+        data === ACCOUNTS_PREF_BRANCH) {
+      log.debug(ACCOUNTS_PREF_BRANCH+"="+subject.QueryInterface(Ci.nsIPrefBranch).getCharPref(ACCOUNTS_PREF_BRANCH));
+      this.cleanExcludedAccounts();
+    }
+  },
+
   /* removes removed accounts from excludedAccounts pref. NOTE: Can't be called
     at shutdown because MailServices.accounts no longer available */
   cleanExcludedAccounts: function() {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firetray.git



More information about the Pkg-mozext-commits mailing list