88 lines
2.5 KiB
JavaScript
88 lines
2.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { HttpServer } = ChromeUtils.importESModule(
|
|
"resource://testing-common/httpd.sys.mjs"
|
|
);
|
|
|
|
const { XPCShellContentUtils } = ChromeUtils.importESModule(
|
|
"resource://testing-common/XPCShellContentUtils.sys.mjs"
|
|
);
|
|
|
|
XPCShellContentUtils.ensureInitialized(this);
|
|
|
|
let gHttpServer;
|
|
|
|
add_setup(async function () {
|
|
gHttpServer = new HttpServer();
|
|
let invalidHandler = (req, res) => {
|
|
res.setStatusLine(req.httpVersion, 500, "Oh no, it broke");
|
|
res.write("Uh oh, it broke.");
|
|
};
|
|
let validHandler = (req, res) => {
|
|
res.setHeader("Content-Type", "application/ohttp-keys");
|
|
res.write("1234");
|
|
};
|
|
|
|
gHttpServer.registerPathHandler("/.wellknown/invalid", invalidHandler);
|
|
gHttpServer.registerPathHandler("/.wellknown/valid", validHandler);
|
|
|
|
gHttpServer.start(-1);
|
|
});
|
|
|
|
function getLocalURL(path) {
|
|
return `http://localhost:${gHttpServer.identity.primaryPort}/.wellknown/${path}`;
|
|
}
|
|
|
|
add_task(async function test_out_of_process_use() {
|
|
let page = await XPCShellContentUtils.loadContentPage("about:certificate", {
|
|
remote: true,
|
|
});
|
|
|
|
let fetchURL = getLocalURL("valid");
|
|
let contentFetch = await page.spawn([fetchURL], url => {
|
|
// eslint-disable-next-line no-shadow
|
|
let { HPKEConfigManager } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/HPKEConfigManager.sys.mjs"
|
|
);
|
|
|
|
return HPKEConfigManager.get(url);
|
|
});
|
|
Assert.deepEqual(contentFetch, new TextEncoder().encode("1234"));
|
|
Assert.ok(
|
|
page.browsingContext.currentWindowGlobal.domProcess.getActor(
|
|
"HPKEConfigManager"
|
|
),
|
|
"Should be able to get a parent actor for this browsingContext"
|
|
);
|
|
|
|
let randomPage = await XPCShellContentUtils.loadContentPage(
|
|
"data:text/html,2",
|
|
{
|
|
remote: true,
|
|
}
|
|
);
|
|
|
|
await Assert.rejects(
|
|
randomPage.spawn([fetchURL], async url => {
|
|
// eslint-disable-next-line no-shadow
|
|
let { HPKEConfigManager } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/HPKEConfigManager.sys.mjs"
|
|
);
|
|
|
|
return HPKEConfigManager.get(url);
|
|
}),
|
|
/cannot be used/,
|
|
"Shouldn't be able to use HPKEConfigManager from random content processes."
|
|
);
|
|
Assert.throws(
|
|
() =>
|
|
randomPage.browsingContext.currentWindowGlobal.domProcess.getActor(
|
|
"HPKEConfigManager"
|
|
),
|
|
/Process protocol .*support remote type/,
|
|
"Should not be able to get a parent actor for a non-privilegedabout browsingContext"
|
|
);
|
|
});
|