forked from mirrors/gecko-dev
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
67 lines
2.2 KiB
JavaScript
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;
|
|
}
|