| 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 | 
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   66       } |   66       } | 
|   67     } |   67     } | 
|   68   } |   68   } | 
|   69  |   69  | 
|   70   let params = { |   70   let params = { | 
|   71     blockedURLs: "", |   71     blockedURLs: "", | 
|   72     filterlistsReinitialized: false, |   72     filterlistsReinitialized: false, | 
|   73     addSubscription: false, |   73     addSubscription: false, | 
|   74     filterError: false, |   74     filterError: false, | 
|   75     downloadStatus: "synchronize_ok", |   75     downloadStatus: "synchronize_ok", | 
|   76     showNotificationUI: false |   76     showNotificationUI: false, | 
 |   77     showPageOptions: false | 
|   77   }; |   78   }; | 
|   78   updateFromURL(params); |   79   updateFromURL(params); | 
|   79  |   80  | 
|   80   let modules = {}; |   81   let modules = {}; | 
|   81   window.require = function(module) |   82   window.require = function(module) | 
|   82   { |   83   { | 
|   83     return modules[module]; |   84     return modules[module]; | 
|   84   }; |   85   }; | 
|   85  |   86  | 
|   86   modules.utils = { |   87   modules.utils = { | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  128         let index = categories.indexOf(category); |  129         let index = categories.indexOf(category); | 
|  129         if (index == -1) |  130         if (index == -1) | 
|  130           categories.push(category); |  131           categories.push(category); | 
|  131         else |  132         else | 
|  132           categories.splice(index, 1); |  133           categories.splice(index, 1); | 
|  133         modules.prefs.Prefs.notifications_ignoredcategories = categories; |  134         modules.prefs.Prefs.notifications_ignoredcategories = categories; | 
|  134       } |  135       } | 
|  135     } |  136     } | 
|  136   }; |  137   }; | 
|  137  |  138  | 
 |  139   let subscriptionServer = "https://easylist-downloads.adblockplus.org"; | 
 |  140   let subscriptionDetails = { | 
 |  141     [`${subscriptionServer}/easylistgermany+easylist.txt`]: { | 
 |  142       title: "EasyList Germany+EasyList", | 
 |  143       installed: true | 
 |  144     }, | 
 |  145     [`${subscriptionServer}/exceptionrules.txt`]: { | 
 |  146       title: "Allow non-intrusive advertising", | 
 |  147       installed: true | 
 |  148     }, | 
 |  149     [`${subscriptionServer}/exceptionrules-privacy.txt`]: { | 
 |  150       title: "Allow only nonintrusive ads that are privacy-friendly" | 
 |  151     }, | 
 |  152     [`${subscriptionServer}/fanboy-social.txt`]: { | 
 |  153       title: "Fanboy's Social Blocking List", | 
 |  154       installed: true | 
 |  155     }, | 
 |  156     [`${subscriptionServer}/antiadblockfilters.txt`]: { | 
 |  157       title: "Adblock Warning Removal List", | 
 |  158       installed: true, | 
 |  159       disabled: true | 
 |  160     }, | 
 |  161     "~user~786254": { | 
 |  162       installed: true | 
 |  163     } | 
 |  164   }; | 
 |  165  | 
