forked from mirrors/gecko-dev
MozReview-Commit-ID: Ha3w2g17BP0 --HG-- extra : rebase_source : 2aac4544a50621648405f0d05e1fa71189c92a88
119 lines
4.4 KiB
JavaScript
119 lines
4.4 KiB
JavaScript
"use strict";
|
|
|
|
add_task(setupPrefsAndRecentWindowBehavior);
|
|
|
|
// Each of the test cases below is run twice: once for login-success and once
|
|
// for login-abort (aSuccess set to true and false respectively).
|
|
let testCasesForBothSuccessAndAbort = [
|
|
/**
|
|
* A portal is detected when there's no browser window, then a browser
|
|
* window is opened, then the portal is freed.
|
|
* The portal tab should be added and focused when the window is
|
|
* opened, and closed automatically when the success event is fired.
|
|
* The captive portal notification should be shown when the window is
|
|
* opened, and closed automatically when the success event is fired.
|
|
*/
|
|
function* test_detectedWithNoBrowserWindow_Open(aSuccess) {
|
|
yield portalDetected();
|
|
let win = yield focusWindowAndWaitForPortalUI();
|
|
yield freePortal(aSuccess);
|
|
ensureNoPortalTab(win);
|
|
ensureNoPortalNotification(win);
|
|
yield closeWindowAndWaitForXulWindowVisible(win);
|
|
},
|
|
|
|
/**
|
|
* A portal is detected when multiple browser windows are open but none
|
|
* have focus. A brower window is focused, then the portal is freed.
|
|
* The portal tab should be added and focused when the window is
|
|
* focused, and closed automatically when the success event is fired.
|
|
* The captive portal notification should be shown in all windows upon
|
|
* detection, and closed automatically when the success event is fired.
|
|
*/
|
|
function* test_detectedWithNoBrowserWindow_Focused(aSuccess) {
|
|
let win1 = yield openWindowAndWaitForFocus();
|
|
let win2 = yield openWindowAndWaitForFocus();
|
|
// Defocus both windows.
|
|
yield SimpleTest.promiseFocus(window);
|
|
|
|
yield portalDetected();
|
|
|
|
// Notification should be shown in both windows.
|
|
ensurePortalNotification(win1);
|
|
ensureNoPortalTab(win1);
|
|
ensurePortalNotification(win2);
|
|
ensureNoPortalTab(win2);
|
|
|
|
yield focusWindowAndWaitForPortalUI(false, win2);
|
|
|
|
yield freePortal(aSuccess);
|
|
|
|
ensureNoPortalNotification(win1);
|
|
ensureNoPortalTab(win2);
|
|
ensureNoPortalNotification(win2);
|
|
|
|
yield closeWindowAndWaitForXulWindowVisible(win2);
|
|
// No need to wait for xul-window-visible: after win2 is closed, focus
|
|
// is restored to the default window and win1 remains in the background.
|
|
yield BrowserTestUtils.closeWindow(win1);
|
|
},
|
|
|
|
/**
|
|
* A portal is detected when there's no browser window, then a browser
|
|
* window is opened, then the portal is freed.
|
|
* The recheck triggered when the browser window is opened takes a
|
|
* long time. No portal tab should be added.
|
|
* The captive portal notification should be shown when the window is
|
|
* opened, and closed automatically when the success event is fired.
|
|
*/
|
|
function* test_detectedWithNoBrowserWindow_LongRecheck(aSuccess) {
|
|
yield portalDetected();
|
|
let win = yield focusWindowAndWaitForPortalUI(true);
|
|
yield freePortal(aSuccess);
|
|
ensureNoPortalTab(win);
|
|
ensureNoPortalNotification(win);
|
|
yield closeWindowAndWaitForXulWindowVisible(win);
|
|
},
|
|
|
|
/**
|
|
* A portal is detected when there's no browser window, and the
|
|
* portal is freed before a browser window is opened. No portal
|
|
* UI should be shown when a browser window is opened.
|
|
*/
|
|
function* test_detectedWithNoBrowserWindow_GoneBeforeOpen(aSuccess) {
|
|
yield portalDetected();
|
|
yield freePortal(aSuccess);
|
|
let win = yield openWindowAndWaitForFocus();
|
|
// Wait for a while to make sure no UI is shown.
|
|
yield new Promise(resolve => {
|
|
setTimeout(resolve, 1000);
|
|
});
|
|
ensureNoPortalTab(win);
|
|
ensureNoPortalNotification(win);
|
|
yield closeWindowAndWaitForXulWindowVisible(win);
|
|
},
|
|
|
|
/**
|
|
* A portal is detected when a browser window has focus. No portal tab should
|
|
* be opened. A notification bar should be displayed in all browser windows.
|
|
*/
|
|
function* test_detectedWithFocus(aSuccess) {
|
|
let win1 = yield openWindowAndWaitForFocus();
|
|
let win2 = yield openWindowAndWaitForFocus();
|
|
yield portalDetected();
|
|
ensureNoPortalTab(win1);
|
|
ensureNoPortalTab(win2);
|
|
ensurePortalNotification(win1);
|
|
ensurePortalNotification(win2);
|
|
yield freePortal(aSuccess);
|
|
ensureNoPortalNotification(win1);
|
|
ensureNoPortalNotification(win2);
|
|
yield closeWindowAndWaitForXulWindowVisible(win2);
|
|
yield closeWindowAndWaitForXulWindowVisible(win1);
|
|
},
|
|
];
|
|
|
|
for (let testcase of testCasesForBothSuccessAndAbort) {
|
|
add_task(testcase.bind(null, true));
|
|
add_task(testcase.bind(null, false));
|
|
}
|