summaryrefslogtreecommitdiffstats
path: root/remote/cdp/test/browser/page/browser_javascriptDialog_otherTarget.js
diff options
context:
space:
mode:
Diffstat (limited to 'remote/cdp/test/browser/page/browser_javascriptDialog_otherTarget.js')
-rw-r--r--remote/cdp/test/browser/page/browser_javascriptDialog_otherTarget.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/remote/cdp/test/browser/page/browser_javascriptDialog_otherTarget.js b/remote/cdp/test/browser/page/browser_javascriptDialog_otherTarget.js
new file mode 100644
index 0000000000..c57f5d5151
--- /dev/null
+++ b/remote/cdp/test/browser/page/browser_javascriptDialog_otherTarget.js
@@ -0,0 +1,50 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const { PromptTestUtils } = ChromeUtils.importESModule(
+ "resource://testing-common/PromptTestUtils.sys.mjs"
+);
+
+// Test that javascript dialog events are emitted by the page domain only if
+// the dialog is created for the window of the target.
+add_task(async function ({ client }) {
+ const { Page } = client;
+
+ info("Enable the page domain");
+ await Page.enable();
+
+ // Add a listener for dialogs on the test page.
+ Page.javascriptDialogOpening(() => {
+ ok(false, "Should never receive this event");
+ });
+
+ info("Open another tab");
+ const otherTab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ toDataURL("test-page")
+ );
+ is(gBrowser.selectedTab, otherTab, "Selected tab is now the new tab");
+
+ // Create a promise that resolve when dialog prompt is created.
+ // It will also take care of closing the dialog.
+ let onOtherPageDialog = PromptTestUtils.handleNextPrompt(
+ gBrowser.selectedBrowser,
+ { modalType: Services.prompt.MODAL_TYPE_CONTENT, promptType: "alert" },
+ { buttonNumClick: 0 }
+ );
+
+ info("Trigger an alert in the second page");
+ SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {
+ content.alert("test");
+ });
+
+ info("Wait for the alert to be detected and closed");
+ await onOtherPageDialog;
+
+ info("Call bringToFront on the test page to make sure we received");
+ await Page.bringToFront();
+
+ BrowserTestUtils.removeTab(otherTab);
+});