| Left: | ||
| Right: |
| 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-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 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 161 */ | 161 */ |
| 162 addSubscription(subscription) | 162 addSubscription(subscription) |
| 163 { | 163 { |
| 164 if (this.knownSubscriptions.has(subscription.url)) | 164 if (this.knownSubscriptions.has(subscription.url)) |
| 165 return; | 165 return; |
| 166 | 166 |
| 167 this.knownSubscriptions.set(subscription.url, subscription); | 167 this.knownSubscriptions.set(subscription.url, subscription); |
| 168 connectSubscriptionFilters(subscription); | 168 connectSubscriptionFilters(subscription); |
| 169 | 169 |
| 170 filterNotifier.emit("subscription.added", subscription); | 170 filterNotifier.emit("subscription.added", subscription); |
| 171 | |
| 172 subscription.clearCaches(); | |
| 173 } | 171 } |
| 174 | 172 |
| 175 /** | 173 /** |
| 176 * Removes a subscription from the storage. | 174 * Removes a subscription from the storage. |
| 177 * @param {Subscription} subscription The subscription to be removed. | 175 * @param {Subscription} subscription The subscription to be removed. |
| 178 */ | 176 */ |
| 179 removeSubscription(subscription) | 177 removeSubscription(subscription) |
| 180 { | 178 { |
| 181 if (!this.knownSubscriptions.has(subscription.url)) | 179 if (!this.knownSubscriptions.has(subscription.url)) |
| 182 return; | 180 return; |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 202 let oldFilters = [...subscription.filters()]; | 200 let oldFilters = [...subscription.filters()]; |
| 203 disconnectSubscriptionFilters(subscription, oldFilters); | 201 disconnectSubscriptionFilters(subscription, oldFilters); |
| 204 subscription.clearFilters(); | 202 subscription.clearFilters(); |
| 205 | 203 |
| 206 for (let filter of filters) | 204 for (let filter of filters) |
| 207 subscription.addFilter(filter); | 205 subscription.addFilter(filter); |
| 208 | 206 |
| 209 connectSubscriptionFilters(subscription, filters); | 207 connectSubscriptionFilters(subscription, filters); |
| 210 | 208 |
| 211 filterNotifier.emit("subscription.updated", subscription, oldFilters); | 209 filterNotifier.emit("subscription.updated", subscription, oldFilters); |
| 212 | |
| 213 subscription.clearCaches(); | |
|
Manish Jethani
2018/11/18 02:25:50
Typically a subscription will be updated with mult
| |
| 214 } | 210 } |
| 215 | 211 |
| 216 /** | 212 /** |
| 217 * Adds a user-defined filter to the storage. | 213 * Adds a user-defined filter to the storage. |
| 218 * @param {Filter} filter | 214 * @param {Filter} filter |
| 219 * @param {?SpecialSubscription} [subscription] The subscription that the | 215 * @param {?SpecialSubscription} [subscription] The subscription that the |
| 220 * filter should be added to. | 216 * filter should be added to. |
| 221 * @param {number} [position] The position within the subscription at which | 217 * @param {number} [position] The position within the subscription at which |
| 222 * the filter should be added. If not specified, the filter is added at the | 218 * the filter should be added. If not specified, the filter is added at the |
| 223 * end of the subscription. | 219 * end of the subscription. |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 384 let knownSubscriptions = new Map(); | 380 let knownSubscriptions = new Map(); |
| 385 for (let subscription of parser.subscriptions) | 381 for (let subscription of parser.subscriptions) |
| 386 knownSubscriptions.set(subscription.url, subscription); | 382 knownSubscriptions.set(subscription.url, subscription); |
| 387 | 383 |
| 388 this.fileProperties = parser.fileProperties; | 384 this.fileProperties = parser.fileProperties; |
| 389 this.knownSubscriptions = knownSubscriptions; | 385 this.knownSubscriptions = knownSubscriptions; |
| 390 Filter.knownFilters = parser.knownFilters; | 386 Filter.knownFilters = parser.knownFilters; |
| 391 Subscription.knownSubscriptions = parser.knownSubscriptions; | 387 Subscription.knownSubscriptions = parser.knownSubscriptions; |
| 392 | 388 |
| 393 if (!silent) | 389 if (!silent) |
| 394 { | |
| 395 filterNotifier.emit("load"); | 390 filterNotifier.emit("load"); |
| 396 | |
| 397 // Clear any in-memory caches that may have been created during | |
| 398 // initialization. | |
| 399 clearSubscriptionCaches(); | |
|
Manish Jethani
2018/11/18 02:25:50
This is not necessary right now but better to do i
| |
| 400 } | |
| 401 } | 391 } |
| 402 }; | 392 }; |
| 403 } | 393 } |
| 404 | 394 |
| 405 /** | 395 /** |
| 406 * Loads all subscriptions from disk. | 396 * Loads all subscriptions from disk. |
| 407 * @returns {Promise} A promise resolved or rejected when loading is complete. | 397 * @returns {Promise} A promise resolved or rejected when loading is complete. |
| 408 */ | 398 */ |
| 409 loadFromDisk() | 399 loadFromDisk() |
| 410 { | 400 { |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 439 } | 429 } |
| 440 }); | 430 }); |
| 441 }).catch(error => | 431 }).catch(error => |
| 442 { | 432 { |
| 443 Cu.reportError(error); | 433 Cu.reportError(error); |
| 444 return tryBackup(1); | 434 return tryBackup(1); |
| 445 }).then(() => | 435 }).then(() => |
| 446 { | 436 { |
| 447 this.initialized = true; | 437 this.initialized = true; |
| 448 filterNotifier.emit("load"); | 438 filterNotifier.emit("load"); |
| 449 clearSubscriptionCaches(); | |
| 450 }); | 439 }); |
| 451 } | 440 } |
| 452 | 441 |
| 453 /** | 442 /** |
| 454 * Constructs the file name for a <code>patterns.ini</code> backup. | 443 * Constructs the file name for a <code>patterns.ini</code> backup. |
| 455 * @param {number} backupIndex Number of the backup file (1 being the most | 444 * @param {number} backupIndex Number of the backup file (1 being the most |
| 456 * recent). | 445 * recent). |
| 457 * @returns {string} Backup file name. | 446 * @returns {string} Backup file name. |
| 458 */ | 447 */ |
| 459 getBackupName(backupIndex) | 448 getBackupName(backupIndex) |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 687 * subscription is disconnected from its own filters. | 676 * subscription is disconnected from its own filters. |
| 688 */ | 677 */ |
| 689 function disconnectSubscriptionFilters(subscription, filters) | 678 function disconnectSubscriptionFilters(subscription, filters) |
| 690 { | 679 { |
| 691 if (!filterStorage.knownSubscriptions.has(subscription.url)) | 680 if (!filterStorage.knownSubscriptions.has(subscription.url)) |
| 692 return; | 681 return; |
| 693 | 682 |
| 694 for (let filter of filters || subscription.filters()) | 683 for (let filter of filters || subscription.filters()) |
| 695 filter.removeSubscription(subscription); | 684 filter.removeSubscription(subscription); |
| 696 } | 685 } |
| 697 | |
| 698 /** | |
| 699 * Clears any in-memory caches held by subscriptions in the storage. | |
| 700 */ | |
| 701 function clearSubscriptionCaches() | |
| 702 { | |
| 703 for (let subscription of filterStorage.subscriptions()) | |
| 704 subscription.clearCaches(); | |
| 705 } | |
| LEFT | RIGHT |