| Index: adblockplus/Api.jsm | 
| diff --git a/adblockplus/Api.jsm b/adblockplus/Api.jsm | 
| index d87c428db1072eacdb8f8ba52a97a52879b1992c..9c3fba85b554ef34fcf2bc55b6edd30e48e9250a 100644 | 
| --- a/adblockplus/Api.jsm | 
| +++ b/adblockplus/Api.jsm | 
| @@ -23,6 +23,7 @@ const Cr = Components.results; | 
| const Cu = Components.utils; | 
| Cu.import("resource://gre/modules/Services.jsm"); | 
| +Cu.import("resource://gre/modules/Messaging.jsm"); | 
| function require(module) | 
| { | 
| @@ -32,12 +33,19 @@ function require(module) | 
| return result.exports; | 
| } | 
| +let {FilterNotifier} = require("filterNotifier"); | 
| let {FilterStorage} = require("filterStorage"); | 
| let {Prefs} = require("prefs"); | 
| let {UI} = require("ui"); | 
| +let {FilterNotifier} = require("filterNotifier"); | 
| + | 
| var AdblockPlusApi = | 
| { | 
| + get filtersLoaded() | 
| + { | 
| + return filtersLoaded; | 
| + }, | 
| get acceptableAdsEnabled() | 
| { | 
| return FilterStorage.subscriptions.some( | 
| @@ -49,3 +57,41 @@ var AdblockPlusApi = | 
| UI.toggleAcceptableAds(); | 
| } | 
| }; | 
| + | 
| + | 
| +FilterNotifier.addListener(function filterListener(action) | 
| +{ | 
| + if (action != "load") | 
| + return; | 
| + | 
| + filtersLoaded = true; | 
| + FilterNotifier.removeListener(filterListener); | 
| +}); | 
| + | 
| +RequestService.addListener(function(data) | 
| +{ | 
| + if (!data) | 
| + return {"success" : false, "error" : "misformed request"}; | 
| + | 
| + if (data["action"] == "query_ready_state") | 
| + return {"success" : true, "value" : AdblockPlusApi.filtersLoaded}; | 
| + | 
| + if (!AdblockPlusApi.filtersLoaded) | 
| + return {"success" : false, "error" : "filters not loaded"}; | 
| + | 
| + switch (data["action"]) | 
| + { | 
| + case "query_acceptable_ads_state": | 
| + return {"success" : true, "value" : AdblockPlusApi.acceptableAdsEnabled}; | 
| + case "change_acceptable_ads_state": | 
| + if ("enable" in data) | 
| + { | 
| + AdblockPlusApi.acceptableAdsEnabled = !!data["enable"]; | 
| + return {"success" : true}; | 
| + } | 
| + return {"success" : false, "error" : "misformed request"}; | 
| + default: | 
| + return {"success" : false, "error" : "unknown action '" + data["action"] + "'"}; | 
| + } | 
| + return {"success" : false, "error" : "misformed request"}; | 
| +}, "AdblockPlus:Api"); |