blob: c57f5d5151a83f4598dc14aa76943ef10d7e4100 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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);
});
|