From d8bbc7858622b6d9c278469aab701ca0b609cddf Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 15 May 2024 05:35:49 +0200 Subject: Merging upstream version 126.0. Signed-off-by: Daniel Baumann --- .../ssl/tests/mochitest/browser/browser.toml | 2 + .../browser_clientAuth_fetch_from_extension.js | 59 ++++++++++++++++++++++ .../mochitest/browser/browser_clientAuth_ui.js | 12 ++++- .../browser/browser_loadPKCS11Module_ui.js | 2 +- 4 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 security/manager/ssl/tests/mochitest/browser/browser_clientAuth_fetch_from_extension.js (limited to 'security/manager/ssl/tests/mochitest/browser') diff --git a/security/manager/ssl/tests/mochitest/browser/browser.toml b/security/manager/ssl/tests/mochitest/browser/browser.toml index 433fffa4ac..ffa0e39d36 100644 --- a/security/manager/ssl/tests/mochitest/browser/browser.toml +++ b/security/manager/ssl/tests/mochitest/browser/browser.toml @@ -33,6 +33,8 @@ skip-if = [ "socketprocess_networking", ] +["browser_clientAuth_fetch_from_extension.js"] + ["browser_clientAuth_speculative_connection.js"] skip-if = ["socketprocess_networking"] diff --git a/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_fetch_from_extension.js b/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_fetch_from_extension.js new file mode 100644 index 0000000000..4f9a45f03c --- /dev/null +++ b/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_fetch_from_extension.js @@ -0,0 +1,59 @@ +/* Any copyright is dedicated to the Public Domain. + * https://creativecommons.org/publicdomain/zero/1.0/ */ + +/* global browser */ + +"use strict"; + +let certDialogShown = false; +function onCertDialogLoaded(subject) { + certDialogShown = true; + // eslint-disable-next-line mozilla/no-arbitrary-setTimeout + setTimeout(() => { + subject.acceptDialog(); + }, 0); +} + +Services.obs.addObserver(onCertDialogLoaded, "cert-dialog-loaded"); + +function clearClientCertsDecision() { + let cars = Cc["@mozilla.org/security/clientAuthRememberService;1"].getService( + Ci.nsIClientAuthRememberService + ); + cars.clearRememberedDecisions(); +} + +registerCleanupFunction(() => { + Services.obs.removeObserver(onCertDialogLoaded, "cert-dialog-loaded"); + // Make sure we don't affect other tests. + clearClientCertsDecision(); +}); + +add_task(async function () { + await SpecialPowers.pushPrefEnv({ + set: [["security.default_personal_cert", "Ask Every Time"]], + }); + + clearClientCertsDecision(); + + let extension = ExtensionTestUtils.loadExtension({ + manifest: { + permissions: [""], + }, + + async background() { + try { + await fetch("https://requireclientcert.example.com/"); + browser.test.notifyPass("cert_dialog_shown"); + } catch (error) { + browser.test.fail(`${error} :: ${error.stack}`); + browser.test.notifyFail("cert_dialog_shown"); + } + }, + }); + + await extension.startup(); + await extension.awaitFinish("cert_dialog_shown"); + await extension.unload(); + ok(certDialogShown, "Cert dialog was shown"); +}); diff --git a/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_ui.js b/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_ui.js index 9bf961250a..2e9ff0557e 100644 --- a/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_ui.js +++ b/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_ui.js @@ -14,6 +14,11 @@ const TEST_PORT = 123; var certDB = Cc["@mozilla.org/security/x509certdb;1"].getService( Ci.nsIX509CertDB ); + +ChromeUtils.defineESModuleGetters(this, { + PromptUtils: "resource://gre/modules/PromptUtils.sys.mjs", +}); + /** * Test certificate (i.e. build/pgo/certs/mochitest.client). * @@ -34,11 +39,16 @@ var cert; function openClientAuthDialog(cert) { let certArray = [cert]; let retVals = { cert: undefined, rememberDecision: undefined }; + let args = PromptUtils.objectToPropBag({ + hostname: TEST_HOSTNAME, + certArray, + retVals, + }); let win = window.openDialog( "chrome://pippki/content/clientauthask.xhtml", "", "", - { hostname: TEST_HOSTNAME, certArray, retVals } + args ); return TestUtils.topicObserved("cert-dialog-loaded").then(() => { return { win, retVals }; diff --git a/security/manager/ssl/tests/mochitest/browser/browser_loadPKCS11Module_ui.js b/security/manager/ssl/tests/mochitest/browser/browser_loadPKCS11Module_ui.js index 4b7b78df8d..8b65d1e411 100644 --- a/security/manager/ssl/tests/mochitest/browser/browser_loadPKCS11Module_ui.js +++ b/security/manager/ssl/tests/mochitest/browser/browser_loadPKCS11Module_ui.js @@ -290,7 +290,7 @@ async function testModuleNameHelper(moduleName, acceptButtonShouldBeDisabled) { let dialogNode = win.document.querySelector("dialog"); Assert.equal( dialogNode.getAttribute("buttondisabledaccept"), - acceptButtonShouldBeDisabled ? "true" : "", // it's a string + acceptButtonShouldBeDisabled ? "true" : null, `dialog accept button should ${ acceptButtonShouldBeDisabled ? "" : "not " }be disabled` -- cgit v1.2.3