| LEFT | RIGHT | 
|---|
| 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-2015 Eyeo GmbH | 3  * Copyright (C) 2006-2015 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 | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 24       var params = window.location.search.substr(1).split("&"); | 24       var params = window.location.search.substr(1).split("&"); | 
| 25       for (var i = 0; i < params.length; i++) | 25       for (var i = 0; i < params.length; i++) | 
| 26       { | 26       { | 
| 27         var parts = params[i].split("=", 2); | 27         var parts = params[i].split("=", 2); | 
| 28         if (parts.length == 2 && parts[0] in data) | 28         if (parts.length == 2 && parts[0] in data) | 
| 29           data[parts[0]] = decodeURIComponent(parts[1]); | 29           data[parts[0]] = decodeURIComponent(parts[1]); | 
| 30       } | 30       } | 
| 31     } | 31     } | 
| 32   } | 32   } | 
| 33 | 33 | 
|  | 34   var params = { | 
|  | 35     blockedURLs: "", | 
|  | 36     seenDataCorruption: false, | 
|  | 37     filterlistsReinitialized: false, | 
|  | 38     addSubscription: false, | 
|  | 39     filterError: false | 
|  | 40   }; | 
|  | 41   updateFromURL(params); | 
|  | 42 | 
| 34   var modules = {}; | 43   var modules = {}; | 
| 35   global.require = function(module) | 44   global.require = function(module) | 
| 36   { | 45   { | 
| 37     return modules[module]; | 46     return modules[module]; | 
| 38   }; | 47   }; | 
| 39 | 48 | 
| 40   modules.utils = { | 49   modules.utils = { | 
| 41     Utils: { | 50     Utils: { | 
| 42       getDocLink: function(link) | 51       getDocLink: function(link) | 
| 43       { | 52       { | 
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 139       } | 148       } | 
| 140     } | 149     } | 
| 141   }; | 150   }; | 
| 142 | 151 | 
| 143   modules.filterClasses = { | 152   modules.filterClasses = { | 
| 144     BlockingFilter: function() {}, | 153     BlockingFilter: function() {}, | 
| 145     Filter: function(text) | 154     Filter: function(text) | 
| 146     { | 155     { | 
| 147       this.text = text; | 156       this.text = text; | 
| 148       this.disabled = false; | 157       this.disabled = false; | 
| 149     }, |  | 
| 150     WhitelistFilter: function(text) |  | 
| 151     { |  | 
| 152       modules.filterClasses.Filter.call(this, text); |  | 
| 153     } | 158     } | 
| 154   }; | 159   }; | 
| 155   modules.filterClasses.Filter.fromText = function(text) | 160   modules.filterClasses.Filter.fromText = function(text) | 
| 156   { | 161   { | 
| 157     if (text.indexOf("@@") == 0) |  | 
| 158       return new modules.filterClasses.WhitelistFilter(text); |  | 
| 159     return new modules.filterClasses.Filter(text); | 162     return new modules.filterClasses.Filter(text); | 
| 160   }; | 163   }; | 
| 161 | 164 | 
| 162   modules.filterValidation = | 165   modules.filterValidation = | 
| 163   { | 166   { | 
| 164     parseFilter: function(text) | 167     parseFilter: function(text) | 
| 165     { | 168     { | 
|  | 169 | 
|  | 170       if (params.filterError) | 
|  | 171         return {error: "Invalid filter"}; | 
| 166       return {filter: modules.filterClasses.Filter.fromText(text)}; | 172       return {filter: modules.filterClasses.Filter.fromText(text)}; | 
| 167     }, | 173     }, | 
| 168     parseFilters: function(text) | 174     parseFilters: function(text) | 
| 169     { | 175     { | 
| 170       var lines = text.split("\n"); | 176       if (params.filterError) | 
| 171       var filters = []; | 177         return {errors: ["Invalid filter"]}; | 
| 172       var errors = []; | 178       return {filters: | 
| 173 | 179               text.split("\n").map(modules.filterClasses.Filter.fromText)}; | 
| 174       for (var i = 0; i < lines.length; i++) |  | 
| 175         filters.push(modules.filterValidation.parseFilter(lines[i]).filter); |  | 
| 176 |  | 
| 177       return {filters: filters, errors: errors}; |  | 
| 178     } | 180     } | 
| 179   }; | 181   }; | 
| 180 | 182 | 
| 181   modules.synchronizer = { | 183   modules.synchronizer = { | 
| 182     Synchronizer: {} | 184     Synchronizer: {} | 
| 183   }; | 185   }; | 
| 184 | 186 | 
| 185   modules.matcher = { | 187   modules.matcher = { | 
| 186     defaultMatcher: { | 188     defaultMatcher: { | 
| 187       matchesAny: function(url, requestType, docDomain, thirdParty) | 189       matchesAny: function(url, requestType, docDomain, thirdParty) | 
| 188       { | 190       { | 
| 189         var params = {blockedURLs: ""}; |  | 
| 190         updateFromURL(params); |  | 
| 191         var blocked = params.blockedURLs.split(","); | 191         var blocked = params.blockedURLs.split(","); | 
| 192         if (blocked.indexOf(url) >= 0) | 192         if (blocked.indexOf(url) >= 0) | 
| 193           return new modules.filterClasses.BlockingFilter(); | 193           return new modules.filterClasses.BlockingFilter(); | 
| 194         else | 194         else | 
| 195           return null; | 195           return null; | 
| 196       } | 196       } | 
| 197     } | 197     } | 
| 198   }; | 198   }; | 
| 199 | 199 | 
| 200   var notifierListeners = []; | 200   var notifierListeners = []; | 
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 270     "https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt", | 270     "https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt", | 
| 271     "https://easylist-downloads.adblockplus.org/exceptionrules.txt", | 271     "https://easylist-downloads.adblockplus.org/exceptionrules.txt", | 
| 272     "https://easylist-downloads.adblockplus.org/fanboy-social.txt", | 272     "https://easylist-downloads.adblockplus.org/fanboy-social.txt", | 
| 273     "~user~786254" | 273     "~user~786254" | 
| 274   ]; | 274   ]; | 
| 275   var knownSubscriptions = Object.create(null); | 275   var knownSubscriptions = Object.create(null); | 
| 276   for (var subscriptionUrl of subscriptions) | 276   for (var subscriptionUrl of subscriptions) | 
| 277     knownSubscriptions[subscriptionUrl] = modules.subscriptionClasses.Subscripti
     on.fromURL(subscriptionUrl); | 277     knownSubscriptions[subscriptionUrl] = modules.subscriptionClasses.Subscripti
     on.fromURL(subscriptionUrl); | 
