OLD | NEW |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
3 * Copyright (C) 2006-2014 Eyeo GmbH | 3 * Copyright (C) 2006-2014 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 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 /** | 359 /** |
360 * Loads all subscriptions from the disk | 360 * Loads all subscriptions from the disk |
361 * @param {nsIFile} [sourceFile] File to read from | 361 * @param {nsIFile} [sourceFile] File to read from |
362 */ | 362 */ |
363 loadFromDisk: function(sourceFile) | 363 loadFromDisk: function(sourceFile) |
364 { | 364 { |
365 if (this._loading) | 365 if (this._loading) |
366 return; | 366 return; |
367 | 367 |
368 TimeLine.enter("Entered FilterStorage.loadFromDisk()"); | 368 TimeLine.enter("Entered FilterStorage.loadFromDisk()"); |
| 369 this._loading = true; |
369 | 370 |
370 let readFile = function(sourceFile, backupIndex) | 371 let readFile = function(sourceFile, backupIndex) |
371 { | 372 { |
372 TimeLine.enter("FilterStorage.loadFromDisk() -> readFile()"); | 373 TimeLine.enter("FilterStorage.loadFromDisk() -> readFile()"); |
373 | 374 |
374 let parser = new INIParser(); | 375 let parser = new INIParser(); |
375 IO.readFromFile(sourceFile, true, parser, function(e) | 376 IO.readFromFile(sourceFile, true, parser, function(e) |
376 { | 377 { |
377 TimeLine.enter("FilterStorage.loadFromDisk() read callback"); | 378 TimeLine.enter("FilterStorage.loadFromDisk() read callback"); |
378 if (!e && parser.subscriptions.length == 0) | 379 if (!e && parser.subscriptions.length == 0) |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 | 445 |
445 this._loading = false; | 446 this._loading = false; |
446 FilterNotifier.triggerListeners("load"); | 447 FilterNotifier.triggerListeners("load"); |
447 | 448 |
448 if (sourceFile != this.sourceFile) | 449 if (sourceFile != this.sourceFile) |
449 this.saveToDisk(); | 450 this.saveToDisk(); |
450 | 451 |
451 TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); | 452 TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); |
452 }.bind(this); | 453 }.bind(this); |
453 | 454 |
454 let startRead = function(file) | |
455 { | |
456 this._loading = true; | |
457 readFile(file, 0); | |
458 }.bind(this); | |
459 | |
460 let explicitFile; | 455 let explicitFile; |
461 if (sourceFile) | 456 if (sourceFile) |
462 { | 457 { |
463 explicitFile = true; | 458 explicitFile = true; |
464 startRead(sourceFile); | 459 readFile(sourceFile, 0); |
465 } | 460 } |
466 else | 461 else |
467 { | 462 { |
468 explicitFile = false; | 463 explicitFile = false; |
469 sourceFile = FilterStorage.sourceFile; | 464 sourceFile = FilterStorage.sourceFile; |
470 | 465 |
471 let callback = function(e, statData) | 466 let callback = function(e, statData) |
472 { | 467 { |
473 if (e || !statData.exists) | 468 if (e || !statData.exists) |
474 { | 469 { |
475 this.firstRun = true; | 470 this.firstRun = true; |
476 this._loading = false; | 471 this._loading = false; |
477 FilterNotifier.triggerListeners("load"); | 472 FilterNotifier.triggerListeners("load"); |
478 | 473 |
479 TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); | 474 TimeLine.leave("FilterStorage.loadFromDisk() read callback done"); |
480 } | 475 } |
481 startRead(sourceFile); | 476 readFile(sourceFile, 0); |
482 } | 477 } |
483 | 478 |
484 if (sourceFile) | 479 if (sourceFile) |
485 IO.statFile(sourceFile, callback); | 480 IO.statFile(sourceFile, callback); |
486 else | 481 else |
487 callback(true); | 482 callback(true); |
488 } | 483 } |
489 | 484 |
490 TimeLine.leave("FilterStorage.loadFromDisk() done"); | 485 TimeLine.leave("FilterStorage.loadFromDisk() done"); |
491 }, | 486 }, |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
889 Subscription.knownSubscriptions = origKnownSubscriptions; | 884 Subscription.knownSubscriptions = origKnownSubscriptions; |
890 } | 885 } |
891 | 886 |
892 // Allow events to be processed every now and then. | 887 // Allow events to be processed every now and then. |
893 // Note: IO.readFromFile() will deal with the potential reentrance here. | 888 // Note: IO.readFromFile() will deal with the potential reentrance here. |
894 this.linesProcessed++; | 889 this.linesProcessed++; |
895 if (this.linesProcessed % 1000 == 0) | 890 if (this.linesProcessed % 1000 == 0) |
896 Utils.yield(); | 891 Utils.yield(); |
897 } | 892 } |
898 }; | 893 }; |
OLD | NEW |