aboutsummaryrefslogtreecommitdiff
path: root/chrome/js
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/js')
-rw-r--r--chrome/js/redirector.js73
1 files changed, 39 insertions, 34 deletions
diff --git a/chrome/js/redirector.js b/chrome/js/redirector.js
index fa48d68..b62c3da 100644
--- a/chrome/js/redirector.js
+++ b/chrome/js/redirector.js
@@ -2,6 +2,7 @@ Components.utils.import("chrome://redirector/content/js/xpcom.js");
Components.utils.import("chrome://redirector/content/js/redirect.js");
Components.utils.import("chrome://redirector/content/js/redirectorprefs.js");
Components.utils.import("resource://gre/modules/Services.jsm");
+Components.utils.import('resource://gre/modules/AddonManager.jsm');
var EXPORTED_SYMBOLS = ['Redirector'];
@@ -104,43 +105,47 @@ Redirector = {
return file;
},
- handleUpgrades : function(){
- var currentVersion = '2.8.3';
- this._list = [];
-
- if (this._prefs.version == currentVersion) {
- return;
- }
- //Here update checks are handled
+ handleUpgrades : function() {
+ AddonManager.getAddonByID("url-rewriter@papush", (addon) => {
+ currentVersion = '' + addon.version;
+ this._list = [];
- try {
- var branch = PrefService.getBranch("extensions.redirector.");
- var data = branch.getCharPref("redirects");
- } catch(e) {
- this._prefs.version = currentVersion;
- return;
- }
- var arr;
- this._list = [];
- if (data != '') {
- for each (redirectString in data.split(':::')) {
- if (!redirectString || !redirectString.split) {
- continue;
- this.debug('Invalid old redirect: ' + redirectString);
- }
- var parts = redirectString.split(',,,');
- if (parts.length < 5) {
- throw Error("Invalid serialized redirect, too few fields: " + redirectString);
+ if (this._prefs.version == currentVersion) {
+ this.debug("No version change, prefs migration skipped");
+ return;
+ }
+ this.debug("Migrating prefs");
+ //Here update checks are handled
+
+ try {
+ var branch = PrefService.getBranch("extensions.redirector.");
+ var data = branch.getCharPref("redirects");
+ } catch(e) {
+ this._prefs.version = currentVersion;
+ return;
+ }
+ var arr;
+ this._list = [];
+ if (data != '') {
+ for each (redirectString in data.split(':::')) {
+ if (!redirectString || !redirectString.split) {
+ continue;
+ this.debug('Invalid old redirect: ' + redirectString);
+ }
+ var parts = redirectString.split(',,,');
+ if (parts.length < 5) {
+ throw Error("Invalid serialized redirect, too few fields: " + redirectString);
+ }
+ var redirect = new Redirect();
+ redirect._init.apply(redirect, parts);
+ this._list.push(redirect);
}
- var redirect = new Redirect();
- redirect._init.apply(redirect, parts);
- this._list.push(redirect);
+ this.save();
+ this._list = []; //Let the real loading start this properly
}
- this.save();
- this._list = []; //Let the real loading start this properly
- }
- branch.deleteBranch('redirects');
- this._prefs.version = currentVersion;
+ branch.deleteBranch('redirects');
+ this._prefs.version = currentVersion;
+ });
},
importRedirects : function(file) {