forked from mirrors/gecko-dev
164 lines
4.4 KiB
JavaScript
164 lines
4.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* Execute the provided script content by generating a dynamic script tag and
|
|
* inserting it in the page for the current selected browser.
|
|
*
|
|
* @param {string} script
|
|
* The script to execute.
|
|
* @returns {Promise}
|
|
* A promise that resolves when the script node was added and removed from
|
|
* the content page.
|
|
*/
|
|
function createScriptNode(script) {
|
|
return SpecialPowers.spawn(
|
|
gBrowser.selectedBrowser,
|
|
[script],
|
|
function (_script) {
|
|
const scriptTag = content.document.createElement("script");
|
|
scriptTag.append(content.document.createTextNode(_script));
|
|
content.document.body.append(scriptTag);
|
|
}
|
|
);
|
|
}
|
|
|
|
add_task(
|
|
async function test_close_prompt_event_detail_accepted_with_default_value() {
|
|
const closed = BrowserTestUtils.waitForEvent(
|
|
window,
|
|
"DOMModalDialogClosed"
|
|
);
|
|
|
|
const promptPromise = BrowserTestUtils.promiseAlertDialogOpen();
|
|
|
|
const defaultValue = "Default value";
|
|
await createScriptNode(
|
|
`setTimeout(() => window.prompt('Enter your name:', '${defaultValue}'))`
|
|
);
|
|
const promptWin = await promptPromise;
|
|
|
|
info("accepting prompt with default value.");
|
|
promptWin.document.querySelector("dialog").acceptDialog();
|
|
|
|
const closedEvent = await closed;
|
|
|
|
is(
|
|
closedEvent.detail.areLeaving,
|
|
true,
|
|
"Received correct `areLeaving` value in the event detail"
|
|
);
|
|
is(
|
|
closedEvent.detail.value,
|
|
defaultValue,
|
|
"Received correct `value` value in the event detail"
|
|
);
|
|
}
|
|
);
|
|
|
|
add_task(
|
|
async function test_close_prompt_event_detail_accepted_with_amended_default_value() {
|
|
const closed = BrowserTestUtils.waitForEvent(
|
|
window,
|
|
"DOMModalDialogClosed"
|
|
);
|
|
|
|
const promptPromise = BrowserTestUtils.promiseAlertDialogOpen();
|
|
|
|
const defaultValue = "Default value";
|
|
await createScriptNode(
|
|
`setTimeout(() => window.prompt('Enter your name:', '${defaultValue}'))`
|
|
);
|
|
const promptWin = await promptPromise;
|
|
|
|
const amendedValue = "Test";
|
|
promptWin.document.getElementById("loginTextbox").value = amendedValue;
|
|
|
|
info("accepting prompt with amended value.");
|
|
promptWin.document.querySelector("dialog").acceptDialog();
|
|
|
|
const closedEvent = await closed;
|
|
|
|
is(
|
|
closedEvent.detail.areLeaving,
|
|
true,
|
|
"Received correct `areLeaving` value in the event detail"
|
|
);
|
|
is(
|
|
closedEvent.detail.value,
|
|
amendedValue,
|
|
"Received correct `value` value in the event detail"
|
|
);
|
|
}
|
|
);
|
|
|
|
add_task(
|
|
async function test_close_prompt_event_detail_dismissed_with_default_value() {
|
|
const closed = BrowserTestUtils.waitForEvent(
|
|
window,
|
|
"DOMModalDialogClosed"
|
|
);
|
|
|
|
const promptPromise = BrowserTestUtils.promiseAlertDialogOpen();
|
|
|
|
const defaultValue = "Default value";
|
|
await createScriptNode(
|
|
`setTimeout(() => window.prompt('Enter your name:', '${defaultValue}'))`
|
|
);
|
|
const promptWin = await promptPromise;
|
|
|
|
info("Dismissing prompt with default value.");
|
|
promptWin.document.querySelector("dialog").cancelDialog();
|
|
|
|
const closedEvent = await closed;
|
|
|
|
is(
|
|
closedEvent.detail.areLeaving,
|
|
false,
|
|
"Received correct `areLeaving` value in the event detail"
|
|
);
|
|
is(
|
|
closedEvent.detail.value,
|
|
null,
|
|
"Received correct `value` value in the event detail"
|
|
);
|
|
}
|
|
);
|
|
|
|
add_task(
|
|
async function test_close_prompt_event_detail_dismissed_with_amended_default_value() {
|
|
const closed = BrowserTestUtils.waitForEvent(
|
|
window,
|
|
"DOMModalDialogClosed"
|
|
);
|
|
|
|
const promptPromise = BrowserTestUtils.promiseAlertDialogOpen();
|
|
|
|
const defaultValue = "Default value";
|
|
await createScriptNode(
|
|
`setTimeout(() => window.prompt('Enter your name:', '${defaultValue}'))`
|
|
);
|
|
const promptWin = await promptPromise;
|
|
|
|
const amendedValue = "Test";
|
|
promptWin.document.getElementById("loginTextbox").value = amendedValue;
|
|
|
|
info("Dismissing prompt with amended value.");
|
|
promptWin.document.querySelector("dialog").cancelDialog();
|
|
|
|
const closedEvent = await closed;
|
|
|
|
is(
|
|
closedEvent.detail.areLeaving,
|
|
false,
|
|
"Received correct `areLeaving` value in the event detail"
|
|
);
|
|
is(
|
|
closedEvent.detail.value,
|
|
null,
|
|
"Received correct `value` value in the event detail"
|
|
);
|
|
}
|
|
);
|