| Index: lib/ui.js | 
| =================================================================== | 
| --- a/lib/ui.js | 
| +++ b/lib/ui.js | 
| @@ -25,11 +25,12 @@ | 
| let {FilterStorage} = require("filterStorage"); | 
| let {FilterNotifier} = require("filterNotifier"); | 
| let {RequestNotifier} = require("requestNotifier"); | 
| -let {Filter, ActiveFilter} = require("filterClasses"); | 
| +let {Filter} = require("filterClasses"); | 
| let {Subscription, SpecialSubscription, DownloadableSubscription} = require("subscriptionClasses"); | 
| let {Synchronizer} = require("synchronizer"); | 
| let {KeySelector} = require("keySelector"); | 
| let {Notification} = require("notification"); | 
| +let {initAntiAdblockNotification} = require("antiadblockInit"); | 
|  | 
| let CustomizableUI; | 
| try | 
| @@ -398,73 +399,6 @@ | 
| } | 
| }, | 
|  | 
| -  _initAntiAdblockNotification: function() | 
| -  { | 
| -    let notification = { | 
| -      id: "antiadblock", | 
| -      type: "question", | 
| -      title: Utils.getString("notification_antiadblock_title"), | 
| -      message: Utils.getString("notification_antiadblock_message"), | 
| -      urlFilters: [] | 
| -    }; | 
| - | 
| -    function notificationListener(approved) | 
| -    { | 
| -      let subscription = Subscription.fromURL(Prefs.subscriptions_antiadblockurl); | 
| -      if (subscription.url in FilterStorage.knownSubscriptions) | 
| -        subscription.disabled = !approved; | 
| -    } | 
| - | 
| -    function addAntiAdblockNotification(subscription) | 
| -    { | 
| -      let urlFilters = []; | 
| -      for each (let filter in subscription.filters) | 
| -        if (filter instanceof ActiveFilter) | 
| -          for (let domain in filter.domains) | 
| -            if (domain && urlFilters.indexOf(domain) == -1) | 
| -              urlFilters.push(domain); | 
| -      notification.urlFilters = urlFilters; | 
| -      Notification.addNotification(notification); | 
| -      Notification.addQuestionListener(notification.id, notificationListener); | 
| -    } | 
| - | 
| -    function removeAntiAdblockNotification() | 
| -    { | 
| -      Notification.removeNotification(notification); | 
| -      Notification.removeQuestionListener(notification.id, notificationListener); | 
| -    } | 
| - | 
| -    let subscription = Subscription.fromURL(Prefs.subscriptions_antiadblockurl); | 
| -    if (subscription.lastDownload && subscription.disabled) | 
| -      addAntiAdblockNotification(subscription); | 
| - | 
| -    FilterNotifier.addListener(function(action, value, newItem, oldItem) | 
| -    { | 
| -      if (!/^subscription\.(updated|removed|disabled)$/.test(action) || value.url != Prefs.subscriptions_antiadblockurl) | 
| -        return; | 
| - | 
| -      if (action == "subscription.updated") | 
| -        addAntiAdblockNotification(value); | 
| -      else if (action == "subscription.removed" || (action == "subscription.disabled" && !value.disabled)) | 
| -        removeAntiAdblockNotification(); | 
| -    }); | 
| - | 
| -    var documentCreationObserver = { | 
| -      observe: function(subject, topic, data) | 
| -      { | 
| -        if (!(subject instanceof Ci.nsIDOMWindow)) | 
| -          return; | 
| - | 
| -        this._showNextNotification(subject.location.href); | 
| -      }.bind(this) | 
| -    }; | 
| -    Services.obs.addObserver(documentCreationObserver, "content-document-global-created", false); | 
| -    onShutdown.add(function() | 
| -    { | 
| -      Services.obs.removeObserver(documentCreationObserver, "content-document-global-created", false); | 
| -    }); | 
| -  }, | 
| - | 
| /** | 
| * Gets called once the initialization is finished and Adblock Plus elements | 
| * can be added to the UI. | 
| @@ -522,7 +456,7 @@ | 
| }.bind(this)); | 
|  | 
| notificationTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); | 
| -    notificationTimer.initWithCallback(this._showNextNotification.bind(this), | 
| +    notificationTimer.initWithCallback(this.showNextNotification.bind(this), | 
| 3 * 60 * 1000, Ci.nsITimer.TYPE_ONE_SHOT); | 
| onShutdown.add(function() notificationTimer.cancel()); | 
| }, | 
| @@ -598,7 +532,22 @@ | 
| }, false); | 
|  | 
| // Add "anti-adblock messages" notification | 
| -    this._initAntiAdblockNotification(); | 
| +    initAntiAdblockNotification(); | 
| + | 
| +    let documentCreationObserver = { | 
| +      observe: function(subject, topic, data) | 
| +      { | 
| +        if (!(subject instanceof Ci.nsIDOMWindow)) | 
| +          return; | 
| + | 
| +        this.showNextNotification(subject.location.href); | 
| +      }.bind(UI) | 
| +    }; | 
| +    Services.obs.addObserver(documentCreationObserver, "content-document-global-created", false); | 
| +    onShutdown.add(function() | 
| +    { | 
| +      Services.obs.removeObserver(documentCreationObserver, "content-document-global-created", false); | 
| +    }); | 
|  | 
| // First-run actions? | 
| if (!this.firstRunDone) | 
| @@ -1850,7 +1799,7 @@ | 
| } | 
| }, | 
|  | 
| -  _showNextNotification: function(url) | 
| +  showNextNotification: function(url) | 
| { | 
| let window = this.currentWindow; | 
| if (!window) | 
|  |