diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2014-10-20 02:24:51 +0200 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2014-10-20 02:24:51 +0200 |
commit | 6e7918b6ccb69876d339a320091fdee811445395 (patch) | |
tree | 31cb88ee438d652fddefca1193f70289a8b3dcc8 /data/extensions/spyblock@gnu.org/lib/antiadblockInit.js | |
parent | 60e5b13c35d4d3ba21bb03b026750a0a414f6c77 (diff) |
Generalize data directory
Diffstat (limited to 'data/extensions/spyblock@gnu.org/lib/antiadblockInit.js')
-rw-r--r-- | data/extensions/spyblock@gnu.org/lib/antiadblockInit.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/data/extensions/spyblock@gnu.org/lib/antiadblockInit.js b/data/extensions/spyblock@gnu.org/lib/antiadblockInit.js new file mode 100644 index 0000000..d8b29ca --- /dev/null +++ b/data/extensions/spyblock@gnu.org/lib/antiadblockInit.js @@ -0,0 +1,78 @@ +/* + * This file is part of Adblock Plus <http://adblockplus.org/>, + * Copyright (C) 2006-2014 Eyeo GmbH + * + * Adblock Plus is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * Adblock Plus is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. + */ + +Cu.import("resource://gre/modules/Services.jsm"); + +let {Utils} = require("utils"); +let {Prefs} = require("prefs"); +let {ActiveFilter} = require("filterClasses"); +let {FilterStorage} = require("filterStorage"); +let {FilterNotifier} = require("filterNotifier"); +let {Subscription} = require("subscriptionClasses"); +let {Notification} = require("notification"); + +exports.initAntiAdblockNotification = function initAntiAdblockNotification() +{ + 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 (let filter of 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(); + }); +} |