|  138   function Subscription(url) |  166   function Subscription(url) | 
|  139   { |  167   { | 
|  140     this.url = url; |  168     this.url = url; | 
|  141     this._disabled = false; |  169     this._disabled = false; | 
|  142     this._lastDownload = 1234; |  170     this._lastDownload = 1234; | 
|  143     this.homepage = "https://easylist.adblockplus.org/"; |  171     this.homepage = "https://easylist.adblockplus.org/"; | 
|  144     this.downloadStatus = params.downloadStatus; |  172     this.downloadStatus = params.downloadStatus; | 
|  145  |  173  | 
|  146     if (subscriptions[this.url] && subscriptions[this.url].title) |  174     let details = subscriptionDetails[this.url]; | 
 |  175     if (details) | 
|  147     { |  176     { | 
|  148       this.title = subscriptions[this.url].title; |  177       this.disabled = !!details.disabled; | 
|  149     } |  178       this.title = details.title || ""; | 
|  150     if (this.url == prefs.subscriptions_exceptionsurl_privacy) |  | 
|  151     { |  | 
|  152       this.title = "Allow only nonintrusive ads that are privacy-friendly"; |  | 
|  153     } |  179     } | 
|  154   } |  180   } | 
|  155   Subscription.prototype = |  181   Subscription.prototype = | 
|  156   { |  182   { | 
|  157     get disabled() |  183     get disabled() | 
|  158     { |  184     { | 
|  159       return this._disabled; |  185       return this._disabled; | 
|  160     }, |  186     }, | 
|  161     set disabled(value) |  187     set disabled(value) | 
|  162     { |  188     { | 
|  163       this._disabled = value; |  189       this._disabled = value; | 
|  164       modules.filterNotifier.FilterNotifier.emit("subscription.disabled", this); |  190       modules.filterNotifier.FilterNotifier.emit("subscription.disabled", this); | 
|  165     }, |  191     }, | 
|  166     get lastDownload() |  192     get lastDownload() | 
|  167     { |  193     { | 
|  168       return this._lastDownload; |  194       return this._lastDownload; | 
|  169     }, |  195     }, | 
|  170     set lastDownload(value) |  196     set lastDownload(value) | 
|  171     { |  197     { | 
|  172       this._lastDownload = value; |  198       this._lastDownload = value; | 
|  173       modules.filterNotifier.FilterNotifier.emit("subscription.lastDownload", |  199       modules.filterNotifier.FilterNotifier.emit("subscription.lastDownload", | 
|  174                                                  this); |  200         this); | 
|  175     } |  201     } | 
|  176   }; |  202   }; | 
|  177   Subscription.fromURL = function(url) |  203   Subscription.fromURL = function(url) | 
|  178   { |  204   { | 
|  179     if (url in knownSubscriptions) |  205     if (url in knownSubscriptions) | 
|  180       return knownSubscriptions[url]; |  206       return knownSubscriptions[url]; | 
|  181  |  207  | 
|  182     if (/^https?:\/\//.test(url)) |  208     if (/^https?:\/\//.test(url)) | 
|  183       return new modules.subscriptionClasses.Subscription(url); |  209       return new modules.subscriptionClasses.Subscription(url); | 
|  184     return new modules.subscriptionClasses.SpecialSubscription(url); |  210     return new modules.subscriptionClasses.SpecialSubscription(url); | 
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  218  |  244  | 
|  219       addSubscription(subscription) |  245       addSubscription(subscription) | 
|  220       { |  246       { | 
|  221         let {fromURL} = Subscription; |  247         let {fromURL} = Subscription; | 
|  222         let {FilterStorage} = modules.filterStorage; |  248         let {FilterStorage} = modules.filterStorage; | 
|  223  |  249  | 
|  224         if (!(subscription.url in FilterStorage.knownSubscriptions)) |  250         if (!(subscription.url in FilterStorage.knownSubscriptions)) | 
|  225         { |  251         { | 
|  226           knownSubscriptions[subscription.url] = fromURL(subscription.url); |  252           knownSubscriptions[subscription.url] = fromURL(subscription.url); | 
|  227           modules.filterNotifier.FilterNotifier.emit("subscription.added", |  253           modules.filterNotifier.FilterNotifier.emit("subscription.added", | 
|  228                                                      subscription); |  254             subscription); | 
|  229         } |  255         } | 
|  230       }, |  256       }, | 
|  231  |  257  | 
|  232       removeSubscription(subscription) |  258       removeSubscription(subscription) | 
|  233       { |  259       { | 
|  234         let {FilterStorage} = modules.filterStorage; |  260         let {FilterStorage} = modules.filterStorage; | 
|  235  |  261  | 
|  236         if (subscription.url in FilterStorage.knownSubscriptions) |  262         if (subscription.url in FilterStorage.knownSubscriptions) | 
|  237         { |  263         { | 
|  238           delete knownSubscriptions[subscription.url]; |  264           delete knownSubscriptions[subscription.url]; | 
|  239           modules.filterNotifier.FilterNotifier.emit("subscription.removed", |  265           modules.filterNotifier.FilterNotifier.emit("subscription.removed", | 
|  240                                                      subscription); |  266             subscription); | 
|  241         } |  267         } | 
|  242       }, |  268       }, | 
|  243  |  269  | 
|  244       addFilter(filter) |  270       addFilter(filter) | 
|  245       { |  271       { | 
|  246         for (let customFilter of customSubscription.filters) |  272         for (let customFilter of customSubscription.filters) | 
|  247         { |  273         { | 
|  248           if (customFilter.text == filter.text) |  274           if (customFilter.text == filter.text) | 
|  249             return; |  275             return; | 
|  250         } |  276         } | 
|  251         customSubscription.filters.push(filter); |  277         customSubscription.filters.push(filter); | 
|  252         modules.filterNotifier.FilterNotifier.emit("filter.added", filter); |  278         modules.filterNotifier.FilterNotifier.emit("filter.added", filter); | 
|  253       }, |  279       }, | 
|  254  |  280  | 
|  255       removeFilter(filter) |  281       removeFilter(filter) | 
|  256       { |  282       { | 
|  257         for (let i = 0; i < customSubscription.filters.length; i++) |  283         for (let i = 0; i < customSubscription.filters.length; i++) | 
|  258         { |  284         { | 
|  259           if (customSubscription.filters[i].text == filter.text) |  285           if (customSubscription.filters[i].text == filter.text) | 
|  260           { |  286           { | 
|  261             customSubscription.filters.splice(i, 1); |  287             customSubscription.filters.splice(i, 1); | 
|  262             modules.filterNotifier.FilterNotifier.emit("filter.removed", |  288             modules.filterNotifier.FilterNotifier.emit("filter.removed", | 
|  263                                                        filter); |  289               filter); | 
|  264             return; |  290             return; | 
|  265           } |  291           } | 
|  266         } |  292         } | 
|  267       } |  293       } | 
|  268     } |  294     } | 
|  269   }; |  295   }; | 
|  270  |  296  | 
|  271   function Filter(text) |  297   function Filter(text) | 
|  272   { |  298   { | 
|  273     this.text = text; |  299     this.text = text; | 
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  441     "###Werbung_Sky", |  467     "###Werbung_Sky", | 
|  442     "###Werbung_Wide", |  468     "###Werbung_Wide", | 
|  443     "###__ligatus_placeholder__", |  469     "###__ligatus_placeholder__", | 
|  444     "###ad-bereich1-08", |  470     "###ad-bereich1-08", | 
|  445     "###ad-bereich1-superbanner", |  471     "###ad-bereich1-superbanner", | 
|  446     "###ad-bereich2-08", |  472     "###ad-bereich2-08", | 
|  447     "###ad-bereich2-skyscrapper" |  473     "###ad-bereich2-skyscrapper" | 
|  448   ]; |  474   ]; | 
|  449   let knownFilters = filters.map(modules.filterClasses.Filter.fromText); |  475   let knownFilters = filters.map(modules.filterClasses.Filter.fromText); | 
|  450  |  476  | 
|  451   let subscriptions = { |  477   let knownSubscriptions = Object.create(null); | 
|  452     "https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt": { |  478   for (let url in subscriptionDetails) | 
|  453       title: "EasyList Germany+EasyList" |  479   { | 
|  454     }, |  480     if (!subscriptionDetails[url].installed) | 
|  455     "https://easylist-downloads.adblockplus.org/exceptionrules.txt": { |  481       continue; | 
|  456       title: "Allow non-intrusive advertising" |  | 
|  457     }, |  | 
|  458     "https://easylist-downloads.adblockplus.org/fanboy-social.txt": { |  | 
|  459       title: "Fanboy's Social Blocking List", |  | 
|  460       type: "social" |  | 
|  461     }, |  | 
|  462     "https://easylist-downloads.adblockplus.org/antiadblockfilters.txt": { |  | 
|  463       title: "Adblock Warning Removal List" |  | 
|  464     }, |  | 
|  465     "~user~78625": { |  | 
|  466       title: "My filter list" |  | 
|  467     } |  | 
|  468   }; |  | 
|  469  |  482  | 
|  470   let knownSubscriptions = Object.create(null); |  483     knownSubscriptions[url] = | 
|  471   for (let subscriptionUrl in subscriptions) |  484       modules.subscriptionClasses.Subscription.fromURL(url); | 
|  472   { |  | 
|  473     knownSubscriptions[subscriptionUrl] = |  | 
|  474       modules.subscriptionClasses.Subscription.fromURL(subscriptionUrl); |  | 
|  475   } |  485   } | 
|  476   let customSubscription = knownSubscriptions["~user~78625"]; |  486   let customSubscription = knownSubscriptions["~user~786254"]; | 
|  477  |  487  | 
|  478   if (params.addSubscription) |  488   if (params.addSubscription) | 
|  479   { |  489   { | 
|  480     // We don't know how long it will take for the page to fully load |  490     // We don't know how long it will take for the page to fully load | 
|  481     // so we'll post the message after one second |  491     // so we'll post the message after one second | 
|  482     setTimeout(() => |  492     setTimeout(() => | 
|  483     { |  493     { | 
|  484       window.postMessage({ |  494       window.postMessage({ | 
|  485         type: "message", |  495         type: "message", | 
|  486         payload: { |  496         payload: { | 
|  487           title: "Custom subscription", |  497           title: "Custom subscription", | 
|  488           url: "http://example.com/custom.txt", |  498           url: "http://example.com/custom.txt", | 
|  489           confirm: true, |  499           confirm: true, | 
|  490           type: "subscriptions.add" |  500           type: "subscriptions.add" | 
|  491         } |  501         } | 
|  492       }, "*"); |  502       }, "*"); | 
|  493     }, 1000); |  503     }, 1000); | 
|  494   } |  504   } | 
|  495  |  505  | 
 |  506   if (params.showPageOptions) | 
 |  507   { | 
 |  508     // We don't know how long it will take for the page to fully load | 
 |  509     // so we'll post the message after one second | 
 |  510     setTimeout(() => | 
 |  511     { | 
 |  512       let host = "example.com"; | 
 |  513       let isWhitelisted = customSubscription.filters | 
 |  514         .some((filter) => filter.text == `@@||${host}^$document`); | 
 |  515       window.postMessage({ | 
 |  516         type: "message", | 
 |  517         payload: { | 
 |  518           type: "app.open", | 
 |  519           what: "options", | 
 |  520           action: "showPageOptions", | 
 |  521           args: [ | 
 |  522             { | 
 |  523               host, | 
 |  524               whitelisted: isWhitelisted | 
 |  525             } | 
 |  526           ] | 
 |  527         } | 
 |  528       }, "*"); | 
 |  529     }, 1000); | 
 |  530   } | 
 |  531  | 
