| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * This file is part of Adblock Plus <https://adblockplus.org/>, |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|    3  * Copyright (C) 2006-present eyeo GmbH |    3  * Copyright (C) 2006-present eyeo GmbH | 
|    4  * |    4  * | 
|    5  * Adblock Plus is free software: you can redistribute it and/or modify |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|    6  * it under the terms of the GNU General Public License version 3 as |    6  * it under the terms of the GNU General Public License version 3 as | 
|    7  * published by the Free Software Foundation. |    7  * published by the Free Software Foundation. | 
|    8  * |    8  * | 
|    9  * Adblock Plus is distributed in the hope that it will be useful, |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
|   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|   12  * GNU General Public License for more details. |   12  * GNU General Public License for more details. | 
|   13  * |   13  * | 
|   14  * You should have received a copy of the GNU General Public License |   14  * You should have received a copy of the GNU General Public License | 
|   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. |   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
|   16  */ |   16  */ | 
|   17  |   17  | 
|   18 /** @module whitelisting */ |   18 /** @module whitelisting */ | 
|   19  |   19  | 
|   20 "use strict"; |   20 "use strict"; | 
|   21  |   21  | 
|   22 const {defaultMatcher} = require("../adblockpluscore/lib/matcher"); |   22 const {defaultMatcher} = require("../adblockpluscore/lib/matcher"); | 
|   23 const {Filter, RegExpFilter} = require("../adblockpluscore/lib/filterClasses"); |   23 const {Filter, RegExpFilter} = require("../adblockpluscore/lib/filterClasses"); | 
|   24 const {filterNotifier} = require("../adblockpluscore/lib/filterNotifier"); |   24 const {filterNotifier} = require("../adblockpluscore/lib/filterNotifier"); | 
|   25 const {FilterStorage} = require("../adblockpluscore/lib/filterStorage"); |   25 const {filterStorage} = require("../adblockpluscore/lib/filterStorage"); | 
|   26 const {extractHostFromFrame, isThirdParty} = require("./url"); |   26 const {extractHostFromFrame, isThirdParty} = require("./url"); | 
|   27 const {port} = require("./messaging"); |   27 const {port} = require("./messaging"); | 
|   28 const {logWhitelistedDocument} = require("./hitLogger"); |   28 const {logWhitelistedDocument} = require("./hitLogger"); | 
|   29 const {verifySignature} = require("../adblockpluscore/lib/rsa"); |   29 const {verifySignature} = require("../adblockpluscore/lib/rsa"); | 
|   30  |   30  | 
|   31 let sitekeys = new ext.PageMap(); |   31 let sitekeys = new ext.PageMap(); | 
|   32  |   32  | 
|   33 function match(page, url, typeMask, docDomain, sitekey) |   33 function match(page, url, typeMask, docDomain, sitekey) | 
|   34 { |   34 { | 
|   35   let thirdParty = !!docDomain && isThirdParty(url, docDomain); |   35   let thirdParty = !!docDomain && isThirdParty(url, docDomain); | 
|   36  |   36  | 
|   37   if (!docDomain) |   37   if (!docDomain) | 
|   38     docDomain = url.hostname; |   38     docDomain = url.hostname; | 
|   39  |   39  | 
|   40   let filter = defaultMatcher.whitelist.matchesAny( |   40   let filter = defaultMatcher.matchesAny( | 
|   41     url.href, typeMask, docDomain, thirdParty, sitekey |   41     url.href, typeMask, docDomain, thirdParty, sitekey | 
|   42   ); |   42   ); | 
|   43  |   43  | 
|   44   if (filter && page) |   44   if (filter && page) | 
|   45     logWhitelistedDocument(page.id, url.href, typeMask, docDomain, filter); |   45     logWhitelistedDocument(page.id, url.href, typeMask, docDomain, filter); | 
|   46  |   46  | 
|   47   return filter; |   47   return filter; | 
|   48 } |   48 } | 
|   49  |   49  | 
|   50 let checkWhitelisted = |   50 let checkWhitelisted = | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   93   let page = new ext.Page(message.tab); |   93   let page = new ext.Page(message.tab); | 
|   94   let host = page.url.hostname.replace(/^www\./, ""); |   94   let host = page.url.hostname.replace(/^www\./, ""); | 
|   95   let filter = Filter.fromText("@@||" + host + "^$document"); |   95   let filter = Filter.fromText("@@||" + host + "^$document"); | 
|   96   if (filter.subscriptionCount && filter.disabled) |   96   if (filter.subscriptionCount && filter.disabled) | 
|   97   { |   97   { | 
|   98     filter.disabled = false; |   98     filter.disabled = false; | 
|   99   } |   99   } | 
|  100   else |  100   else | 
|  101   { |  101   { | 
|  102     filter.disabled = false; |  102     filter.disabled = false; | 
|  103     FilterStorage.addFilter(filter); |  103     filterStorage.addFilter(filter); | 
|  104   } |  104   } | 
|  105 }); |  105 }); | 
|  106  |  106  | 
|  107 port.on("filters.unwhitelist", message => |  107 port.on("filters.unwhitelist", message => | 
|  108 { |  108 { | 
|  109   let page = new ext.Page(message.tab); |  109   let page = new ext.Page(message.tab); | 
|  110   // Remove any exception rules applying to this URL |  110   // Remove any exception rules applying to this URL | 
|  111   let filter = checkWhitelisted(page); |  111   let filter = checkWhitelisted(page); | 
|  112   while (filter) |  112   while (filter) | 
|  113   { |  113   { | 
|  114     FilterStorage.removeFilter(filter); |  114     filterStorage.removeFilter(filter); | 
|  115     if (filter.subscriptionCount) |  115     if (filter.subscriptionCount) | 
|  116       filter.disabled = true; |  116       filter.disabled = true; | 
|  117     filter = checkWhitelisted(page); |  117     filter = checkWhitelisted(page); | 
|  118   } |  118   } | 
|  119 }); |  119 }); | 
|  120  |  120  | 
|  121 function revalidateWhitelistingState(page) |  121 function revalidateWhitelistingState(page) | 
|  122 { |  122 { | 
|  123   filterNotifier.emit( |  123   filterNotifier.emit( | 
|  124     "page.WhitelistingStateRevalidate", |  124     "page.WhitelistingStateRevalidate", | 
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  234 { |  234 { | 
|  235   browser.webRequest.onHeadersReceived.addListener( |  235   browser.webRequest.onHeadersReceived.addListener( | 
|  236     onHeadersReceived, |  236     onHeadersReceived, | 
|  237     { |  237     { | 
|  238       urls: ["http://*/*", "https://*/*"], |  238       urls: ["http://*/*", "https://*/*"], | 
|  239       types: ["main_frame", "sub_frame"] |  239       types: ["main_frame", "sub_frame"] | 
|  240     }, |  240     }, | 
|  241     ["responseHeaders"] |  241     ["responseHeaders"] | 
|  242   ); |  242   ); | 
|  243 } |  243 } | 
| OLD | NEW |