Skip to content

Commit f8d35ed

Browse files
committed
[workflow] Update uBOLite MV3 package files for 2026.426.1536
Files changed: M chromium/js/background.js M chromium/js/backup-restore.js M chromium/js/dnr-parser.js M chromium/js/filter-manager-ui.js M chromium/js/filter-manager.js M chromium/js/popup.js M chromium/js/rw-dnr-editor.js M chromium/js/scripting-manager.js M chromium/js/ubo-parser.js M chromium/log.txt M chromium/manifest.json M chromium/rulesets/generic-details.json M chromium/rulesets/main/adguard-mobile.json M chromium/rulesets/main/annoyances-cookies.json M chromium/rulesets/main/annoyances-others.json M chromium/rulesets/main/annoyances-widgets.json M chromium/rulesets/main/chn-0.json M chromium/rulesets/main/dpollock-0.json M chromium/rulesets/main/easylist.json M chromium/rulesets/main/easyprivacy.json M chromium/rulesets/main/ind-0.json M chromium/rulesets/main/pgl.json M chromium/rulesets/main/pol-0.json M chromium/rulesets/main/rou-1.json M chromium/rulesets/main/rus-0.json M chromium/rulesets/main/swe-1.json M chromium/rulesets/main/tur-0.json M chromium/rulesets/main/ublock-filters.json M chromium/rulesets/main/ukr-0.json M chromium/rulesets/main/urlhaus-full.json M chromium/rulesets/main/vie-1.json M chromium/rulesets/regex/chn-0.json M chromium/rulesets/regex/ublock-filters.json M chromium/rulesets/ruleset-details.json M chromium/rulesets/scripting/generic/adguard-mobile.js M chromium/rulesets/scripting/generic/annoyances-cookies.js M chromium/rulesets/scripting/generic/chn-0.js M chromium/rulesets/scripting/generic/spa-1.js M chromium/rulesets/scripting/generic/ublock-filters.js M chromium/rulesets/scripting/generichigh/chn-0.css M chromium/rulesets/scripting/generichigh/idn-0.css M chromium/rulesets/scripting/generichigh/rus-0.css M chromium/rulesets/scripting/generichigh/ublock-filters.css M chromium/rulesets/scripting/popup/rus-0.js M chromium/rulesets/scripting/popup/ublock-filters.js M chromium/rulesets/scripting/procedural/adguard-mobile.json M chromium/rulesets/scripting/procedural/annoyances-cookies.json M chromium/rulesets/scripting/procedural/annoyances-others.json M chromium/rulesets/scripting/procedural/annoyances-overlays.json M chromium/rulesets/scripting/procedural/annoyances-social.json M chromium/rulesets/scripting/procedural/deu-0.json M chromium/rulesets/scripting/procedural/easylist.json M chromium/rulesets/scripting/procedural/ind-0.json M chromium/rulesets/scripting/procedural/kor-1.json M chromium/rulesets/scripting/procedural/rus-0.json M chromium/rulesets/scripting/procedural/swe-1.json M chromium/rulesets/scripting/procedural/tur-0.json M chromium/rulesets/scripting/procedural/ublock-filters.json M chromium/rulesets/scripting/scriptlet/isolated/annoyances-cookies.js M chromium/rulesets/scripting/scriptlet/isolated/annoyances-others.js M chromium/rulesets/scripting/scriptlet/isolated/annoyances-overlays.js M chromium/rulesets/scripting/scriptlet/isolated/rou-1.js M chromium/rulesets/scripting/scriptlet/isolated/rus-0.js M chromium/rulesets/scripting/scriptlet/isolated/spa-1.js M chromium/rulesets/scripting/scriptlet/isolated/ublock-filters.js A chromium/rulesets/scripting/scriptlet/isolated/vie-1.js M chromium/rulesets/scripting/scriptlet/main/easyprivacy.js M chromium/rulesets/scripting/scriptlet/main/jpn-1.js M chromium/rulesets/scripting/scriptlet/main/rus-0.js M chromium/rulesets/scripting/scriptlet/main/ublock-filters.js M chromium/rulesets/scripting/scriptlet/main/vie-1.js M chromium/rulesets/scripting/specific/adguard-mobile.json M chromium/rulesets/scripting/specific/annoyances-ai.json M chromium/rulesets/scripting/specific/annoyances-cookies.json M chromium/rulesets/scripting/specific/annoyances-others.json M chromium/rulesets/scripting/specific/annoyances-overlays.json M chromium/rulesets/scripting/specific/annoyances-social.json M chromium/rulesets/scripting/specific/chn-0.json M chromium/rulesets/scripting/specific/deu-0.json M chromium/rulesets/scripting/specific/easylist.json M chromium/rulesets/scripting/specific/idn-0.json M chromium/rulesets/scripting/specific/ind-0.json M chromium/rulesets/scripting/specific/jpn-1.json M chromium/rulesets/scripting/specific/nld-0.json M chromium/rulesets/scripting/specific/rou-1.json M chromium/rulesets/scripting/specific/rus-0.json M chromium/rulesets/scripting/specific/spa-1.json M chromium/rulesets/scripting/specific/swe-1.json M chromium/rulesets/scripting/specific/tur-0.json M chromium/rulesets/scripting/specific/ublock-filters.json M chromium/rulesets/scripting/specific/vie-1.json M chromium/rulesets/scriptlet-details.json M chromium/rulesets/strictblock/adguard-mobile.json M chromium/rulesets/strictblock/chn-0.json M chromium/rulesets/strictblock/dpollock-0.json M chromium/rulesets/strictblock/easylist.json M chromium/rulesets/strictblock/easyprivacy.json M chromium/rulesets/strictblock/pgl.json M chromium/rulesets/strictblock/pol-0.json M chromium/rulesets/strictblock/rou-1.json M chromium/rulesets/strictblock/ublock-filters.json M chromium/rulesets/strictblock/urlhaus-full.json M chromium/rulesets/urlskip/ublock-filters.json
1 parent 0f5b63d commit f8d35ed

