diff options
Diffstat (limited to 'browser/components/doh/test/browser/browser_localStorageMigration.js')
-rw-r--r-- | browser/components/doh/test/browser/browser_localStorageMigration.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/browser/components/doh/test/browser/browser_localStorageMigration.js b/browser/components/doh/test/browser/browser_localStorageMigration.js new file mode 100644 index 0000000000..34c8916bed --- /dev/null +++ b/browser/components/doh/test/browser/browser_localStorageMigration.js @@ -0,0 +1,61 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +"use strict"; + +ChromeUtils.defineModuleGetter( + this, + "ExtensionStorageIDB", + "resource://gre/modules/ExtensionStorageIDB.jsm" +); + +const ADDON_ID = "doh-rollout@mozilla.org"; + +add_task(setup); + +add_task(async function testLocalStorageMigration() { + Preferences.reset(prefs.BALROG_MIGRATION_PREF); + + const legacyEntries = { + doneFirstRun: true, + "doh-rollout.doorhanger-decision": "UIOk", + "doh-rollout.disable-heuristics": true, + }; + + let policy = WebExtensionPolicy.getByID(ADDON_ID); + + const storagePrincipal = ExtensionStorageIDB.getStoragePrincipal( + policy.extension + ); + + const idbConn = await ExtensionStorageIDB.open(storagePrincipal); + await idbConn.set(legacyEntries); + + let migrationDone = new Promise(resolve => { + Preferences.observe(prefs.BALROG_MIGRATION_PREF, function obs() { + Preferences.ignore(prefs.BALROG_MIGRATION_PREF, obs); + resolve(); + }); + }); + + await restartDoHController(); + await migrationDone; + + for (let [key, value] of Object.entries(legacyEntries)) { + if (!key.startsWith("doh-rollout")) { + key = "doh-rollout." + key; + } + + is( + Preferences.get(key), + value, + `${key} pref exists and has the right value ${value}` + ); + + Preferences.reset(key); + } + + await idbConn.clear(); + await idbConn.close(); +}); |