 Issue 29526555:
  Issue 5554 - [webextensions] Adjust data to account for UI limitations  (Closed) 
  Base URL: https://hg.adblockplus.org/adblockpluschrome
    
  
    Issue 29526555:
  Issue 5554 - [webextensions] Adjust data to account for UI limitations  (Closed) 
  Base URL: https://hg.adblockplus.org/adblockpluschrome| Index: lib/firefoxDataCleanup.js | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/lib/firefoxDataCleanup.js | 
| @@ -0,0 +1,78 @@ | 
| +/* | 
| + * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| + * Copyright (C) 2006-present eyeo GmbH | 
| + * | 
| + * Adblock Plus is free software: you can redistribute it and/or modify | 
| + * it under the terms of the GNU General Public License version 3 as | 
| + * published by the Free Software Foundation. | 
| + * | 
| + * Adblock Plus is distributed in the hope that it will be useful, | 
| + * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| + * GNU General Public License for more details. | 
| + * | 
| + * You should have received a copy of the GNU General Public License | 
| + * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 
| + */ | 
| + | 
| +"use strict"; | 
| + | 
| +let {Filter, ActiveFilter} = require("filterClasses"); | 
| +let {FilterNotifier} = require("filterNotifier"); | 
| +let {FilterStorage} = require("filterStorage"); | 
| +let {IO} = require("io"); | 
| +let {Prefs} = require("prefs"); | 
| +let {SpecialSubscription} = require("subscriptionClasses"); | 
| + | 
| +Promise.all([FilterNotifier.once("load"), Prefs.untilLoaded]).then(() => | 
| +{ | 
| + if (Prefs.data_cleanup_done) | 
| + return; | 
| + | 
| + let haveHitCounts = []; | 
| + | 
| + for (let key in Filter.knownFilters) | 
| + { | 
| + let filter = Filter.knownFilters[key]; | 
| + if (!(filter instanceof ActiveFilter)) | 
| + continue; | 
| + | 
| + if (filter.disabled) | 
| + { | 
| + // Enable or replace disabled filters | 
| + filter.disabled = false; | 
| + | 
| + for (let subscription of filter.subscriptions) | 
| + { | 
| + if (subscription instanceof SpecialSubscription) | 
| + { | 
| + while (true) | 
| + { | 
| + let position = subscription.filters.indexOf(filter); | 
| + if (position < 0) | 
| + break; | 
| + | 
| + let newFilter = Filter.fromText("! " + filter.text); | 
| + FilterStorage.removeFilter(filter, subscription, position); | 
| + FilterStorage.addFilter(newFilter, subscription, position); | 
| + } | 
| + } | 
| + } | 
| + } | 
| + | 
| + if (filter.hitCount || filter.lastHit) | 
| + haveHitCounts.push(filter); | 
| + } | 
| + | 
| + // Reset hit statistics on any filters having them | 
| + FilterStorage.resetHitCounts(haveHitCounts); | 
| + | 
| + // Remove any existing automatic backups | 
| + let backups = []; | 
| + for (let i = 1; i < 100; i++) | 
| + backups.push(`file:patterns-backup${i}.ini`); | 
| 
Wladimir Palant
2017/08/24 09:08:09
This is using implementation details of io.js whic
 | 
| + return browser.storage.local.remove(backups).then(() => | 
| 
Sebastian Noack
2017/08/24 09:42:05
Returning this promise here seems weird. Did you m
 
Wladimir Palant
2017/08/24 09:57:43
Right, this is merely a left-over from a previous
 | 
| + { | 
| + Prefs.data_cleanup_done = true; | 
| + }); | 
| +}); |