Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
// Tests the post-login side of the share flow: after finishing login, when
// FxA redirects to the redirect URL (/auth-complete), asserts that we reuse
// that tab to load the share, instead of loading the share in a new tab.
add_task(async function reuses_auth_complete_tab_after_login() {
await SpecialPowers.pushPrefEnv({
set: [["browser.contentsharing.automation.detectLoginTimeoutMS", 10000]],
});
await withContentSharingMockServer(async server => {
clearCookies();
// Open a tab to the auth-complete endpoint shown after signing in.
const authTab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
ContentSharingUtils.redirectURL
);
const sharedTabs = [
];
await Promise.all(
sharedTabs.map(t => BrowserTestUtils.browserLoaded(t.linkedBrowser))
);
// Wait for the tab to redirect before we assert on its URL.
const authTabLoadedShareURL = BrowserTestUtils.browserLoaded(
authTab.linkedBrowser,
false,
server.mockShareURL
);
// Kick off the share flow, simulating completion by closing the dialog
// and setting the cookie.
const sharePromise = ContentSharingUtils.handleShareTabs(sharedTabs);
await TestUtils.waitForCondition(() => window.gDialogBox.isOpen);
window.gDialogBox.dialog.close();
// handleShareTabs indirectly wires up the cookie observer; wait for it
// before setting the cookie to avoid problems in chaos mode.
await TestUtils.waitForCondition(
() => ContentSharingUtils.observingCookieChange,
"detectLogin registered its cookie-changed observer"
);
setCookie("auth", "1");
await sharePromise;
await authTabLoadedShareURL;
Assert.equal(
gBrowser.selectedTab,
authTab,
"Auth-complete tab is the selected tab"
);
Assert.equal(
authTab.linkedBrowser.currentURI.spec,
server.mockShareURL,
"Auth-complete tab navigated to the share URL"
);
BrowserTestUtils.removeTab(authTab);
gBrowser.removeTabs(sharedTabs);
clearCookies();
});
});