Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* 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
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const { ContextualIdentityListener } = ChromeUtils.importESModule(
"chrome://remote/content/shared/listeners/ContextualIdentityListener.sys.mjs"
);
const PAGE_URL = "https://example.com/";
const PAGE_WITH_EXPIRED_CERT = "https://expired.example.com/";
add_task(async function test_disable_all_security_checks_globally() {
const certOverrideService = Cc[
"@mozilla.org/security/certoverride;1"
].getService(Ci.nsICertOverrideService);
const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, PAGE_URL);
const browser = gBrowser.selectedBrowser;
info("Loading and waiting for the cert error");
let errorPageLoaded = BrowserTestUtils.waitForErrorPage(browser);
BrowserTestUtils.startLoadingURIString(browser, PAGE_WITH_EXPIRED_CERT);
await errorPageLoaded;
Assert.ok(true, "Error page is loaded");
info("Disable security checks");
certOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyData(
true
);
const loadedPromise = BrowserTestUtils.browserLoaded(browser);
BrowserTestUtils.startLoadingURIString(browser, PAGE_WITH_EXPIRED_CERT);
await loadedPromise;
Assert.ok(true, "Normal page is loaded");
info("Enable security checks");
certOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyData(
false
);
errorPageLoaded = BrowserTestUtils.waitForErrorPage(browser);
BrowserTestUtils.startLoadingURIString(browser, PAGE_WITH_EXPIRED_CERT);
await errorPageLoaded;
Assert.ok(true, "Error page is loaded");
BrowserTestUtils.removeTab(tab);
});
add_task(async function test_disable_all_security_checks_for_user_context() {
const certOverrideService = Cc[
"@mozilla.org/security/certoverride;1"
].getService(Ci.nsICertOverrideService);
const userContext = ContextualIdentityService.create("test_name");
const { userContextId } = userContext;
const tabInUserContext = BrowserTestUtils.addTab(gBrowser, PAGE_URL, {
userContextId,
});
const browserInUserContext = tabInUserContext.linkedBrowser;
info("Loading and waiting for the cert error in user context");
let errorPageLoaded = BrowserTestUtils.waitForErrorPage(browserInUserContext);
BrowserTestUtils.startLoadingURIString(
browserInUserContext,
PAGE_WITH_EXPIRED_CERT
);
await errorPageLoaded;
Assert.ok(true, "Error page is loaded");
info("Disable security checks for user context");
certOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyDataForUserContext(
userContextId,
true
);
let loadedPromise = BrowserTestUtils.browserLoaded(browserInUserContext);
BrowserTestUtils.startLoadingURIString(
browserInUserContext,
PAGE_WITH_EXPIRED_CERT
);
await loadedPromise;
Assert.ok(true, "Normal page is loaded in user context");
const tabInDefaultUserContext = BrowserTestUtils.addTab(gBrowser, PAGE_URL);
const browserInDefaultUserContext = tabInDefaultUserContext.linkedBrowser;
info("Loading and waiting for the cert error in default user context");
errorPageLoaded = BrowserTestUtils.waitForErrorPage(
browserInDefaultUserContext
);
BrowserTestUtils.startLoadingURIString(
browserInDefaultUserContext,
PAGE_WITH_EXPIRED_CERT
);
await errorPageLoaded;
Assert.ok(true, "Error page is loaded");
BrowserTestUtils.removeTab(tabInUserContext);
BrowserTestUtils.removeTab(tabInDefaultUserContext);
ContextualIdentityService.remove(userContextId);
});
add_task(
async function test_disable_all_security_checks_globally_enable_for_user_context() {
const certOverrideService = Cc[
"@mozilla.org/security/certoverride;1"
].getService(Ci.nsICertOverrideService);
const tabInDefaultUserContext = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
PAGE_URL
);
const browser = gBrowser.selectedBrowser;
info("Disable security checks");
certOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyData(
true
);
let loadedPromise = BrowserTestUtils.browserLoaded(browser);
BrowserTestUtils.startLoadingURIString(browser, PAGE_WITH_EXPIRED_CERT);
await loadedPromise;
Assert.ok(true, "Normal page is loaded");
const userContext = ContextualIdentityService.create("test_name");
const { userContextId } = userContext;
const tabInUserContext = BrowserTestUtils.addTab(gBrowser, PAGE_URL, {
userContextId,
});
const browserInUserContext = tabInUserContext.linkedBrowser;
info("Enable security checks for user context");
certOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyDataForUserContext(
userContextId,
false
);
info("Loading and waiting for the cert error in user context");
const errorPageLoaded =
BrowserTestUtils.waitForErrorPage(browserInUserContext);
BrowserTestUtils.startLoadingURIString(
browserInUserContext,
PAGE_WITH_EXPIRED_CERT
);
await errorPageLoaded;
Assert.ok(true, "Error page is loaded");
BrowserTestUtils.removeTab(tabInDefaultUserContext);
BrowserTestUtils.removeTab(tabInUserContext);
ContextualIdentityService.remove(userContextId);
info("Reenable security checks");
certOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyData(
false
);
}
);
add_task(
async function test_reset_disable_all_security_checks_for_user_context() {
const certOverrideService = Cc[
"@mozilla.org/security/certoverride;1"
].getService(Ci.nsICertOverrideService);
const userContext = ContextualIdentityService.create("test_name");
const { userContextId } = userContext;
const tabInUserContext = BrowserTestUtils.addTab(gBrowser, PAGE_URL, {
userContextId,
});
const browserInUserContext = tabInUserContext.linkedBrowser;
info("Loading and waiting for the cert error in user context");
let errorPageLoaded =
BrowserTestUtils.waitForErrorPage(browserInUserContext);
BrowserTestUtils.startLoadingURIString(
browserInUserContext,
PAGE_WITH_EXPIRED_CERT
);
await errorPageLoaded;
Assert.ok(true, "Error page is loaded");
info("Disable security checks for user context");
certOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyDataForUserContext(
userContextId,
true
);
let loadedPromise = BrowserTestUtils.browserLoaded(browserInUserContext);
BrowserTestUtils.startLoadingURIString(
browserInUserContext,
PAGE_WITH_EXPIRED_CERT
);
await loadedPromise;
Assert.ok(true, "Normal page is loaded in user context");
info("Reset disable security checks for user context");
certOverrideService.resetDisableAllSecurityChecksAndLetAttackersInterceptMyDataForUserContext(
userContextId
);
errorPageLoaded = BrowserTestUtils.waitForErrorPage(browserInUserContext);
BrowserTestUtils.startLoadingURIString(
browserInUserContext,
PAGE_WITH_EXPIRED_CERT
);
await errorPageLoaded;
Assert.ok(true, "Error page is loaded");
BrowserTestUtils.removeTab(tabInUserContext);
ContextualIdentityService.remove(userContextId);
}
);