Index: adblockplus/Api.jsm |
=================================================================== |
--- a/adblockplus/Api.jsm |
+++ b/adblockplus/Api.jsm |
@@ -32,23 +32,40 @@ function require(module) |
{ |
let result = {}; |
result.wrappedJSObject = result; |
Services.obs.notifyObservers(result, "adblockplus-require", module); |
return result.exports; |
} |
let {Filter} = require("filterClasses"); |
+let {FilterNotifier} = require("filterNotifier"); |
let {FilterStorage} = require("filterStorage"); |
let {defaultMatcher} = require("matcher"); |
let {Prefs} = require("prefs"); |
let {Subscription, SpecialSubscription, RegularSubscription, DownloadableSubscription, ExternalSubscription} = require("subscriptionClasses"); |
let {Synchronizer} = require("synchronizer"); |
let {UI} = require("ui"); |
+function initFilterListeners() |
+{ |
+ FilterNotifier.on("load", onFiltersLoad); |
+ FilterNotifier.on("save", onFiltersSave); |
+} |
+ |
+function onFiltersLoad() |
+{ |
+ Messaging.sendRequest({ type: "Abb:OnFiltersLoad" }); |
+} |
+ |
+function onFiltersSave() |
+{ |
+ Messaging.sendRequest({ type: "Abb:OnFiltersSave" }); |
+} |
+ |
function getWhitelistingFilter(url) |
{ |
let uriObject = Services.io.newURI(url, null, null); |
try |
{ |
return defaultMatcher.whitelist.matchesAny( |
uriObject.spec, "DOCUMENT", uriObject.host, false, null); |
} |
@@ -157,16 +174,18 @@ var AdblockPlusApi = |
if (filter.subscriptions.length) |
filter.disabled = true; |
filter = getWhitelistingFilter(url); |
} |
} |
}, |
initCommunication: function() |
{ |
+ initFilterListeners(); |
+ |
Messaging.addListener((function(data) |
{ |
if (!data) |
return {"success": false, "error": "malformed request"}; |
if (data["action"] == "getFiltersLoaded") |
return {"success": true, "value": this.filtersLoaded}; |