fune/remote/test/browser/browser_page_javascriptDialog_alert.js
Andreas Tolfsen 37c8f955e6 bug 1570378: remote: add bc test helper setup() for empty documents r=remote-protocol-reviewers,jdescottes
For many browser-chrome (bc) tests is does not matter what the
document is, as long as it is does not cause state to bleed over
from the previous test.

For these cases this patch introduces a shorthand, setup(), which
calls setupForURL(url) with an empty document generated by toDataURL("").

Differential Revision: https://phabricator.services.mozilla.com/D40216

--HG--
extra : moz-landing-system : lando
2019-08-05 11:43:58 +00:00

67 lines
2.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() {
const { client, tab } = await setup();
const { Page } = client;
info("Enable the page domain");
await Page.enable();
info("Set window.alertIsClosed to false in the content page");
await ContentTask.spawn(gBrowser.selectedBrowser, null, () => {
// 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 ContentTask.spawn(gBrowser.selectedBrowser, null, () => {
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");
await client.close();
ok(true, "The client is closed");
BrowserTestUtils.removeTab(tab);
await RemoteAgent.close();
});
function createAlertDialog(Page) {
const onDialogOpen = Page.javascriptDialogOpening();
info("Trigger an alert in the test page");
ContentTask.spawn(gBrowser.selectedBrowser, null, () => {
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;
}