This commit is contained in:
gorhill 2015-04-16 14:19:44 -04:00 committed by Chris
parent d5465d3159
commit 2ecc81e35b
2 changed files with 51 additions and 21 deletions

View File

@ -974,16 +974,19 @@ var getLocalData = function(callback) {
/******************************************************************************/
var backupUserData = function(callback) {
var onUserFiltersReady = function(details) {
var userData = {
timeStamp: Date.now(),
version: vAPI.app.version,
userSettings: µb.userSettings,
filterLists: µb.extractSelectedFilterLists(),
netWhitelist: µb.stringFromWhitelist(µb.netWhitelist),
dynamicFilteringString: µb.permanentFirewall.toString(),
userFilters: details.content
};
var userData = {
timeStamp: Date.now(),
version: vAPI.app.version,
userSettings: µb.userSettings,
filterLists: {},
netWhitelist: µb.stringFromWhitelist(µb.netWhitelist),
dynamicFilteringString: µb.permanentFirewall.toString(),
userFilters: ''
};
var onSelectedListsReady = function(filterLists) {
userData.filterLists = filterLists;
var now = new Date();
var filename = vAPI.i18n('aboutBackupFilename')
.replace('{{datetime}}', now.toLocaleString())
@ -1001,6 +1004,12 @@ var backupUserData = function(callback) {
getLocalData(callback);
};
var onUserFiltersReady = function(details) {
userData.userFilters = details.content;
µb.extractSelectedFilterLists(onSelectedListsReady);
};
µb.assets.get('assets/user/filters.txt', onUserFiltersReady);
};
@ -1050,7 +1059,7 @@ var restoreUserData = function(request) {
/******************************************************************************/
var resetUserData = function() {
vAPI.storage.clear(onAllRemoved);
vAPI.storage.clear();
// Keep global counts, people can become quite attached to numbers
µb.saveLocalSettings(true);

View File

@ -102,19 +102,40 @@
// This will remove all unused filter list entries from
// µBlock.remoteBlacklists`. This helps reduce the size of backup files.
µBlock.extractSelectedFilterLists = function() {
var r = JSON.parse(JSON.stringify(this.remoteBlacklists));
µBlock.extractSelectedFilterLists = function(callback) {
var µb = this;
for ( var path in r ) {
if ( r.hasOwnProperty(path) === false ) {
continue;
var onBuiltinListsLoaded = function(details) {
var builtin;
try {
builtin = JSON.parse(details.content);
} catch (e) {
builtin = {};
}
if ( r[path].off !== false ) {
delete r[path];
}
}
return r;
var result = JSON.parse(JSON.stringify(µb.remoteBlacklists));
var builtinPath;
var defaultState;
for ( var path in result ) {
if ( result.hasOwnProperty(path) === false ) {
continue;
}
builtinPath = path.replace(/^assets\/thirdparties\//, '');
defaultState = builtin.hasOwnProperty(builtinPath) === false ||
builtin[builtinPath].off === true;
if ( result[path].off === true && result[path].off === defaultState ) {
delete result[path];
}
}
callback(result);
};
// https://github.com/gorhill/uBlock/issues/63
// Get built-in block lists: this will help us determine whether a
// specific list must be included in the result.
this.assets.get('assets/ublock/filter-lists.json', onBuiltinListsLoaded);
};
/******************************************************************************/