@@ -33,6 +33,11 @@ import {
33
33
sessionRead , sessionWrite ,
34
34
} from './ext.js' ;
35
35
36
+ import {
37
+ rulesetConfig ,
38
+ saveRulesetConfig ,
39
+ } from './config.js' ;
40
+
36
41
import { adminReadEx } from './admin.js' ;
37
42
import { filteringModesToDNR } from './ruleset-manager.js' ;
38
43
@@ -219,14 +224,31 @@ export async function readFilteringModeDetails(bypassCache = false) {
219
224
return readFilteringModeDetails . cache ;
220
225
}
221
226
}
222
- let [ userModes , adminNoFiltering ] = await Promise . all ( [
227
+ let [
228
+ userModes ,
229
+ adminDefaultFiltering ,
230
+ adminNoFiltering ,
231
+ ] = await Promise . all ( [
223
232
localRead ( 'filteringModeDetails' ) ,
233
+ adminReadEx ( 'defaultFiltering' ) ,
224
234
adminReadEx ( 'noFiltering' ) ,
225
235
] ) ;
226
236
if ( userModes === undefined ) {
227
237
userModes = { optimal : [ 'all-urls' ] } ;
228
238
}
229
239
userModes = unserializeModeDetails ( userModes ) ;
240
+ if ( adminDefaultFiltering !== undefined ) {
241
+ const modefromName = {
242
+ none : MODE_NONE ,
243
+ basic : MODE_BASIC ,
244
+ optimal : MODE_OPTIMAL ,
245
+ complete : MODE_COMPLETE ,
246
+ } ;
247
+ const adminDefaultFilteringMode = modefromName [ adminDefaultFiltering ] ;
248
+ if ( adminDefaultFilteringMode !== undefined ) {
249
+ applyFilteringMode ( userModes , 'all-urls' , adminDefaultFilteringMode ) ;
250
+ }
251
+ }
230
252
if ( Array . isArray ( adminNoFiltering ) ) {
231
253
if ( adminNoFiltering . includes ( '-*' ) ) {
232
254
userModes . none . clear ( ) ;
@@ -341,19 +363,29 @@ export async function setTrustedSites(hostnames) {
341
363
/******************************************************************************/
342
364
343
365
export async function syncWithBrowserPermissions ( ) {
344
- const [ permissions , beforeMode ] = await Promise . all ( [
366
+ const [
367
+ permissions ,
368
+ beforeMode ,
369
+ ] = await Promise . all ( [
345
370
browser . permissions . getAll ( ) ,
346
371
getDefaultFilteringMode ( ) ,
347
372
] ) ;
348
373
const allowedHostnames = new Set ( hostnamesFromMatches ( permissions . origins || [ ] ) ) ;
374
+ const hasBroadHostPermissions = allowedHostnames . has ( 'all-urls' ) ;
375
+ const broadHostPermissionsToggled =
376
+ hasBroadHostPermissions !== rulesetConfig . hasBroadHostPermissions ;
349
377
let modified = false ;
350
- if ( beforeMode > MODE_BASIC && allowedHostnames . has ( 'all-urls' ) === false ) {
378
+ if ( beforeMode > MODE_BASIC && hasBroadHostPermissions === false ) {
351
379
await setDefaultFilteringMode ( MODE_BASIC ) ;
352
380
modified = true ;
353
- } else if ( beforeMode === MODE_BASIC && allowedHostnames . has ( 'all-urls' ) ) {
381
+ } else if ( beforeMode === MODE_BASIC && hasBroadHostPermissions && broadHostPermissionsToggled ) {
354
382
await setDefaultFilteringMode ( MODE_OPTIMAL ) ;
355
383
modified = true ;
356
384
}
385
+ if ( broadHostPermissionsToggled ) {
386
+ rulesetConfig . hasBroadHostPermissions = hasBroadHostPermissions ;
387
+ saveRulesetConfig ( ) ;
388
+ }
357
389
const afterMode = await getDefaultFilteringMode ( ) ;
358
390
if ( afterMode > MODE_BASIC ) { return afterMode !== beforeMode ; }
359
391
const filteringModes = await getFilteringModeDetails ( ) ;
0 commit comments