mirror of
https://github.com/gorhill/uBlock.git
synced 2026-03-11 09:04:36 +00:00
draft
This commit is contained in:
parent
db2225fee7
commit
756eee032e
3 changed files with 50 additions and 15 deletions
|
|
@ -50,6 +50,7 @@ import {
|
||||||
excludeFromStrictBlock,
|
excludeFromStrictBlock,
|
||||||
getEnabledRulesetsDetails,
|
getEnabledRulesetsDetails,
|
||||||
getRulesetDetails,
|
getRulesetDetails,
|
||||||
|
patchDefaultRulesets,
|
||||||
setStrictBlockMode,
|
setStrictBlockMode,
|
||||||
updateDynamicRules,
|
updateDynamicRules,
|
||||||
} from './ruleset-manager.js';
|
} from './ruleset-manager.js';
|
||||||
|
|
@ -377,22 +378,24 @@ function onMessage(request, sender, callback) {
|
||||||
async function start() {
|
async function start() {
|
||||||
await loadRulesetConfig();
|
await loadRulesetConfig();
|
||||||
|
|
||||||
// Potentially enable new default rulesets
|
const currentVersion = getCurrentVersion();
|
||||||
|
const isNewVersion = currentVersion !== rulesetConfig.version;
|
||||||
|
|
||||||
|
// The default rulesets may have changed, find out new ruleset to enable,
|
||||||
|
// obsolete ruleset to remove.
|
||||||
|
if ( isNewVersion ) {
|
||||||
|
ubolLog(`Version change: ${rulesetConfig.version} => ${currentVersion}`);
|
||||||
|
rulesetConfig.version = currentVersion;
|
||||||
|
await patchDefaultRulesets();
|
||||||
|
saveRulesetConfig();
|
||||||
|
}
|
||||||
|
|
||||||
const rulesetsUpdated = process.wakeupRun === false &&
|
const rulesetsUpdated = process.wakeupRun === false &&
|
||||||
await enableRulesets(rulesetConfig.enabledRulesets);
|
await enableRulesets(rulesetConfig.enabledRulesets);
|
||||||
|
|
||||||
// We need to update the regex rules only when ruleset version changes.
|
// We need to update the regex rules only when ruleset version changes.
|
||||||
if ( process.wakeupRun === false ) {
|
if ( isNewVersion && rulesetsUpdated === false ) {
|
||||||
const currentVersion = getCurrentVersion();
|
updateDynamicRules();
|
||||||
if ( currentVersion !== rulesetConfig.version ) {
|
|
||||||
ubolLog(`Version change: ${rulesetConfig.version} => ${currentVersion}`);
|
|
||||||
rulesetConfig.version = currentVersion;
|
|
||||||
saveRulesetConfig();
|
|
||||||
if ( rulesetsUpdated === false ) {
|
|
||||||
updateDynamicRules();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Permissions may have been removed while the extension was disabled
|
// Permissions may have been removed while the extension was disabled
|
||||||
|
|
|
||||||
|
|
@ -24,13 +24,11 @@ import {
|
||||||
sessionRead, sessionWrite,
|
sessionRead, sessionWrite,
|
||||||
} from './ext.js';
|
} from './ext.js';
|
||||||
|
|
||||||
import { defaultRulesetsFromLanguage } from './ruleset-manager.js';
|
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
export const rulesetConfig = {
|
export const rulesetConfig = {
|
||||||
version: '',
|
version: '',
|
||||||
enabledRulesets: [ 'default' ],
|
enabledRulesets: [],
|
||||||
autoReload: true,
|
autoReload: true,
|
||||||
showBlockedCount: true,
|
showBlockedCount: true,
|
||||||
strictBlockMode: true,
|
strictBlockMode: true,
|
||||||
|
|
@ -67,7 +65,6 @@ export async function loadRulesetConfig() {
|
||||||
sessionWrite('rulesetConfig', rulesetConfig);
|
sessionWrite('rulesetConfig', rulesetConfig);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
rulesetConfig.enabledRulesets = await defaultRulesetsFromLanguage();
|
|
||||||
sessionWrite('rulesetConfig', rulesetConfig);
|
sessionWrite('rulesetConfig', rulesetConfig);
|
||||||
localWrite('rulesetConfig', rulesetConfig);
|
localWrite('rulesetConfig', rulesetConfig);
|
||||||
process.firstRun = true;
|
process.firstRun = true;
|
||||||
|
|
|
||||||
|
|
@ -593,6 +593,40 @@ async function defaultRulesetsFromLanguage() {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
async function patchDefaultRulesets() {
|
||||||
|
const [
|
||||||
|
oldDefaultIds = [],
|
||||||
|
newDefaultIds,
|
||||||
|
newIds,
|
||||||
|
] = await Promise.all([
|
||||||
|
localRead('defaultRulesetIds'),
|
||||||
|
defaultRulesetsFromLanguage(),
|
||||||
|
getRulesetDetails(),
|
||||||
|
]);
|
||||||
|
const toAdd = [];
|
||||||
|
const toRemove = [];
|
||||||
|
for ( const id of newDefaultIds ) {
|
||||||
|
if ( oldDefaultIds.includes(id) ) { continue; }
|
||||||
|
toAdd.push(id);
|
||||||
|
}
|
||||||
|
for ( const id of oldDefaultIds ) {
|
||||||
|
if ( newDefaultIds.includes(id) ) { continue; }
|
||||||
|
toRemove.push(id);
|
||||||
|
}
|
||||||
|
for ( const id of rulesetConfig.enabledRulesets ) {
|
||||||
|
if ( newIds.has(id) ) { continue; }
|
||||||
|
toRemove.push(id);
|
||||||
|
}
|
||||||
|
localWrite('defaultRulesetIds', newDefaultIds);
|
||||||
|
if ( toAdd.length === 0 && toRemove.length === 0 ) { return; }
|
||||||
|
const enabledRulesets = new Set(rulesetConfig.enabledRulesets);
|
||||||
|
toAdd.forEach(id => enabledRulesets.add(id));
|
||||||
|
toRemove.forEach(id => enabledRulesets.delete(id));
|
||||||
|
rulesetConfig.enabledRulesets = Array.from(enabledRulesets);
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
async function enableRulesets(ids) {
|
async function enableRulesets(ids) {
|
||||||
const afterIds = new Set(ids);
|
const afterIds = new Set(ids);
|
||||||
const [ beforeIds, adminIds, rulesetDetails ] = await Promise.all([
|
const [ beforeIds, adminIds, rulesetDetails ] = await Promise.all([
|
||||||
|
|
@ -681,6 +715,7 @@ export {
|
||||||
filteringModesToDNR,
|
filteringModesToDNR,
|
||||||
getRulesetDetails,
|
getRulesetDetails,
|
||||||
getEnabledRulesetsDetails,
|
getEnabledRulesetsDetails,
|
||||||
|
patchDefaultRulesets,
|
||||||
setStrictBlockMode,
|
setStrictBlockMode,
|
||||||
updateDynamicRules,
|
updateDynamicRules,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue