@@ -33,6 +33,7 @@ import {
33
33
import {
34
34
hostnamesFromMatches ,
35
35
isDescendantHostnameOfIter ,
36
+ toBroaderHostname ,
36
37
} from './utils.js' ;
37
38
38
39
import {
@@ -54,6 +55,17 @@ const pruneDescendantHostnamesFromSet = (hostname, hnSet) => {
54
55
55
56
/******************************************************************************/
56
57
58
+ const pruneHostnameFromSet = ( hostname , hnSet ) => {
59
+ let hn = hostname ;
60
+ for ( ; ; ) {
61
+ hnSet . delete ( hn ) ;
62
+ hn = toBroaderHostname ( hn ) ;
63
+ if ( hn === '*' ) { break ; }
64
+ }
65
+ } ;
66
+
67
+ /******************************************************************************/
68
+
57
69
const eqSets = ( setBefore , setAfter ) => {
58
70
for ( const hn of setAfter ) {
59
71
if ( setBefore . has ( hn ) === false ) { return false ; }
@@ -203,9 +215,13 @@ async function setFilteringModeDetails(afterDetails) {
203
215
async function getFilteringMode ( hostname ) {
204
216
const filteringModes = await getFilteringModeDetails ( ) ;
205
217
if ( filteringModes . none . has ( hostname ) ) { return 0 ; }
218
+ if ( isDescendantHostnameOfIter ( hostname , filteringModes . none ) ) { return 0 ; }
206
219
if ( filteringModes . network . has ( hostname ) ) { return 1 ; }
220
+ if ( isDescendantHostnameOfIter ( hostname , filteringModes . network ) ) { return 1 ; }
207
221
if ( filteringModes . extendedSpecific . has ( hostname ) ) { return 2 ; }
222
+ if ( isDescendantHostnameOfIter ( hostname , filteringModes . extendedSpecific ) ) { return 2 ; }
208
223
if ( filteringModes . extendedGeneric . has ( hostname ) ) { return 3 ; }
224
+ if ( isDescendantHostnameOfIter ( hostname , filteringModes . extendedGeneric ) ) { return 3 ; }
209
225
return getDefaultFilteringMode ( ) ;
210
226
}
211
227
@@ -233,16 +249,16 @@ async function setFilteringMode(hostname, afterLevel) {
233
249
} = filteringModes ;
234
250
switch ( beforeLevel ) {
235
251
case 0 :
236
- none . delete ( hostname ) ;
252
+ pruneHostnameFromSet ( hostname , none ) ;
237
253
break ;
238
254
case 1 :
239
- network . delete ( hostname ) ;
255
+ pruneHostnameFromSet ( hostname , network ) ;
240
256
break ;
241
257
case 2 :
242
- extendedSpecific . delete ( hostname ) ;
258
+ pruneHostnameFromSet ( hostname , extendedSpecific ) ;
243
259
break ;
244
260
case 3 :
245
- extendedGeneric . delete ( hostname ) ;
261
+ pruneHostnameFromSet ( hostname , extendedGeneric ) ;
246
262
break ;
247
263
}
248
264
if ( afterLevel !== defaultLevel ) {
0 commit comments