This is just some static backup of the original site, don't expect every link to work!

Ignore:
Timestamp:
Nov 3, 2014, 12:35:40 PM (8 years ago)
Author:
rene <rene@…>
Branches:
ng_0.9
Children:
7204cb
Parents:
3c9c29
Message:

code formatting (no code changes)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • content/vI_upgrade.js

    r3c9c29 r509348  
    2424
    2525Components.utils.import("resource://v_identity/vI_nameSpaceWrapper.js");
    26 virtualIdentityExtension.ns(function() { with (virtualIdentityExtension.LIB) {
     26virtualIdentityExtension.ns(function () {
     27  with(virtualIdentityExtension.LIB) {
    2728
    28 let Log = vI.setupLogging("virtualIdentity.upgrade");
    29 Components.utils.import("resource://v_identity/vI_rdfDatasource.js", virtualIdentityExtension);
    30 Components.utils.import("resource://v_identity/vI_account.js", virtualIdentityExtension);
    31 Components.utils.import("resource://v_identity/vI_prefs.js", virtualIdentityExtension);
     29    let Log = vI.setupLogging("virtualIdentity.upgrade");
     30    Components.utils.import("resource://v_identity/vI_rdfDatasource.js", virtualIdentityExtension);
     31    Components.utils.import("resource://v_identity/vI_account.js", virtualIdentityExtension);
     32    Components.utils.import("resource://v_identity/vI_prefs.js", virtualIdentityExtension);
    3233
    33 var upgrade = {
    34     versionChecker : Components.classes["@mozilla.org/xpcom/version-comparator;1"]
    35       .getService(Components.interfaces.nsIVersionComparator),
    36                            
    37     rdfDatasource : null,
     34    var upgrade = {
     35      versionChecker: Components.classes["@mozilla.org/xpcom/version-comparator;1"]
     36        .getService(Components.interfaces.nsIVersionComparator),
    3837
    39     quickUpgrade : function(currentVersion) {
    40       upgrade.rdfDatasource = new vI.rdfDatasource("virtualIdentity.rdf", true);
    41       if (upgrade.rdfDatasource.extUpgradeRequired())
    42         upgrade.extUpgrade();
    43       upgrade.rdfDatasource.refreshAccountInfo();
    44       upgrade.rdfDatasource.clean();
    45       return true;
    46     },
     38      rdfDatasource: null,
    4739
    48     extUpgrade : function() {
    49         var currentVersion = upgrade.rdfDatasource.getCurrentExtFileVersion();
    50         Log.debug("checking for previous version, found " +
    51             currentVersion + "... extension-upgrade required.")
    52         switch (currentVersion) {
    53             case null:
    54                 // no break
    55             default:
    56                 upgrade.__transferMovedUserPrefs(currentVersion);
    57                 upgrade.__removeObsoleteUserPrefs(currentVersion);
    58                 upgrade.__removeExtraAddedHeaders(currentVersion);
    59                 upgrade.__cleanupSmartMailboxFolders(currentVersion);
    60         }
    61         upgrade.rdfDatasource.storeExtVersion();
    62         Log.debug("extension-upgrade to " + upgrade.rdfDatasource.getCurrentExtFileVersion() + " done.");
    63     },
    64    
    65     __cleanupSmartMailboxFolders : function(currentVersion) {
     40      quickUpgrade: function (currentVersion) {
     41        upgrade.rdfDatasource = new vI.rdfDatasource("virtualIdentity.rdf", true);
     42        if (upgrade.rdfDatasource.extUpgradeRequired())
     43          upgrade.extUpgrade();
     44        upgrade.rdfDatasource.refreshAccountInfo();
     45        upgrade.rdfDatasource.clean();
     46        return true;
     47      },
     48
     49      extUpgrade: function () {
     50        var currentVersion = upgrade.rdfDatasource.getCurrentExtFileVersion();
     51        Log.debug("checking for previous version, found " +
     52          currentVersion + "... extension-upgrade required.")
     53        switch (currentVersion) {
     54        case null:
     55          // no break
     56        default:
     57          upgrade.__transferMovedUserPrefs(currentVersion);
     58          upgrade.__removeObsoleteUserPrefs(currentVersion);
     59          upgrade.__removeExtraAddedHeaders(currentVersion);
     60          upgrade.__cleanupSmartMailboxFolders(currentVersion);
     61        }
     62        upgrade.rdfDatasource.storeExtVersion();
     63        Log.debug("extension-upgrade to " + upgrade.rdfDatasource.getCurrentExtFileVersion() + " done.");
     64      },
     65
     66      __cleanupSmartMailboxFolders: function (currentVersion) {
    6667        if ((!currentVersion || upgrade.versionChecker.compare(currentVersion, "0.9.26") < 0)) {
    67             Log.debug("cleaning leftover 'smart mailboxes' == 'unified folder mailboxes'");
    68             // remove obsolete 'smart mailboxes'=='unified folder' server entries
    69             // this is only required because of a virtualIdentity bug introduced in 0.9.22 and fixed in 0.9.26
     68          Log.debug("cleaning leftover 'smart mailboxes' == 'unified folder mailboxes'");
     69          // remove obsolete 'smart mailboxes'=='unified folder' server entries
     70          // this is only required because of a virtualIdentity bug introduced in 0.9.22 and fixed in 0.9.26
    7071
    71             //  compare against all accounts, getAccountsArray() does not include 'smart mailboxes' == 'unified folders'
    72             var all_accounts = vI.prefroot.getCharPref("mail.accountmanager.accounts").split(",");
     72          //  compare against all accounts, getAccountsArray() does not include 'smart mailboxes' == 'unified folders'
     73          var all_accounts = vI.prefroot.getCharPref("mail.accountmanager.accounts").split(",");
    7374
    74             for each (let pref in vI.prefroot.getChildList("mail.server")) {
    75                 if (pref.indexOf(".hostname") == pref.length - 9 && vI.prefroot.getCharPref(pref) == "smart mailboxes") {
    76                     // ok, smart mailbox server found, check if it still in use
    77                     let server = pref.replace(/^mail\.server\./,"").replace(/\.hostname$/,"");
    78                     let inUse = false;
    79                     for each (let account in all_accounts) {
    80                         if (vI.prefroot.getCharPref("mail.account." + account + ".server") == server)
    81                             inUse = true;
    82                     }
    83                     if (!inUse) {
    84                         Log.debug("cleaning leftover 'smart mailbox' for server " + server);
    85                         for each (let obsoletePref in vI.prefroot.getChildList("mail.server." + server)) {
    86                             if (obsoletePref.indexOf(".directory") == obsoletePref.length - 10) {
    87                                 // remove obsolete 'smart mailbox' directory
    88                                 try {
    89                                     let file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
    90                                     file.initWithPath(vI.prefroot.getCharPref(obsoletePref));
    91                                     Log.debug("removing obsolete storage Folder " + vI.prefroot.getCharPref(obsoletePref));
    92                                     file.remove(true);
    93                                 } catch (NS_ERROR_FILE_UNRECOGNIZED_PATH) { };
    94                             }
    95                             vI.prefroot.clearUserPref(obsoletePref);
    96                         }
    97                     }
     75          for each(let pref in vI.prefroot.getChildList("mail.server")) {
     76            if (pref.indexOf(".hostname") == pref.length - 9 && vI.prefroot.getCharPref(pref) == "smart mailboxes") {
     77              // ok, smart mailbox server found, check if it still in use
     78              let server = pref.replace(/^mail\.server\./, "").replace(/\.hostname$/, "");
     79              let inUse = false;
     80              for each(let account in all_accounts) {
     81                if (vI.prefroot.getCharPref("mail.account." + account + ".server") == server)
     82                  inUse = true;
     83              }
     84              if (!inUse) {
     85                Log.debug("cleaning leftover 'smart mailbox' for server " + server);
     86                for each(let obsoletePref in vI.prefroot.getChildList("mail.server." + server)) {
     87                  if (obsoletePref.indexOf(".directory") == obsoletePref.length - 10) {
     88                    // remove obsolete 'smart mailbox' directory
     89                    try {
     90                      let file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
     91                      file.initWithPath(vI.prefroot.getCharPref(obsoletePref));
     92                      Log.debug("removing obsolete storage Folder " + vI.prefroot.getCharPref(obsoletePref));
     93                      file.remove(true);
     94                    } catch (NS_ERROR_FILE_UNRECOGNIZED_PATH) {};
     95                  }
     96                  vI.prefroot.clearUserPref(obsoletePref);
    9897                }
     98              }
    9999            }
     100          }
    100101        }
    101     },
    102    
    103     __removeExtraAddedHeaders : function(currentVersion) {
    104         if ((!currentVersion || upgrade.versionChecker.compare(currentVersion, "0.6.9") < 0) && 
    105                 vI.prefroot.getCharPref("mailnews.headers.extraExpandedHeaders") != "") {
    106             // clean extraExpandedHeaders once, because the whole header-saving and restoring was broken too long
    107             Log.debug("cleaning extraExpandedHeaders");
    108             vI.prefroot.setCharPref("mailnews.headers.extraExpandedHeaders", "")
    109             Log.debug("cleaned extraExpandedHeaders");
     102      },
     103
     104      __removeExtraAddedHeaders: function (currentVersion) {
     105        if ((!currentVersion || upgrade.versionChecker.compare(currentVersion, "0.6.9") < 0) &&
     106          vI.prefroot.getCharPref("mailnews.headers.extraExpandedHeaders") != "") {
     107          // clean extraExpandedHeaders once, because the whole header-saving and restoring was broken too long
     108          Log.debug("cleaning extraExpandedHeaders");
     109          vI.prefroot.setCharPref("mailnews.headers.extraExpandedHeaders", "")
     110          Log.debug("cleaned extraExpandedHeaders");
    110111        }
    111     },
    112    
    113     __transferMovedUserPrefs : function(currentVersion) {
    114         // transfer renamed preferences
    115         var transferPrefs = [   { version : "0.5.3",
    116                     prefs : Array({ sourcePref : "smart_reply_ask", targetPref : "idSelection_ask" },
    117                         { sourcePref : "smart_reply_ask_always", targetPref : "idSelection_ask_always" },
    118                         { sourcePref : "smart_reply_autocreate", targetPref : "idSelection_autocreate" },
    119                         { sourcePref : "smart_timestamp", targetPref : "autoTimestamp" },
    120                         { sourcePref : "storage_prefer_smart_reply", targetPref : "idSelection_storage_prefer_smart_reply" },
    121                         { sourcePref : "storage_ignore_smart_reply", targetPref : "idSelection_storage_ignore_smart_reply" }) }];
    122         // remove obsolete preference-tree virtualIdentity
    123         for (var i = 0; i < transferPrefs.length; i++) {
    124             // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
    125             if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, transferPrefs[i].version) < 0)) {
    126                 // remove any obsolete preferences under extensions.virtualIdentity
    127                 Log.debug("transfer changed preferences of pre-" + transferPrefs[i].version + " release...")
    128                 for each (let transferPref in transferPrefs[i].prefs) {
    129                     try {   vI.vIprefs.commit(transferPref.targetPref,
    130                             vI.vIprefs.get(transferPref.sourcePref));
    131                         vI.vIprefs.clearUserPref(transferPref.sourcePref);
    132                     }
    133                     catch (e) { };
    134                 }
    135                 Log.debug("done.")
    136             }
    137         }
    138     },
    139    
    140     __removeObsoleteUserPrefs : function(currentVersion) {
    141         var obsoletePrefs = [   { version : "0.5.0",
    142                     prefs : Array("aBook_use", "aBook_storedefault", "aBook_dont_update_multiple",
    143                     "aBook_show_switch", "aBook_warn_update", "aBook_use_for_smart_reply",
    144                     "aBook_prefer_smart_reply", "aBook_ignore_smart_reply", "aBook_warn_vI_replace",
    145                     "aBook_use_non_vI", "aBook_notification", "storeVIdentity", "experimental",
    146                     "storage_use_for_smart_reply") },
    147                     { version : "0.5.3", prefs : Array("storage_use_for_smart_reply") },
    148                     { version : "0.5.6", prefs : Array("copyEnigmailSettings") },
    149                     { version: "0.9", prefs : Array("extensions.virtualIdentity.{2ab1b709-ba03-4361-abf9-c50b964ff75d}",
    150                                                     "extensions.virtualIdentity.{847b3a00-7ab1-11d4-8f02-006008948af5}",
    151                                                     "extensions.virtualIdentity.smart_reply_added_extraHeaders",
    152                                                     "mailnews.headers.extraExpandedHeaders") }
    153                     ];
    154         // remove obsolete preference-tree virtualIdentity
    155         for (var i = 0; i < obsoletePrefs.length; i++) {
    156             // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
    157             if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, obsoletePrefs[i].version) < 0)) {
    158                 // remove any obsolete preferences under extensions.virtualIdentity
    159                 Log.debug("removing obsolete preferences of pre-" + obsoletePrefs[i].version + " release...")
    160                 for each (let pref in obsoletePrefs[i].prefs) {
    161                     try { vI.vIprefs.clearUserPref(pref); Log.debug(".") }
    162                     catch (e) { };
    163                 }
    164                 Log.debug("done.")
    165             }
    166         }
    167     },
    168 }
    169 vI.upgrade = upgrade;
    170 }});
     112      },
     113
     114      __transferMovedUserPrefs: function (currentVersion) {
     115        // transfer renamed preferences
     116        var transferPrefs = [{
     117          version: "0.5.3",
     118          prefs: Array({
     119            sourcePref: "smart_reply_ask",
     120            targetPref: "idSelection_ask"
     121          }, {
     122            sourcePref: "smart_reply_ask_always",
     123            targetPref: "idSelection_ask_always"
     124          }, {
     125            sourcePref: "smart_reply_autocreate",
     126            targetPref: "idSelection_autocreate"
     127          }, {
     128            sourcePref: "smart_timestamp",
     129            targetPref: "autoTimestamp"
     130          }, {
     131            sourcePref: "storage_prefer_smart_reply",
     132            targetPref: "idSelection_storage_prefer_smart_reply"
     133          }, {
     134            sourcePref: "storage_ignore_smart_reply",
     135            targetPref: "idSelection_storage_ignore_smart_reply"
     136          })
     137        }];
     138        // remove obsolete preference-tree virtualIdentity
     139        for (var i = 0; i < transferPrefs.length; i++) {
     140          // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
     141          if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, transferPrefs[i].version) < 0)) {
     142            // remove any obsolete preferences under extensions.virtualIdentity
     143            Log.debug("transfer changed preferences of pre-" + transferPrefs[i].version + " release...")
     144            for each(let transferPref in transferPrefs[i].prefs) {
     145              try {
     146                vI.vIprefs.commit(transferPref.targetPref,
     147                  vI.vIprefs.get(transferPref.sourcePref));
     148                vI.vIprefs.clearUserPref(transferPref.sourcePref);
     149              } catch (e) {};
     150            }
     151            Log.debug("done.")
     152          }
     153        }
     154      },
     155
     156      __removeObsoleteUserPrefs: function (currentVersion) {
     157        var obsoletePrefs = [{
     158          version: "0.5.0",
     159          prefs: Array("aBook_use", "aBook_storedefault", "aBook_dont_update_multiple",
     160            "aBook_show_switch", "aBook_warn_update", "aBook_use_for_smart_reply",
     161            "aBook_prefer_smart_reply", "aBook_ignore_smart_reply", "aBook_warn_vI_replace",
     162            "aBook_use_non_vI", "aBook_notification", "storeVIdentity", "experimental",
     163            "storage_use_for_smart_reply")
     164        }, {
     165          version: "0.5.3",
     166          prefs: Array("storage_use_for_smart_reply")
     167        }, {
     168          version: "0.5.6",
     169          prefs: Array("copyEnigmailSettings")
     170        }, {
     171          version: "0.9",
     172          prefs: Array("extensions.virtualIdentity.{2ab1b709-ba03-4361-abf9-c50b964ff75d}",
     173            "extensions.virtualIdentity.{847b3a00-7ab1-11d4-8f02-006008948af5}",
     174            "extensions.virtualIdentity.smart_reply_added_extraHeaders",
     175            "mailnews.headers.extraExpandedHeaders")
     176        }];
     177        // remove obsolete preference-tree virtualIdentity
     178        for (var i = 0; i < obsoletePrefs.length; i++) {
     179          // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
     180          if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, obsoletePrefs[i].version) < 0)) {
     181            // remove any obsolete preferences under extensions.virtualIdentity
     182            Log.debug("removing obsolete preferences of pre-" + obsoletePrefs[i].version + " release...")
     183            for each(let pref in obsoletePrefs[i].prefs) {
     184              try {
     185                vI.vIprefs.clearUserPref(pref);
     186                Log.debug(".")
     187              } catch (e) {};
     188            }
     189            Log.debug("done.")
     190          }
     191        }
     192      },
     193    }
     194    vI.upgrade = upgrade;
     195  }
     196});
Note: See TracChangeset for help on using the changeset viewer.