Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: os != 'android'
- Manifest: browser/components/ipprotection/tests/xpcshell/xpcshell.toml
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
"use strict";
const { IPPOnboardingMessage } = ChromeUtils.importESModule(
"moz-src:///browser/components/ipprotection/IPPOnboardingMessageHelper.sys.mjs"
);
const { ONBOARDING_PREF_FLAGS } = ChromeUtils.importESModule(
"chrome://browser/content/ipprotection/ipprotection-constants.mjs"
);
const AUTOSTART_PREF = "browser.ipProtection.autoStartEnabled";
const PERM_NAME = "ipp-vpn";
add_setup(async function () {
await putServerInRemoteSettings();
});
/**
* Tests that onboarding message flags are set for VPN start, autostart, and site exceptions
*/
add_task(async function test_IPPOnboardingMessage() {
let sandbox = sinon.createSandbox();
setupStubs(sandbox);
IPProtectionService.init();
await waitForEvent(
IPProtectionService,
"IPProtectionService:StateChanged",
() => IPProtectionService.state === IPProtectionStates.READY
);
Assert.ok(
!IPPProxyManager.activatedAt,
"IP Protection service should not be active initially"
);
let startedEventPromise = waitForEvent(
IPPProxyManager,
"IPPProxyManager:StateChanged",
() => IPPProxyManager.state === IPPProxyStates.ACTIVE
);
IPPProxyManager.start();
Assert.equal(
IPPProxyManager.state,
IPPProxyStates.ACTIVATING,
"Proxy activation"
);
await startedEventPromise;
info("after startedEventPromise");
Assert.equal(
IPPProxyManager.state,
IPPProxyStates.ACTIVE,
"IP Protection service should be active after starting"
);
let maskAfterVpn = IPPOnboardingMessage.readPrefMask();
Assert.notStrictEqual(
maskAfterVpn & ONBOARDING_PREF_FLAGS.EVER_TURNED_ON_VPN,
0,
"Ever turned on VPN flag should be set"
);
// Turn on autostart
Services.prefs.setBoolPref(AUTOSTART_PREF, true);
let maskAfterAutostart = IPPOnboardingMessage.readPrefMask();
Assert.strictEqual(
maskAfterAutostart,
maskAfterVpn | ONBOARDING_PREF_FLAGS.EVER_TURNED_ON_AUTOSTART,
"Autostart flag should be added to the mask"
);
// Add site exception
const principal =
Services.scriptSecurityManager.createContentPrincipalFromOrigin(site);
const capability = Ci.nsIPermissionManager.DENY_ACTION;
Services.perms.addFromPrincipal(principal, PERM_NAME, capability);
let maskAfterSiteException = IPPOnboardingMessage.readPrefMask();
Assert.strictEqual(
maskAfterSiteException,
maskAfterAutostart | ONBOARDING_PREF_FLAGS.EVER_USED_SITE_EXCEPTIONS,
"Site exceptions flag should be added to the mask"
);
// Cleanup
Services.perms.removeByType(PERM_NAME);
IPProtectionService.uninit();
IPPOnboardingMessage.uninit();
sandbox.restore();
});