summaryrefslogtreecommitdiffstats
path: root/remote/cdp/test/browser/page/browser_javascriptDialog_alert.js
diff options
context:
space:
mode:
Diffstat (limited to 'remote/cdp/test/browser/page/browser_javascriptDialog_alert.js')
-rw-r--r--remote/cdp/test/browser/page/browser_javascriptDialog_alert.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/remote/cdp/test/browser/page/browser_javascriptDialog_alert.js b/remote/cdp/test/browser/page/browser_javascriptDialog_alert.js
new file mode 100644
index 0000000000..40c5e4898a
--- /dev/null
+++ b/remote/cdp/test/browser/page/browser_javascriptDialog_alert.js
@@ -0,0 +1,59 @@
+/* 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;
+}