Index: background.js |
=================================================================== |
--- a/background.js |
+++ b/background.js |
@@ -47,6 +47,7 @@ |
this.stopIconAnimation = stopIconAnimation; |
} |
var FilterStorage = require("filterStorage").FilterStorage; |
+var filterNotifier = require("filterNotifier").FilterNotifier; |
kzar
2015/03/19 15:20:37
Shouldn't this be `FilterNotifier`?
Sebastian Noack
2015/03/20 13:26:12
No, the module is still called "filterNotifier".
kzar
2015/03/20 14:47:44
I meant the variable name.
Sebastian Noack
2015/03/20 15:40:55
I see ,you are right. Surprisingly, it still worke
|
var ElemHide = require("elemHide").ElemHide; |
var defaultMatcher = require("matcher").defaultMatcher; |
var Prefs = require("prefs").Prefs; |
@@ -65,45 +66,83 @@ |
var seenDataCorruption = false; |
var filterlistsReinitialized = false; |
-require("filterNotifier").FilterNotifier.addListener(function(action) |
+ |
+function init() |
{ |
- if (action == "load") |
+ var previousVersion = null; |
+ |
+ var filtersLoaded = false; |
+ var prefsLoaded = false; |
+ |
+ var onLoaded = function() |
{ |
- ext.storage.get(["currentVersion"], function(items) |
+ var addonVersion = require("info").addonVersion; |
+ |
+ // There are no filters stored so we need to reinitialize all filterlists |
+ if (!FilterStorage.firstRun && FilterStorage.subscriptions.length === 0) |
{ |
- var addonVersion = require("info").addonVersion; |
- var prevVersion = items.currentVersion; |
+ filterlistsReinitialized = true; |
+ previousVersion = null; |
+ } |
- // There are no filters stored so we need to reinitialize all filterlists |
- if (!FilterStorage.firstRun && FilterStorage.subscriptions.length === 0) |
- { |
- filterlistsReinitialized = true; |
- prevVersion = null; |
- } |
+ if (previousVersion != addonVersion || FilterStorage.firstRun) |
+ { |
+ seenDataCorruption = previousVersion && FilterStorage.firstRun; |
+ ext.storage.set("currentVersion", addonVersion); |
Wladimir Palant
2015/03/19 16:57:04
Prefs.currentVersion = addonVersion?
Sebastian Noack
2015/03/20 13:26:12
currentVersion isn't a preference, but I agree we
|
+ addSubscription(previousVersion); |
+ } |
- if (prevVersion != addonVersion || FilterStorage.firstRun) |
- { |
- seenDataCorruption = prevVersion && FilterStorage.firstRun; |
- ext.storage.set("currentVersion", addonVersion); |
- addSubscription(prevVersion); |
- } |
- |
- // The "Hide placeholders" option has been removed from the UI in 1.8.8.1285 |
- // So we reset the option for users updating from older versions. |
- if (prevVersion && Services.vc.compare(prevVersion, "1.8.8.1285") < 0) |
- Prefs.hidePlaceholders = true; |
- }); |
+ // The "Hide placeholders" option has been removed from the UI in 1.8.8.1285 |
+ // So we reset the option for users updating from older versions. |
+ if (previousVersion && Services.vc.compare(previousVersion, "1.8.8.1285") < 0) |
+ Prefs.hidePlaceholders = true; |
if (canUseChromeNotifications) |
initChromeNotifications(); |
initAntiAdblockNotification(); |
- } |
- // update browser actions when whitelisting might have changed, |
- // due to loading filters or saving filter changes |
- if (action == "load" || action == "save") |
+ // Update browser actions and context menus when whitelisting might have changed, |
+ // now when initally loading the filters, or later when saving filter changes. |
kzar
2015/03/19 15:20:37
nit: The second line of this comment doesn't read
Sebastian Noack
2015/03/20 13:26:12
I had to rephrase it anyway while addressing Wladi
|
+ FilterNotifier.addListener(function(action) |
+ { |
+ if (action == "save") |
Wladimir Palant
2015/03/19 16:57:04
Please check for action == "load" as well here. Wh
Sebastian Noack
2015/03/20 13:26:12
Done.
|
+ refreshIconAndContextMenuForAllPages(); |
+ }); |
refreshIconAndContextMenuForAllPages(); |
-}); |
+ }; |
+ |
+ var onFilterAction = function(action) |
+ { |
+ if (action == "load") |
+ { |
+ filtersLoaded = true; |
+ if (prefsLoaded) |
Wladimir Palant
2015/03/19 16:57:04
This makes the condition you are checking for (and
Sebastian Noack
2015/03/20 13:26:12
The reason I didn't put it into onLoading in the f
|
+ onLoaded(); |
+ |
+ FilterNotifier.removeListener(onFilterAction); |
Wladimir Palant
2015/03/19 16:57:04
Please always clean up before you run complicated
Sebastian Noack
2015/03/20 13:26:12
Done.
|
+ } |
+ }; |
+ |
+ var onPrefsLoaded = function() |
+ { |
+ // We have to wait for Prefs.onLoaded before retrieving "currentVersion". |
+ // Otherwise it might not be migrated from localStorage yet. |
+ ext.storage.get(["currentVersion"], function(items) |
Wladimir Palant
2015/03/19 16:57:04
This shouldn't be necessary, you can simply use Pr
Sebastian Noack
2015/03/20 13:26:12
See above, currentVersion wasn't a pref yet. Now w
|
+ { |
+ previousVersion = items.currentVersion; |
+ |
+ prefsLoaded = true; |
+ if (filtersLoaded) |
+ onLoaded(); |
+ }); |
+ |
+ Prefs.onLoaded.removeListener(onPrefsLoaded); |
+ }; |
+ |
+ FilterNotifier.addListener(onFilterAction); |
+ Prefs.onLoaded.addListener(onPrefsLoaded); |
+} |
+init(); |
// Special-case domains for which we cannot use style-based hiding rules. |
// See http://crbug.com/68705. |
@@ -213,7 +252,8 @@ |
function notifyUser() |
{ |
- ext.pages.open(ext.getURL("firstRun.html")); |
+ if (!Prefs.suppress_first_run_page) |
+ ext.pages.open(ext.getURL("firstRun.html")); |
} |
if (addSubscription) |
@@ -243,7 +283,7 @@ |
notifyUser(); |
} |
-Prefs.addListener(function(name) |
+Prefs.onChanged.addListener(function(name) |
{ |
if (name == "shouldShowBlockElementMenu") |
refreshIconAndContextMenuForAllPages(); |