diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /browser/base/content/test/general/browser_bug356571.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/base/content/test/general/browser_bug356571.js')
-rw-r--r-- | browser/base/content/test/general/browser_bug356571.js | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_bug356571.js b/browser/base/content/test/general/browser_bug356571.js new file mode 100644 index 0000000000..185d59d8fd --- /dev/null +++ b/browser/base/content/test/general/browser_bug356571.js @@ -0,0 +1,100 @@ +// Bug 356571 - loadOneOrMoreURIs gives up if one of the URLs has an unknown protocol + +var Cm = Components.manager; + +// Set to true when docShell alerts for unknown protocol error +var didFail = false; + +// Override Alert to avoid blocking the test due to unknown protocol error +const kPromptServiceUUID = "{6cc9c9fe-bc0b-432b-a410-253ef8bcc699}"; +const kPromptServiceContractID = "@mozilla.org/prompter;1"; + +// Save original prompt service factory +const kPromptServiceFactory = Cm.getClassObject( + Cc[kPromptServiceContractID], + Ci.nsIFactory +); + +var fakePromptServiceFactory = { + createInstance(aIid) { + return promptService.QueryInterface(aIid); + }, +}; + +var promptService = { + QueryInterface: ChromeUtils.generateQI(["nsIPromptService"]), + alert() { + didFail = true; + }, +}; + +/* FIXME +Cm.QueryInterface(Ci.nsIComponentRegistrar) + .registerFactory(Components.ID(kPromptServiceUUID), "Prompt Service", + kPromptServiceContractID, fakePromptServiceFactory); +*/ + +const kCompleteState = + Ci.nsIWebProgressListener.STATE_STOP + + Ci.nsIWebProgressListener.STATE_IS_NETWORK; + +const kDummyPage = + // eslint-disable-next-line @microsoft/sdl/no-insecure-url + "http://example.org/browser/browser/base/content/test/general/dummy_page.html"; +const kURIs = ["bad://www.mozilla.org/", kDummyPage, kDummyPage]; + +var gProgressListener = { + _runCount: 0, + onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) { + if ((aStateFlags & kCompleteState) == kCompleteState) { + if (++this._runCount != kURIs.length) { + return; + } + // Check we failed on unknown protocol (received an alert from docShell) + ok(didFail, "Correctly failed on unknown protocol"); + // Check we opened all tabs + ok( + gBrowser.tabs.length == kURIs.length, + "Correctly opened all expected tabs" + ); + finishTest(); + } + }, +}; + +function test() { + todo(false, "temp. disabled"); + /* FIXME */ + /* + waitForExplicitFinish(); + // Wait for all tabs to finish loading + gBrowser.addTabsProgressListener(gProgressListener); + loadOneOrMoreURIs(kURIs.join("|")); + */ +} + +function finishTest() { + // Unregister the factory so we do not leak + Cm.QueryInterface(Ci.nsIComponentRegistrar).unregisterFactory( + Components.ID(kPromptServiceUUID), + fakePromptServiceFactory + ); + + // Restore the original factory + Cm.QueryInterface(Ci.nsIComponentRegistrar).registerFactory( + Components.ID(kPromptServiceUUID), + "Prompt Service", + kPromptServiceContractID, + kPromptServiceFactory + ); + + // Remove the listener + gBrowser.removeTabsProgressListener(gProgressListener); + + // Close opened tabs + for (var i = gBrowser.tabs.length - 1; i > 0; i--) { + gBrowser.removeTab(gBrowser.tabs[i]); + } + + finish(); +} |