[Pkg-mozext-commits] [firetray] 393/399: * fix detection of account deletion/addition (see b3869630) * cleaning (use fixIterator on MailServices.accounts)

David Prévot taffit at alioth.debian.org
Tue Oct 29 18:24:21 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 65d17531ec9dc329154f6271c8a18c0be649ce93
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Sat Oct 26 02:21:31 2013 +0200

    * fix detection of account deletion/addition (see b3869630)
    * cleaning (use fixIterator on MailServices.accounts)
    
    thx mailInstrumentation !
---
 src/modules/FiretrayHandler.jsm   |   18 ++++++----
 src/modules/FiretrayMessaging.jsm |   67 ++++++++-----------------------------
 src/modules/commons.js            |    2 --
 3 files changed, 25 insertions(+), 62 deletions(-)

diff --git a/src/modules/FiretrayHandler.jsm b/src/modules/FiretrayHandler.jsm
index 430c0b8..2063186 100644
--- a/src/modules/FiretrayHandler.jsm
+++ b/src/modules/FiretrayHandler.jsm
@@ -86,13 +86,6 @@ firetray.Handler = {
     log.info('inMailApp='+this.inMailApp+', inBrowserApp='+this.inBrowserApp+
       ', appHasChat='+this.appHasChat);
 
-    VersionChange.init(FIRETRAY_ID, FIRETRAY_VERSION, FIRETRAY_PREF_BRANCH);
-    VersionChange.addHook(["install", "upgrade", "reinstall"], firetray.VersionChangeHandler.showReleaseNotes);
-    VersionChange.addHook(["upgrade", "reinstall"], firetray.VersionChangeHandler.tryEraseOldOptions);
-    VersionChange.addHook(["upgrade", "reinstall"], firetray.VersionChangeHandler.correctMailNotificationType);
-    VersionChange.addHook(["upgrade", "reinstall"], firetray.VersionChangeHandler.correctMailServerTypes);
-    VersionChange.applyHooksAndWatchUninstall();
-
     firetray.Window.init();
     firetray.StatusIcon.init();
     firetray.Handler.showHideIcon();
@@ -142,6 +135,17 @@ firetray.Handler = {
 
     this.preventWarnOnClose();
 
+    VersionChange.init(FIRETRAY_ID, FIRETRAY_VERSION, FIRETRAY_PREF_BRANCH);
+    let vc = VersionChange, vch = firetray.VersionChangeHandler;
+    vc.addHook(["install", "upgrade", "reinstall"], vch.showReleaseNotes);
+    vc.addHook(["upgrade", "reinstall"], vch.tryEraseOldOptions);
+    vc.addHook(["upgrade", "reinstall"], vch.correctMailNotificationType);
+    vc.addHook(["upgrade", "reinstall"], vch.correctMailServerTypes);
+    if (this.inMailApp) {
+      vc.addHook(["upgrade", "reinstall"], firetray.Messaging.cleanExcludedAccounts);
+    }
+    vc.applyHooksAndWatchUninstall();
+
     this.initialized = true;
     return true;
   },
diff --git a/src/modules/FiretrayMessaging.jsm b/src/modules/FiretrayMessaging.jsm
index d58945b..f340674 100644
--- a/src/modules/FiretrayMessaging.jsm
+++ b/src/modules/FiretrayMessaging.jsm
@@ -7,6 +7,7 @@ const Ci = Components.interfaces;
 const Cu = Components.utils;
 
 Cu.import("resource:///modules/mailServices.js");
+Cu.import("resource://gre/modules/iteratorUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/PluralForm.jsm");
 Cu.import("resource://firetray/commons.js");
@@ -29,7 +30,6 @@ firetray.Messaging = {
   initialized: false,
   currentMsgCount: null,
   newMsgCount: null,
-  observedTopics: {},
 
   init: function() {
     if (this.initialized) {
@@ -38,7 +38,9 @@ firetray.Messaging = {
     }
     log.debug("Enabling Messaging");
 
-    firetray.Utils.addObservers(firetray.Messaging, ["account-removed"]);
+    // includes IM accounts
+    Services.prefs.addObserver("mail.accountmanager.accounts",
+                               firetray.Messaging.cleanExcludedAccounts, false);
 
     let that = this;
     MailServices.mailSession.AddFolderListener(that.mailSessionListener,
@@ -53,35 +55,23 @@ firetray.Messaging = {
 
     MailServices.mailSession.RemoveFolderListener(this.mailSessionListener);
 
-    firetray.Utils.removeAllObservers(firetray.Messaging);
+    Services.prefs.removeObserver("mail.accountmanager.accounts", this);
 
     this.initialized = false;
   },
 
-  observe: function(subject, topic, data) {
-    log.debug("RECEIVED Messaging: "+topic+" subject="+subject+" data="+data);
-    switch (topic) {
-    case "account-removed":
-      this.cleanExcludedAccounts();
-      break;
-    default:
-      log.warn("unhandled topic: "+topic);
-    }
-  },
-
   /* removes removed accounts from excludedAccounts pref. NOTE: Can't be called
     at shutdown because MailServices.accounts no longer available */
   cleanExcludedAccounts: function() {
-    log.debug("* cleaning *");
+    log.info("* cleaning *");
     let mailAccounts = firetray.Utils.getObjPref('mail_accounts');
     let excludedAccounts = mailAccounts["excludedAccounts"];
 
     // build current list of account server keys
     let accounts = MailServices.accounts.accounts;
     let accountServerKeys = [];
-    for (let i=0, len=accounts.Count(); i<len; ++i) {
-      let account = accounts.QueryElementAt(i, Ci.nsIMsgAccount);
-      accountServerKeys[i] = account.incomingServer.key;
+    for (let account in fixIterator(MailServices.accounts, Ci.nsIMsgAccount)) {
+      accountServerKeys.push(account.incomingServer.key);
     }
 
     let newExcludedAccounts = [], cleaningNeeded = 0;
@@ -131,7 +121,7 @@ firetray.Messaging = {
     },
 
     OnItemEvent: function(item, event) {
-      log.debug("OnItemEvent"+event+" for folder "+item.prettyName);
+      log.debug("OnItemEvent "+event+" for folder "+item.prettyName);
     },
 
     onMsgCountChange: function(item, property, oldValue, newValue) {
@@ -361,39 +351,6 @@ firetray.Messaging.Accounts = function(sortByTypeAndName) {
   this.sortByTypeAndName = sortByTypeAndName;
 };
 
-// https://bugzilla.mozilla.org/show_bug.cgi?id=820377
-firetray.Messaging._accountsRef = MailServices.accounts.accounts;
-if (firetray.Messaging._accountsRef instanceof Ci.nsIArray) {
-
-  function _getAccountServersAsJSArray() {
-    let accountServers = [];
-    let accEnumerator = firetray.Messaging._accountsRef.enumerate();
-    while (accEnumerator.hasMoreElements()) {
-      let account = accEnumerator.getNext().QueryInterface(Ci.nsIMsgAccount);
-      log.debug("account="+account);
-      let accountServer = account.incomingServer;
-      accountServers.push(accountServer);
-    }
-    log.debug("accountServers="+accountServers.length);
-    return accountServers;
-  }
-
-} else if (firetray.Messaging._accountsRef instanceof Ci.nsISupportsArray) {
-
-  function _getAccountServersAsJSArray() {
-    let accountServers = [];
-    for (let i=0, len=firetray.Messaging._accountsRef.Count(); i<len; ++i) {
-      let account = firetray.Messaging._accountsRef.QueryElementAt(i, Ci.nsIMsgAccount);
-      let accountServer = account.incomingServer;
-      accountServers[i] = accountServer;
-    }
-    log.debug("accountServers="+accountServers.length);
-    return accountServers;
-  }
-
-} else {
-    throw TypeError("unknown type for MailServices.accounts.accounts");
-}
 
 firetray.Messaging.Accounts.prototype.__iterator__ = function() {
   log.debug("sortByTypeAndName="+this.sortByTypeAndName);
@@ -401,7 +358,11 @@ firetray.Messaging.Accounts.prototype.__iterator__ = function() {
   /* NOTE: sort() not provided by nsIMsgAccountManager.accounts
    (nsISupportsArray or nsIArray if xulrunner >= 20.0). Should be OK to
    re-build a JS-Array for few accounts */
-  let accountServers = _getAccountServersAsJSArray();
+  let accountServers = [];
+  for (let accountServer in fixIterator(MailServices.accounts.allServers,
+                                        Ci.nsIMsgIncomingServer)) {
+    accountServers.push(accountServer);
+  }
 
   let mailAccounts = firetray.Utils.getObjPref('mail_accounts');
   let serverTypes = mailAccounts["serverTypes"];
diff --git a/src/modules/commons.js b/src/modules/commons.js
index 8d57c1d..8b5fb67 100644
--- a/src/modules/commons.js
+++ b/src/modules/commons.js
@@ -13,7 +13,6 @@ var EXPORTED_SYMBOLS =
     "FIRETRAY_ACCOUNT_SERVER_TYPE_IM",
     "FIRETRAY_DELAY_STARTUP_MILLISECONDS",
     "FIRETRAY_DELAY_NOWAIT_MILLISECONDS",
-    "FIRETRAY_DELAY_PREF_CLEANING_MILLISECONDS",
     "FIRETRAY_MESSAGE_COUNT_TYPE_UNREAD", "FIRETRAY_MESSAGE_COUNT_TYPE_NEW",
     "FIRETRAY_CHAT_ICON_BLINK_STYLE_NORMAL",
     "FIRETRAY_CHAT_ICON_BLINK_STYLE_FADE",
@@ -50,7 +49,6 @@ const FIRETRAY_ACCOUNT_SERVER_TYPE_IM = "im";
 
 const FIRETRAY_DELAY_STARTUP_MILLISECONDS       = 500;
 const FIRETRAY_DELAY_NOWAIT_MILLISECONDS        = 0;
-const FIRETRAY_DELAY_PREF_CLEANING_MILLISECONDS = 15*60*1000;
 
 const FIRETRAY_CHAT_ICON_BLINK_STYLE_NORMAL = 0;
 const FIRETRAY_CHAT_ICON_BLINK_STYLE_FADE   = 1;

-- 
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