|  496   ext.devtools.onCreated.addListener((panel) => |  532   ext.devtools.onCreated.addListener((panel) => | 
|  497   { |  533   { | 
|  498     // blocked request |  534     // blocked request | 
|  499     panel.sendMessage({ |  535     panel.sendMessage({ | 
|  500       type: "add-record", |  536       type: "add-record", | 
|  501       request: { |  537       request: { | 
|  502         url: "http://adserver.example.com/ad_banner.png", |  538         url: "http://adserver.example.com/ad_banner.png", | 
|  503         type: "IMAGE", |  539         type: "IMAGE", | 
|  504         docDomain: "example.com" |  540         docDomain: "example.com" | 
|  505       }, |  541       }, | 
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  563       }, |  599       }, | 
|  564       filter: { |  600       filter: { | 
|  565         text: "||example.com/some-annoying-popup$popup", |  601         text: "||example.com/some-annoying-popup$popup", | 
|  566         whitelisted: false, |  602         whitelisted: false, | 
|  567         userDefined: true, |  603         userDefined: true, | 
|  568         subscription: null |  604         subscription: null | 
|  569       } |  605       } | 
|  570     }); |  606     }); | 
|  571   }); |  607   }); | 
|  572 }()); |  608 }()); | 
| OLD | NEW |