1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-10-06 09:37:12 +02:00

code review: auto-select new built-in asset if it matches locale (https://github.com/uBlockOrigin/uAssets/issues/268#issuecomment-274146120)

This commit is contained in:
gorhill 2017-01-20 15:17:11 -05:00
parent 8f46662a24
commit 6e48c74e4e
3 changed files with 49 additions and 17 deletions

View File

@ -29,9 +29,9 @@
/******************************************************************************/ /******************************************************************************/
var listDetails = {}; var listDetails = {},
var filteringSettingsHash = ''; filteringSettingsHash = '',
var externalLists = ''; externalLists = '';
/******************************************************************************/ /******************************************************************************/
@ -41,6 +41,10 @@ var onMessage = function(msg) {
updateAssetStatus(msg); updateAssetStatus(msg);
break; break;
case 'staticFilteringDataChanged': case 'staticFilteringDataChanged':
filteringSettingsHash = [
msg.parseCosmeticFilters,
msg.ignoreGenericCosmeticFilters
].concat(msg.listKeys.sort()).join();
renderFilterLists(); renderFilterLists();
break; break;
default: default:

View File

@ -361,8 +361,14 @@ var updateAssetSourceRegistry = function(json) {
unregisterAssetSource(assetKey); unregisterAssetSource(assetKey);
} }
} }
// Add/update existing entries // Add/update existing entries. Notify of new asset sources.
for ( assetKey in newDict ) { for ( assetKey in newDict ) {
if ( oldDict[assetKey] === undefined ) {
fireNotification(
'builtin-asset-source-added',
{ assetKey: assetKey, entry: newDict[assetKey] }
);
}
registerAssetSource(assetKey, newDict[assetKey]); registerAssetSource(assetKey, newDict[assetKey]);
} }
saveAssetSourceRegistry(); saveAssetSourceRegistry();

View File

@ -193,9 +193,10 @@
µBlock.saveSelectedFilterLists = function(listKeys, append) { µBlock.saveSelectedFilterLists = function(listKeys, append) {
var µb = this; var µb = this;
var save = function(keys) { var save = function(keys) {
var uniqueKeys = µb.setToArray(new Set(keys));
var bin = { var bin = {
selectedFilterLists: keys, selectedFilterLists: uniqueKeys,
remoteBlacklists: µb.oldDataFromNewListKeys(keys) remoteBlacklists: µb.oldDataFromNewListKeys(uniqueKeys)
}; };
vAPI.storage.set(bin); vAPI.storage.set(bin);
}; };
@ -516,8 +517,9 @@
//quickProfiler.start('µBlock.loadFilterLists()'); //quickProfiler.start('µBlock.loadFilterLists()');
var µb = this; var µb = this,
var filterlistsCount = 0; filterlistsCount = 0,
loadedListKeys = [];
if ( typeof callback !== 'function' ) { if ( typeof callback !== 'function' ) {
callback = this.noopFunc; callback = this.noopFunc;
@ -531,7 +533,12 @@
//quickProfiler.stop(0); //quickProfiler.stop(0);
vAPI.messaging.broadcast({ what: 'staticFilteringDataChanged' }); vAPI.messaging.broadcast({
what: 'staticFilteringDataChanged',
parseCosmeticFilters: µb.userSettings.parseAllABPHideFilters,
ignoreGenericCosmeticFilters: µb.userSettings.ignoreGenericCosmeticFilters,
listKeys: loadedListKeys
});
callback(); callback();
@ -539,17 +546,18 @@
µb.loadingFilterLists = false; µb.loadingFilterLists = false;
}; };
var applyCompiledFilters = function(path, compiled) { var applyCompiledFilters = function(assetKey, compiled) {
var snfe = µb.staticNetFilteringEngine; var snfe = µb.staticNetFilteringEngine,
var cfe = µb.cosmeticFilteringEngine; cfe = µb.cosmeticFilteringEngine,
var acceptedCount = snfe.acceptedCount + cfe.acceptedCount; acceptedCount = snfe.acceptedCount + cfe.acceptedCount,
var discardedCount = snfe.discardedCount + cfe.discardedCount; discardedCount = snfe.discardedCount + cfe.discardedCount;
µb.applyCompiledFilters(compiled, path === µb.userFiltersPath); µb.applyCompiledFilters(compiled, assetKey === µb.userFiltersPath);
if ( µb.availableFilterLists.hasOwnProperty(path) ) { if ( µb.availableFilterLists.hasOwnProperty(assetKey) ) {
var entry = µb.availableFilterLists[path]; var entry = µb.availableFilterLists[assetKey];
entry.entryCount = snfe.acceptedCount + cfe.acceptedCount - acceptedCount; entry.entryCount = snfe.acceptedCount + cfe.acceptedCount - acceptedCount;
entry.entryUsedCount = entry.entryCount - (snfe.discardedCount + cfe.discardedCount - discardedCount); entry.entryUsedCount = entry.entryCount - (snfe.discardedCount + cfe.discardedCount - discardedCount);
} }
loadedListKeys.push(assetKey);
}; };
var onCompiledListLoaded = function(details) { var onCompiledListLoaded = function(details) {
@ -1053,4 +1061,18 @@
} }
return; return;
} }
// New asset source became available, if it's a filter list, should we
// auto-select it?
if ( topic === 'builtin-asset-source-added' ) {
if ( details.entry.content === 'filters' ) {
if (
details.entry.off !== true ||
self.navigator.language.startsWith(details.entry.lang)
) {
this.saveSelectedFilterLists([ details.assetKey ], true);
}
}
return;
}
}; };