| Index: lib/whitelisting.js |
| =================================================================== |
| --- a/lib/whitelisting.js |
| +++ b/lib/whitelisting.js |
| @@ -15,18 +15,19 @@ |
| * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| */ |
| /** @module whitelisting */ |
| "use strict"; |
| const {defaultMatcher} = require("matcher"); |
| -const {RegExpFilter} = require("filterClasses"); |
| +const {Filter, RegExpFilter} = require("filterClasses"); |
| const {FilterNotifier} = require("filterNotifier"); |
| +const {FilterStorage} = require("filterStorage"); |
| const {stringifyURL, getDecodedHostname, |
| extractHostFromFrame, isThirdParty} = require("url"); |
| const {port} = require("messaging"); |
| const devtools = require("devtools"); |
| const {verifySignature} = require("rsa"); |
| let sitekeys = new ext.PageMap(); |
| @@ -82,16 +83,51 @@ |
| } |
| return filter; |
| } |
| return match(page, page.url, typeMask); |
| }; |
| +port.on("filters.isWhitelisted", message => |
| +{ |
| + return !!checkWhitelisted(new ext.Page(message.tab)); |
| +}); |
| + |
| +port.on("filters.whitelist", message => |
| +{ |
| + let page = new ext.Page(message.tab); |
| + let host = getDecodedHostname(page.url).replace(/^www\./, ""); |
| + let filter = Filter.fromText("@@||" + host + "^$document"); |
| + if (filter.subscriptions.length && filter.disabled) |
| + { |
| + filter.disabled = false; |
| + } |
| + else |
| + { |
| + filter.disabled = false; |
| + FilterStorage.addFilter(filter); |
| + } |
| +}); |
| + |
| +port.on("filters.unwhitelist", message => |
| +{ |
| + let page = new ext.Page(message.tab); |
| + // Remove any exception rules applying to this URL |
| + let filter = checkWhitelisted(page); |
| + while (filter) |
| + { |
| + FilterStorage.removeFilter(filter); |
| + if (filter.subscriptions.length) |
| + filter.disabled = true; |
| + filter = checkWhitelisted(page); |
| + } |
| +}); |
| + |
| function revalidateWhitelistingState(page) |
| { |
| FilterNotifier.emit( |
| "page.WhitelistingStateRevalidate", |
| page, checkWhitelisted(page) |
| ); |
| } |