72 lines
2 KiB
JavaScript
72 lines
2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
"use strict";
|
|
add_task(async function testPrefFirstRollout() {
|
|
await setup();
|
|
await setupRegion();
|
|
let defaults = Services.prefs.getDefaultBranch("");
|
|
|
|
is(
|
|
DoHConfigController.currentConfig.enabled,
|
|
false,
|
|
"Rollout should not be enabled"
|
|
);
|
|
setPassingHeuristics();
|
|
|
|
let configFlushedPromise = DoHTestUtils.waitForConfigFlush();
|
|
defaults.setBoolPref(`${kRegionalPrefNamespace}.enabled`, true);
|
|
await configFlushedPromise;
|
|
|
|
is(
|
|
DoHConfigController.currentConfig.enabled,
|
|
true,
|
|
"Rollout should be enabled"
|
|
);
|
|
await ensureTRRMode(2);
|
|
|
|
is(
|
|
Preferences.get("doh-rollout.home-region"),
|
|
"DE",
|
|
"Initial region should be DE"
|
|
);
|
|
RegionTestUtils.setNetworkRegion("UK");
|
|
await Region._fetchRegion();
|
|
Region._setHomeRegion("UK");
|
|
await ensureTRRMode(2); // Mode shouldn't change.
|
|
|
|
// The idle-daily event will cause the new region to take effect.
|
|
Services.obs.notifyObservers(null, "idle-daily");
|
|
|
|
is(Preferences.get("doh-rollout.home-region"), "UK");
|
|
|
|
RegionTestUtils.setNetworkRegion("FR");
|
|
|
|
let promise = new Promise(resolve => {
|
|
Services.obs.addObserver(function obs(subject, topic) {
|
|
Services.obs.removeObserver(obs, topic);
|
|
resolve();
|
|
}, "doh-config-updated");
|
|
});
|
|
|
|
// For a timezone change, a region check should be performed,
|
|
// and the region should change immediately.
|
|
Services.obs.notifyObservers(null, "default-timezone-changed");
|
|
|
|
await promise;
|
|
is(Preferences.get("doh-rollout.home-region"), "FR");
|
|
|
|
is(
|
|
DoHConfigController.currentConfig.enabled,
|
|
false,
|
|
"Rollout should not be enabled for new region"
|
|
);
|
|
await ensureTRRMode(undefined); // restart of the controller should change the region.
|
|
|
|
// Reset state to initial values.
|
|
await setupRegion();
|
|
defaults.deleteBranch(`doh-rollout.de`);
|
|
Preferences.reset("doh-rollout.home-region-changed");
|
|
Preferences.reset("doh-rollout.home-region");
|
|
});
|