diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /browser/base/content/test/captivePortal/browser_captivePortalTabReference.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/base/content/test/captivePortal/browser_captivePortalTabReference.js')
-rw-r--r-- | browser/base/content/test/captivePortal/browser_captivePortalTabReference.js | 66 |
1 files changed, 66 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..0108855a8e --- /dev/null +++ b/browser/base/content/test/captivePortal/browser_captivePortalTabReference.js @@ -0,0 +1,66 @@ +/* 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(); + Assert.equal(CPS.state, CPS.LOCKED_PORTAL, "Captive portal is locked again"); + errorTab = await openCaptivePortalErrorTab(); + let portalTab2 = await openCaptivePortalLoginTab(errorTab); + Assert.notEqual( + 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)); +} |