| 278   var customSubscription = knownSubscriptions["~user~786254"]; | 278   var customSubscription = knownSubscriptions["~user~786254"]; | 
| 279 | 279 | 
| 280   var issues = {seenDataCorruption: false, filterlistsReinitialized: false}; | 280   global.seenDataCorruption = params.seenDataCorruption; | 
| 281   updateFromURL(issues); | 281   global.filterlistsReinitialized = params.filterlistsReinitialized; | 
| 282   global.seenDataCorruption = issues.seenDataCorruption; |  | 
| 283   global.filterlistsReinitialized = issues.filterlistsReinitialized; |  | 
| 284 | 282 | 
| 285   var events = {addSubscription: false}; | 283   if (params.addSubscription) | 
| 286   updateFromURL(events); |  | 
| 287   if (events.addSubscription) |  | 
| 288   { | 284   { | 
| 289     // We don't know how long it will take for the page to fully load | 285     // We don't know how long it will take for the page to fully load | 
| 290     // so we'll post the message after one second | 286     // so we'll post the message after one second | 
| 291     setTimeout(function() | 287     setTimeout(function() | 
| 292     { | 288     { | 
| 293       window.postMessage({ | 289       window.postMessage({ | 
| 294         type: "message", | 290         type: "message", | 
| 295         payload: { | 291         payload: { | 
| 296           title: "Custom subscription", | 292           title: "Custom subscription", | 
| 297           url: "http://example.com/custom.txt", | 293           url: "http://example.com/custom.txt", | 
| 298           type: "add-subscription" | 294           type: "add-subscription" | 
| 299         } | 295         } | 
| 300       }, "*"); | 296       }, "*"); | 
| 301     }, 1000); | 297     }, 1000); | 
| 302   } | 298   } | 
| 303 })(this); | 299 })(this); | 
| LEFT | RIGHT | 
|---|