@@ -34,9 +34,7 @@ import {
34
34
} from './ext.js' ;
35
35
36
36
import {
37
- CURRENT_CONFIG_BASE_RULE_ID ,
38
37
getRulesetDetails ,
39
- getDynamicRules ,
40
38
defaultRulesetsFromLanguage ,
41
39
enableRulesets ,
42
40
getEnabledRulesetsDetails ,
@@ -70,6 +68,7 @@ const rulesetConfig = {
70
68
const UBOL_ORIGIN = runtime . getURL ( '' ) . replace ( / \/ $ / , '' ) ;
71
69
72
70
let firstRun = false ;
71
+ let wakeupRun = false ;
73
72
74
73
/******************************************************************************/
75
74
@@ -83,53 +82,23 @@ async function loadRulesetConfig() {
83
82
rulesetConfig . version = data . version ;
84
83
rulesetConfig . enabledRulesets = data . enabledRulesets ;
85
84
rulesetConfig . autoReload = data . autoReload ;
86
- return false ;
85
+ wakeupRun = true ;
86
+ return ;
87
87
}
88
88
data = await localRead ( 'rulesetConfig' ) ;
89
89
if ( data ) {
90
90
rulesetConfig . version = data . version ;
91
91
rulesetConfig . enabledRulesets = data . enabledRulesets ;
92
92
rulesetConfig . autoReload = data . autoReload ;
93
- return false ;
94
- }
95
- data = await loadRulesetConfig . convertLegacyStorage ( ) ;
96
- if ( data ) {
97
- rulesetConfig . version = data . version ;
98
- rulesetConfig . enabledRulesets = data . enabledRulesets ;
99
- rulesetConfig . autoReload = data . autoReload ;
100
- return false ;
93
+ sessionWrite ( 'rulesetConfig' , rulesetConfig ) ;
94
+ return ;
101
95
}
102
96
rulesetConfig . enabledRulesets = await defaultRulesetsFromLanguage ( ) ;
103
97
sessionWrite ( 'rulesetConfig' , rulesetConfig ) ;
104
98
localWrite ( 'rulesetConfig' , rulesetConfig ) ;
105
- return true ;
99
+ firstRun = true ;
106
100
}
107
101
108
- // TODO: To remove after next stable release is widespread (2023-06-04)
109
- loadRulesetConfig . convertLegacyStorage = async function ( ) {
110
- const dynamicRuleMap = await getDynamicRules ( ) ;
111
- const configRule = dynamicRuleMap . get ( CURRENT_CONFIG_BASE_RULE_ID ) ;
112
- if ( configRule === undefined ) { return ; }
113
- let rawConfig ;
114
- try {
115
- rawConfig = JSON . parse ( self . atob ( configRule . condition . urlFilter ) ) ;
116
- } catch ( ex ) {
117
- return ;
118
- }
119
- if ( rawConfig === undefined ) { return ; }
120
- const config = {
121
- version : rawConfig [ 0 ] ,
122
- enabledRulesets : rawConfig [ 1 ] ,
123
- autoReload : rawConfig [ 2 ] ,
124
- } ;
125
- localWrite ( 'rulesetConfig' , config ) ;
126
- sessionWrite ( 'rulesetConfig' , config ) ;
127
- dnr . updateDynamicRules ( {
128
- removeRuleIds : [ CURRENT_CONFIG_BASE_RULE_ID ] ,
129
- } ) ;
130
- return config ;
131
- } ;
132
-
133
102
async function saveRulesetConfig ( ) {
134
103
sessionWrite ( 'rulesetConfig' , rulesetConfig ) ;
135
104
return localWrite ( 'rulesetConfig' , rulesetConfig ) ;
@@ -153,12 +122,13 @@ function hasOmnipotence() {
153
122
async function onPermissionsRemoved ( ) {
154
123
const beforeMode = await getDefaultFilteringMode ( ) ;
155
124
const modified = await syncWithBrowserPermissions ( ) ;
156
- if ( modified === false ) { return ; }
125
+ if ( modified === false ) { return false ; }
157
126
const afterMode = await getDefaultFilteringMode ( ) ;
158
127
if ( beforeMode > 1 && afterMode <= 1 ) {
159
128
updateDynamicRules ( ) ;
160
129
}
161
130
registerInjectables ( ) ;
131
+ return true ;
162
132
}
163
133
164
134
/******************************************************************************/
@@ -180,6 +150,7 @@ function onMessage(request, sender, callback) {
180
150
} ) . catch ( reason => {
181
151
console . log ( reason ) ;
182
152
} ) ;
153
+ callback ( ) ;
183
154
return ;
184
155
}
185
156
@@ -273,8 +244,7 @@ function onMessage(request, sender, callback) {
273
244
}
274
245
275
246
case 'setDefaultFilteringMode' : {
276
- getDefaultFilteringMode (
277
- ) . then ( beforeLevel =>
247
+ getDefaultFilteringMode ( ) . then ( beforeLevel =>
278
248
setDefaultFilteringMode ( request . level ) . then ( afterLevel =>
279
249
( { beforeLevel, afterLevel } )
280
250
)
@@ -298,37 +268,44 @@ function onMessage(request, sender, callback) {
298
268
/******************************************************************************/
299
269
300
270
async function start ( ) {
301
- firstRun = await loadRulesetConfig ( ) ;
302
- await enableRulesets ( rulesetConfig . enabledRulesets ) ;
271
+ await loadRulesetConfig ( ) ;
272
+
273
+ if ( wakeupRun === false ) {
274
+ await enableRulesets ( rulesetConfig . enabledRulesets ) ;
275
+ }
303
276
304
277
// We need to update the regex rules only when ruleset version changes.
305
- const currentVersion = getCurrentVersion ( ) ;
306
- if ( currentVersion !== rulesetConfig . version ) {
307
- ubolLog ( `Version change: ${ rulesetConfig . version } => ${ currentVersion } ` ) ;
308
- updateDynamicRules ( ) . then ( ( ) => {
309
- rulesetConfig . version = currentVersion ;
310
- saveRulesetConfig ( ) ;
311
- } ) ;
278
+ if ( wakeupRun === false ) {
279
+ const currentVersion = getCurrentVersion ( ) ;
280
+ if ( currentVersion !== rulesetConfig . version ) {
281
+ ubolLog ( `Version change: ${ rulesetConfig . version } => ${ currentVersion } ` ) ;
282
+ updateDynamicRules ( ) . then ( ( ) => {
283
+ rulesetConfig . version = currentVersion ;
284
+ saveRulesetConfig ( ) ;
285
+ } ) ;
286
+ }
312
287
}
313
288
314
289
// Permissions may have been removed while the extension was disabled
315
- await onPermissionsRemoved ( ) ;
290
+ const permissionsChanged = await onPermissionsRemoved ( ) ;
316
291
317
292
// Unsure whether the browser remembers correctly registered css/scripts
318
293
// after we quit the browser. For now uBOL will check unconditionally at
319
294
// launch time whether content css/scripts are properly registered.
320
- registerInjectables ( ) ;
295
+ if ( wakeupRun === false || permissionsChanged ) {
296
+ registerInjectables ( ) ;
321
297
322
- const enabledRulesets = await dnr . getEnabledRulesets ( ) ;
323
- ubolLog ( `Enabled rulesets: ${ enabledRulesets } ` ) ;
298
+ const enabledRulesets = await dnr . getEnabledRulesets ( ) ;
299
+ ubolLog ( `Enabled rulesets: ${ enabledRulesets } ` ) ;
324
300
325
- dnr . getAvailableStaticRuleCount ( ) . then ( count => {
326
- ubolLog ( `Available static rule count: ${ count } ` ) ;
327
- } ) ;
301
+ dnr . getAvailableStaticRuleCount ( ) . then ( count => {
302
+ ubolLog ( `Available static rule count: ${ count } ` ) ;
303
+ } ) ;
304
+ }
328
305
329
306
// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest
330
307
// Firefox API does not support `dnr.setExtensionActionOptions`
331
- if ( dnr . setExtensionActionOptions ) {
308
+ if ( wakeupRun === false && dnr . setExtensionActionOptions ) {
332
309
dnr . setExtensionActionOptions ( { displayActionCountAsBadgeText : true } ) ;
333
310
}
334
311
0 commit comments