| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This Source Code is subject to the terms of the Mozilla Public License | 2 * This Source Code is subject to the terms of the Mozilla Public License |
| 3 * version 2.0 (the "License"). You can obtain a copy of the License at | 3 * version 2.0 (the "License"). You can obtain a copy of the License at |
| 4 * http://mozilla.org/MPL/2.0/. | 4 * http://mozilla.org/MPL/2.0/. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * @fileOverview FilterStorage class responsible for managing user's subscriptio
ns and filters. | 8 * @fileOverview FilterStorage class responsible for managing user's subscriptio
ns and filters. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 { | 369 { |
| 370 let [, part1, part2] = /^(.*)(\.\w+)$/.exec(sourceFile.leafName) ||
[null, sourceFile.leafName, ""]; | 370 let [, part1, part2] = /^(.*)(\.\w+)$/.exec(sourceFile.leafName) ||
[null, sourceFile.leafName, ""]; |
| 371 | 371 |
| 372 sourceFile = sourceFile.clone(); | 372 sourceFile = sourceFile.clone(); |
| 373 sourceFile.leafName = part1 + "-backup" + (++backupIndex) + part2; | 373 sourceFile.leafName = part1 + "-backup" + (++backupIndex) + part2; |
| 374 | 374 |
| 375 IO.statFile(sourceFile, function(e, statData) | 375 IO.statFile(sourceFile, function(e, statData) |
| 376 { | 376 { |
| 377 if (!e && statData.exists) | 377 if (!e && statData.exists) |
| 378 readFile(sourceFile, backupIndex); | 378 readFile(sourceFile, backupIndex); |
| 379 else |
| 380 doneReading(parser); |
| 379 }); | 381 }); |
| 380 TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); | 382 TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); |
| 381 return; | 383 return; |
| 382 } | 384 } |
| 383 } | 385 } |
| 384 | 386 doneReading(parser); |
| 385 // Old special groups might have been converted, remove them if they are
empty | |
| 386 let specialMap = {"~il~": true, "~wl~": true, "~fl~": true, "~eh~": true
}; | |
| 387 let knownSubscriptions = {__proto__: null}; | |
| 388 for (let i = 0; i < parser.subscriptions.length; i++) | |
| 389 { | |
| 390 let subscription = parser.subscriptions[i]; | |
| 391 if (subscription instanceof SpecialSubscription && subscription.filter
s.length == 0 && subscription.url in specialMap) | |
| 392 parser.subscriptions.splice(i--, 1); | |
| 393 else | |
| 394 knownSubscriptions[subscription.url] = subscription; | |
| 395 } | |
| 396 | |
| 397 this.fileProperties = parser.fileProperties; | |
| 398 this.subscriptions = parser.subscriptions; | |
| 399 this.knownSubscriptions = knownSubscriptions; | |
| 400 Filter.knownFilters = parser.knownFilters; | |
| 401 Subscription.knownSubscriptions = parser.knownSubscriptions; | |
| 402 | |
| 403 if (parser.userFilters) | |
| 404 { | |
| 405 for (let i = 0; i < parser.userFilters.length; i++) | |
| 406 { | |
| 407 let filter = Filter.fromText(parser.userFilters[i]); | |
| 408 this.addFilter(filter, null, undefined, true); | |
| 409 } | |
| 410 } | |
| 411 TimeLine.log("Initializing data done, triggering observers") | |
| 412 | |
| 413 this._loading = false; | |
| 414 FilterNotifier.triggerListeners("load"); | |
| 415 | |
| 416 if (sourceFile != this.sourceFile) | |
| 417 this.saveToDisk(); | |
| 418 | |
| 419 TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); | |
| 420 }.bind(this), "FilterStorageRead"); | 387 }.bind(this), "FilterStorageRead"); |
| 421 | 388 |
| 422 TimeLine.leave("FilterStorage.loadFromDisk() <- readFile()", "FilterStorag
eRead"); | 389 TimeLine.leave("FilterStorage.loadFromDisk() <- readFile()", "FilterStorag
eRead"); |
| 423 }.bind(this); | 390 }.bind(this); |
| 424 | 391 |
| 392 var doneReading = function(parser) |
| 393 { |
| 394 // Old special groups might have been converted, remove them if they are e
mpty |
| 395 let specialMap = {"~il~": true, "~wl~": true, "~fl~": true, "~eh~": true}; |
| 396 let knownSubscriptions = {__proto__: null}; |
| 397 for (let i = 0; i < parser.subscriptions.length; i++) |
| 398 { |
| 399 let subscription = parser.subscriptions[i]; |
| 400 if (subscription instanceof SpecialSubscription && subscription.filters.
length == 0 && subscription.url in specialMap) |
| 401 parser.subscriptions.splice(i--, 1); |
| 402 else |
| 403 knownSubscriptions[subscription.url] = subscription; |
| 404 } |
| 405 |
| 406 this.fileProperties = parser.fileProperties; |
| 407 this.subscriptions = parser.subscriptions; |
| 408 this.knownSubscriptions = knownSubscriptions; |
| 409 Filter.knownFilters = parser.knownFilters; |
| 410 Subscription.knownSubscriptions = parser.knownSubscriptions; |
| 411 |
| 412 if (parser.userFilters) |
| 413 { |
| 414 for (let i = 0; i < parser.userFilters.length; i++) |
| 415 { |
| 416 let filter = Filter.fromText(parser.userFilters[i]); |
| 417 this.addFilter(filter, null, undefined, true); |
| 418 } |
| 419 } |
| 420 TimeLine.log("Initializing data done, triggering observers") |
| 421 |
| 422 this._loading = false; |
| 423 FilterNotifier.triggerListeners("load"); |
| 424 |
| 425 if (sourceFile != this.sourceFile) |
| 426 this.saveToDisk(); |
| 427 |
| 428 TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); |
| 429 }.bind(this); |
| 430 |
| 425 let startRead = function(file) | 431 let startRead = function(file) |
| 426 { | 432 { |
| 427 this._loading = true; | 433 this._loading = true; |
| 428 readFile(file, 0); | 434 readFile(file, 0); |
| 429 }.bind(this); | 435 }.bind(this); |
| 430 | 436 |
| 431 let explicitFile; | 437 let explicitFile; |
| 432 if (sourceFile) | 438 if (sourceFile) |
| 433 { | 439 { |
| 434 explicitFile = true; | 440 explicitFile = true; |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 else if (this.wantObj === false && val) | 836 else if (this.wantObj === false && val) |
| 831 this.curObj.push(val.replace(/\\\[/g, "[")); | 837 this.curObj.push(val.replace(/\\\[/g, "[")); |
| 832 } | 838 } |
| 833 finally | 839 finally |
| 834 { | 840 { |
| 835 Filter.knownFilters = origKnownFilters; | 841 Filter.knownFilters = origKnownFilters; |
| 836 Subscription.knownSubscriptions = origKnownSubscriptions; | 842 Subscription.knownSubscriptions = origKnownSubscriptions; |
| 837 } | 843 } |
| 838 } | 844 } |
| 839 }; | 845 }; |
| OLD | NEW |