Skip to content

Commit 6edd452

Browse files
committed
Imported settings version migration support.
1 parent 746f415 commit 6edd452

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

src/bg/LifeCycle.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -282,15 +282,19 @@ var LifeCycle = (() => {
282282

283283
if (!previousVersion) return;
284284

285+
this.migrateSettings(previousVersion);
286+
},
287+
288+
async migrateSettings(previousVersion) {
285289
await versioning;
286290
previousVersion = new Ver(previousVersion);
287-
let currentVersion = new Ver(browser.runtime.getManifest().version);
288-
let upgrading = Ver.is(previousVersion, "<=", currentVersion);
291+
const currentVersion = new Ver(browser.runtime.getManifest().version);
292+
const upgrading = Ver.is(previousVersion, "<=", currentVersion);
289293
if (!upgrading) return;
290294

291295
// put here any version specific upgrade adjustment in stored data
292296

293-
let forEachPreset = async (callback, presetNames = "*") => {
297+
const forEachPreset = async (callback, presetNames = "*") => {
294298
await ns.initializing;
295299
let changed = false;
296300
for (let p of ns.policy.getPresets(presetNames)) {
@@ -306,7 +310,7 @@ var LifeCycle = (() => {
306310
}
307311
};
308312

309-
let configureNewCap = async (cap, presetNames, capsFilter) => {
313+
const configureNewCap = async (cap, presetNames, capsFilter) => {
310314
log(`Upgrading from ${previousVersion}: configure the "${cap}" capability.`);
311315
await forEachPreset(({capabilities}) => {
312316
if (capsFilter(capabilities) && !capabilities.has(cap)) {
@@ -316,7 +320,7 @@ var LifeCycle = (() => {
316320
}, presetNames);
317321
};
318322

319-
let renameCap = async (oldName, newName) => {
323+
const renameCap = async (oldName, newName) => {
320324
log(`Upgrading from ${previousVersion}: rename capability "${oldName}" to "${newName}`);
321325
await forEachPreset(({capabilities}) => {
322326
if (capabilities.has(oldName)) {
@@ -383,6 +387,6 @@ var LifeCycle = (() => {
383387
} finally {
384388
browser.runtime.reload(); // apply update
385389
}
386-
}
390+
},
387391
};
388392
})();

src/bg/Settings.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,21 @@ var Settings = {
7575
async importSettings(json) {
7676
try {
7777
await this.update(json);
78+
let exportVersion = json?.exportMeta?.version;
79+
if (!exportVersion) {
80+
// fix "recent" capabilities in older unversioned exports
81+
const knownCapabilities = json.policy.TRUSTED.capabilities;
82+
for (const [cap, ver] of [["lazy_load", "11.0"], ["wasm", "13.0"]]) {
83+
if (!knownCapabilities.includes(cap)) {
84+
exportVersion = ver;
85+
break;
86+
}
87+
}
88+
}
89+
if (exportVersion) {
90+
await include("/bg/LifeCycle.js");
91+
await LifeCycle.migrateSettings(exportVersion);
92+
}
7893
return true;
7994
} catch (e) {
8095
error(e, "Importing settings %o", json);

0 commit comments

Comments
 (0)