| 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 |