103 files changed

Lines changed: 3101 additions & 647 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

chromium/js/background.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,24 @@ function onMessage(request, sender, callback) {
577577
})
578578
return true;
579579

580+
case 'addManyCustomFilters': {
581+
const promises = [];
582+
for ( const [ hostname, selectors ] of request.entries ) {
583+
if ( typeof hostname !== 'string' ) { continue; }
584+
if ( hostname === '' ) { continue; }
585+
if ( Array.isArray(selectors) === false ) { continue; }
586+
if ( selectors.length === 0 ) { continue; }
587+
promises.push(addCustomFilters(hostname, selectors));
588+
}
589+
Promise.all(promises).then(results => {
590+
if ( results.some(a => a) === false ) { return; }
591+
return registerInjectables();
592+
}).then(( ) => {
593+
callback();
594+
});
595+
return true;
596+
}
597+
580598
case 'removeCustomFilters':
581599
removeCustomFilters(request.hostname, request.selectors).then(modified => {
582600
if ( modified !== true ) { return; }

chromium/js/backup-restore.js

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,8 @@ export async function backupToObject(currentConfig) {
5959
}
6060
out.filteringModes = await sendMessage({ what: 'getFilteringModeDetails' });
6161
const customFilters = await sendMessage({ what: 'getAllCustomFilters' });
62-
const filters = [];
63-
for ( const [ hostname, selectors ] of customFilters ) {
64-
for ( const selector of selectors ) {
65-
filters.push(`${hostname}##${selector}`);
66-
}
67-
}
68-
if ( filters.length !== 0 ) {
69-
out.cosmeticFilters = filters;
62+
if ( customFilters.length !== 0 ) {
63+
out.customFilters = customFilters;
7064
}
7165
const dnrRules = await localRead('userDnrRules');
7266
if ( typeof dnrRules === 'string' && dnrRules.length !== 0 ) {
@@ -120,27 +114,34 @@ export async function restoreFromObject(targetConfig) {
120114
});
121115

122116
await sendMessage({ what: 'removeAllCustomFilters', hostname: '*' });
123-
const hostnameMap = new Map();
124-
for ( const line of targetConfig.cosmeticFilters ?? [] ) {
125-
const i = line.indexOf('##');
126-
if ( i === -1 ) { continue; }
127-
const hostname = line.slice(0, i);
128-
if ( hostname === '' ) { continue; }
129-
const selector = line.slice(i+2);
130-
if ( selector === '' ) { continue; }
131-
const selectors = hostnameMap.get(hostname) || [];
132-
if ( selectors.length === 0 ) {
133-
hostnameMap.set(hostname, selectors)
117+
const cosmeticFilters = targetConfig.cosmeticFilters;
118+
if ( Array.isArray(cosmeticFilters) ) {
119+
const hostnameMap = new Map();
120+
for ( const line of cosmeticFilters ) {
121+
const i = line.indexOf('##');
122+
if ( i === -1 ) { continue; }
123+
const hostname = line.slice(0, i);
124+
if ( hostname === '' ) { continue; }
125+
const selector = line.slice(i+2);
126+
if ( selector === '' ) { continue; }
127+
const selectors = hostnameMap.get(hostname) || [];
128+
if ( selectors.length === 0 ) {
129+
hostnameMap.set(hostname, selectors)
130+
}
131+
selectors.push(selector);
132+
}
133+
if ( hostnameMap.size !== 0 ) {
134+
await sendMessage({ what: 'addManyCustomFilters',
135+
entries: Array.from(hostnameMap),
136+
});
134137
}
135-
selectors.push(selector);
136138
}
137-
const promises = [];
138-
for ( const [ hostname, selectors ] of hostnameMap ) {
139-
promises.push(
140-
sendMessage({ what: 'addCustomFilters', hostname, selectors })
141-
);
139+
const customFilters = targetConfig.customFilters;
140+
if ( Array.isArray(customFilters) ) {
141+
await sendMessage({ what: 'addManyCustomFilters',
142+
entries: customFilters,
143+
});
142144
}
143-
await Promise.all(promises);
144145

145146
const dnrRules = targetConfig.dnrRules ?? [];
146147
if ( dnrRules.length !== 0 ) {

chromium/js/dnr-parser.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,8 @@ const perScopeParsers = {
280280
case 'excludedInitiatorDomains':
281281
case 'requestDomains':
282282
case 'excludedRequestDomains':
283+
case 'topDomains':
284+
case 'excludedTopDomains':
283285
case 'resourceTypes':
284286
case 'excludedResourceTypes':
285287
case 'requestMethods':
@@ -328,6 +330,16 @@ const perScopeParsers = {
328330
rule.condition.excludedRequestDomains.push(node.val);
329331
return true;
330332
},
333+
'condition.topDomains': function(scope, rule, node) {
334+
if ( node.list !== true ) { return false; }
335+
rule.condition.topDomains.push(node.val);
336+
return true;
337+
},
338+
'condition.excludedTopDomains': function(scope, rule, node) {
339+
if ( node.list !== true ) { return false; }
340+
rule.condition.excludedTopDomains.push(node.val);
341+
return true;
342+
},
331343
'condition.resourceTypes': function(scope, rule, node) {
332344
if ( node.list !== true ) { return false; }
333345
if ( validResourceTypeValues.includes(node.val) === false ) { return false; }

chromium/js/filter-manager-ui.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,8 @@ function importFromFile() {
532532
function exportToFile() {
533533
const lines = [];
534534
for ( const hostnameNode of qsa$('.hostnames li.hostname') ) {
535-
const hostname = punycode.toUnicode(hostnameFromNode(hostnameNode));
535+
const hostname = punycode.toUnicode(hostnameFromNode(hostnameNode) || '');
536+
if ( hostname === '' ) { continue; }
536537
const selectors = selectorsFromNode(hostnameNode);
537538
for ( const selector of selectors ) {
538539
lines.push(`${hostname}##${toPrettySelector(selector)}`);

chromium/js/filter-manager.js

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,33 +47,27 @@ const isCSS = a => isProcedural(a) === false && isScriptlet(a) === false;
4747

4848
/******************************************************************************/
4949

50-
async function flushWrites() {
51-
while ( pendingWrites.length !== 0 ) {
52-
const promises = pendingWrites;
53-
pendingWrites.length = 0;
54-
await Promise.all(promises);
55-
}
56-
}
57-
5850
async function keysFromStorage() {
59-
await flushWrites();
60-
return localKeys();
51+
pendingStorageOp = pendingStorageOp.then(( ) => localKeys());
52+
return pendingStorageOp;
6153
}
6254

6355
async function readFromStorage(key) {
64-
await flushWrites();
65-
return localRead(key);
56+
pendingStorageOp = pendingStorageOp.then(( ) => localRead(key));
57+
return pendingStorageOp;
6658
}
6759

6860
async function writeToStorage(key, value) {
69-
pendingWrites.push(localWrite(key, value));
61+
pendingStorageOp = pendingStorageOp.then(( ) => localWrite(key, value));
62+
return pendingStorageOp;
7063
}
7164

7265
async function removeFromStorage(key) {
73-
pendingWrites.push(localRemove(key));
66+
pendingStorageOp = pendingStorageOp.then(( ) => localRemove(key));
67+
return pendingStorageOp;
7468
}
7569

76-
const pendingWrites = [];
70+
let pendingStorageOp = Promise.resolve();
7771

7872
/******************************************************************************/
7973

@@ -117,7 +111,7 @@ async function getAllCustomFilterKeys() {
117111
export async function getAllCustomFilters() {
118112
const collect = async key => {
119113
const selectors = await readFromStorage(key);
120-
return [ key.slice(5), selectors ];
114+
return [ key.slice(5), selectors ?? [] ];
121115
};
122116
const keys = await getAllCustomFilterKeys();
123117
const promises = keys.map(k => collect(k));
@@ -168,7 +162,10 @@ export async function injectCustomFilters(tabId, frameId, hostname) {
168162
if ( proceduralSelectors.length !== 0 ) {
169163
promises.push(
170164
browser.scripting.executeScript({
171-
files: [ '/js/scripting/css-procedural-api.js' ],
165+
files: [
166+
'/js/scripting/css-api.js',
167+
'/js/scripting/css-procedural-api.js',
168+
],
172169
target: { tabId, frameIds: [ frameId ] },
173170
injectImmediately: true,
174171
}).catch(reason => {

chromium/js/popup.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ dom.on('#gotoUnpicker', 'click', ( ) => {
284284
if ( browser.scripting === undefined ) { return; }
285285
browser.scripting.executeScript({
286286
files: [
287+
'/js/scripting/css-procedural-api.js',
287288
'/js/scripting/tool-overlay.js',
288289
'/js/scripting/unpicker.js',
289290
],

chromium/js/rw-dnr-editor.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ export class ReadWriteDNREditor extends DNREditor {
194194
{ token: 'excludedInitiatorDomains:', after: '\n - ' },
195195
{ token: 'requestDomains:', after: '\n - ' },
196196
{ token: 'excludedRequestDomains:', after: '\n - ' },
197+
{ token: 'topDomains:', after: '\n - ' },
198+
{ token: 'excludedTopDomains:', after: '\n - ' },
197199
{ token: 'resourceTypes:', after: '\n - ' },
198200
{ token: 'excludedResourceTypes:', after: '\n - ' },
199201
{ token: 'requestMethods:', after: '\n - ' },

chromium/js/scripting-manager.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -371,10 +371,13 @@ function registerScriptlet(context, scriptletDetails) {
371371

372372
export async function registerInjectables() {
373373
if ( browser.scripting === undefined ) { return false; }
374+
registerInjectables.pendingOp =
375+
registerInjectables.pendingOp.then(( ) => registerInjectables.register());
376+
return registerInjectables.pendingOp;
377+
}
378+
registerInjectables.pendingOp = Promise.resolve();
374379

375-
if ( registerInjectables.barrier ) { return true; }
376-
registerInjectables.barrier = true;
377-
380+
registerInjectables.register = async function register() {
378381
const [
379382
filteringModeDetails,
380383
rulesetsDetails,
@@ -423,10 +426,8 @@ export async function registerInjectables() {
423426

424427
await resetCSSCache();
425428

426-
registerInjectables.barrier = false;
427-
428429
return true;
429-
}
430+
};
430431

431432
/******************************************************************************/
432433

chromium/js/ubo-parser.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,8 @@ function minimizeRuleset(rules) {
162162
rules = mergeArrays(rules, 'condition.excludedRequestDomains');
163163
rules = mergeArrays(rules, 'condition.initiatorDomains');
164164
rules = mergeArrays(rules, 'condition.excludedInitiatorDomains');
165+
rules = mergeArrays(rules, 'condition.topDomains');
166+
rules = mergeArrays(rules, 'condition.excludedTopDomains');
165167
rules = mergeArrays(rules, 'condition.resourceTypes');
166168
rules = mergeArrays(rules, 'condition.excludedRequestMethods');
167169
rules = mergeArrays(rules, 'condition.requestMethods');

0 commit comments

Comments
 (0)