gecko-dev/browser/base/content/test/tabdialogs/browser_subdialog_esc.js

56 lines
1.6 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const TEST_ROOT_CHROME = getRootDirectory(gTestPath);
const TEST_DIALOG_PATH = TEST_ROOT_CHROME + "subdialog.xhtml";
const WEB_ROOT = TEST_ROOT_CHROME.replace(
"chrome://mochitests/content",
"http://example.com"
);
const TEST_LOAD_PAGE = WEB_ROOT + "loadDelayedReply.sjs";
/**
* Tests that ESC on a SubDialog does not cancel ongoing loads in the parent.
*/
add_task(async function test_subdialog_esc_does_not_cancel_load() {
await BrowserTestUtils.withNewTab("http://example.com", async function(
browser
) {
// Start loading a page
let loadStartedPromise = BrowserTestUtils.loadURI(browser, TEST_LOAD_PAGE);
let loadedPromise = BrowserTestUtils.browserLoaded(browser);
await loadStartedPromise;
// Open a dialog
let dialogBox = gBrowser.getTabDialogBox(browser);
let dialogClose = dialogBox.open(TEST_DIALOG_PATH, {
keepOpenSameOriginNav: true,
});
let dialogs = dialogBox._dialogManager._dialogs;
is(dialogs.length, 1, "Dialog manager has a dialog.");
info("Waiting for dialogs to open.");
await dialogs[0]._dialogReady;
// Close the dialog with esc key
EventUtils.synthesizeKey("KEY_Escape");
info("Waiting for dialog to close.");
await dialogClose;
info("Triggering load complete");
fetch(TEST_LOAD_PAGE, {
method: "POST",
});
// Load must complete
info("Waiting for load to complete");
await loadedPromise;
ok(true, "Load completed");
});
});