From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../browser/browser_ext_sidebarAction_httpAuth.js | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_sidebarAction_httpAuth.js (limited to 'browser/components/extensions/test/browser/browser_ext_sidebarAction_httpAuth.js') diff --git a/browser/components/extensions/test/browser/browser_ext_sidebarAction_httpAuth.js b/browser/components/extensions/test/browser/browser_ext_sidebarAction_httpAuth.js new file mode 100644 index 0000000000..d50d96b822 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_sidebarAction_httpAuth.js @@ -0,0 +1,72 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const { PromptTestUtils } = ChromeUtils.importESModule( + "resource://testing-common/PromptTestUtils.sys.mjs" +); + +add_task(async function sidebar_httpAuthPrompt() { + let data = { + manifest: { + permissions: ["https://example.com/*"], + sidebar_action: { + default_panel: "sidebar.html", + }, + }, + useAddonManager: "temporary", + files: { + "sidebar.html": ` + + + + + + + A Test Sidebar + + `, + "sidebar.js": function () { + fetch( + "https://example.com/browser/browser/components/extensions/test/browser/authenticate.sjs?user=user&pass=pass", + { credentials: "include" } + ).then(response => { + browser.test.sendMessage("fetchResult", response.ok); + }); + }, + }, + }; + + // Wait for the http auth prompt and close it with accept button. + let promptPromise = PromptTestUtils.handleNextPrompt( + SidebarUI.browser.contentWindow, + { + modalType: Services.prompt.MODAL_TYPE_WINDOW, + promptType: "promptUserAndPass", + }, + { buttonNumClick: 0, loginInput: "user", passwordInput: "pass" } + ); + + let extension = ExtensionTestUtils.loadExtension(data); + await extension.startup(); + let fetchResultPromise = extension.awaitMessage("fetchResult"); + + await promptPromise; + ok(true, "Extension fetch should trigger auth prompt."); + + let responseOk = await fetchResultPromise; + ok(responseOk, "Login should succeed."); + + await extension.unload(); + + // Cleanup + await new Promise(resolve => + Services.clearData.deleteData( + Ci.nsIClearDataService.CLEAR_AUTH_CACHE, + resolve + ) + ); +}); -- cgit v1.2.3