59 lines
2 KiB
JavaScript
59 lines
2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
// Test a browser alert is detected via Page.javascriptDialogOpening and can be
|
|
// closed with Page.handleJavaScriptDialog
|
|
add_task(async function ({ client }) {
|
|
const { Page } = client;
|
|
|
|
info("Enable the page domain");
|
|
await Page.enable();
|
|
|
|
info("Set window.alertIsClosed to false in the content page");
|
|
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {
|
|
// This boolean will be flipped after closing the dialog
|
|
content.alertIsClosed = false;
|
|
});
|
|
|
|
info("Create an alert dialog again");
|
|
const { message, type } = await createAlertDialog(Page);
|
|
is(type, "alert", "dialog event contains the correct type");
|
|
is(message, "test-1234", "dialog event contains the correct text");
|
|
|
|
info("Close the dialog with accept:false");
|
|
await Page.handleJavaScriptDialog({ accept: false });
|
|
|
|
info("Retrieve the alertIsClosed boolean on the content window");
|
|
let alertIsClosed = await getContentProperty("alertIsClosed");
|
|
ok(alertIsClosed, "The content process is no longer blocked on the alert");
|
|
|
|
info("Reset window.alertIsClosed to false in the content page");
|
|
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {
|
|
content.alertIsClosed = false;
|
|
});
|
|
|
|
info("Create an alert dialog again");
|
|
await createAlertDialog(Page);
|
|
|
|
info("Close the dialog with accept:true");
|
|
await Page.handleJavaScriptDialog({ accept: true });
|
|
|
|
alertIsClosed = await getContentProperty("alertIsClosed");
|
|
ok(alertIsClosed, "The content process is no longer blocked on the alert");
|
|
});
|
|
|
|
function createAlertDialog(Page) {
|
|
const onDialogOpen = Page.javascriptDialogOpening();
|
|
|
|
info("Trigger an alert in the test page");
|
|
SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {
|
|
content.alert("test-1234");
|
|
// Flip a boolean in the content page to check if the content process resumed
|
|
// after the alert was opened.
|
|
content.alertIsClosed = true;
|
|
});
|
|
|
|
return onDialogOpen;
|
|
}
|