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/captivePortal/browser_captivePortalTabReference.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | browser/base/content/test/captivePortal/browser_captivePortalTabReference.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/browser/base/content/test/captivePortal/browser_captivePortalTabReference.js b/browser/base/content/test/captivePortal/browser_captivePortalTabReference.js new file mode 100644 index 0000000000..b630f35149 --- /dev/null +++ b/browser/base/content/test/captivePortal/browser_captivePortalTabReference.js @@ -0,0 +1,65 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const CPS = Cc["@mozilla.org/network/captive-portal-service;1"].getService( + Ci.nsICaptivePortalService +); + +async function checkCaptivePortalTabReference(evt, currState) { + await portalDetected(); + let errorTab = await openCaptivePortalErrorTab(); + let portalTab = await openCaptivePortalLoginTab(errorTab); + + // Release the reference held to the portal tab by sending success/abort events. + Services.obs.notifyObservers(null, evt); + await TestUtils.waitForCondition( + () => CPS.state == currState, + "Captive portal has been released" + ); + gBrowser.removeTab(errorTab); + + await portalDetected(); + ok(CPS.state == CPS.LOCKED_PORTAL, "Captive portal is locked again"); + errorTab = await openCaptivePortalErrorTab(); + let portalTab2 = await openCaptivePortalLoginTab(errorTab); + ok( + portalTab != portalTab2, + "waitForNewTab in openCaptivePortalLoginTab should not have completed at this point if references were held to the old captive portal tab after login/abort." + ); + gBrowser.removeTab(portalTab); + gBrowser.removeTab(portalTab2); + + let errorTabReloaded = BrowserTestUtils.waitForErrorPage( + errorTab.linkedBrowser + ); + Services.obs.notifyObservers(null, "captive-portal-login-success"); + await errorTabReloaded; + + gBrowser.removeTab(errorTab); +} + +add_setup(async function () { + await SpecialPowers.pushPrefEnv({ + set: [ + ["captivedetect.canonicalURL", CANONICAL_URL], + ["captivedetect.canonicalContent", CANONICAL_CONTENT], + ], + }); +}); + +let capPortalStates = [ + { + evt: "captive-portal-login-success", + state: CPS.UNLOCKED_PORTAL, + }, + { + evt: "captive-portal-login-abort", + state: CPS.UNKNOWN, + }, +]; + +for (let elem of capPortalStates) { + add_task(checkCaptivePortalTabReference.bind(null, elem.evt, elem.state)); +} |