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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
/* Make sure that the context menu appears on form elements */
add_task(async function () {
await BrowserTestUtils.openNewForegroundTab(gBrowser, "data:text/html,test");
let contentAreaContextMenu = document.getElementById(
"contentAreaContextMenu"
);
let tests = [
{ element: "input", type: "text" },
{ element: "input", type: "password" },
{ element: "input", type: "image" },
{ element: "input", type: "button" },
{ element: "input", type: "submit" },
{ element: "input", type: "reset" },
{ element: "input", type: "checkbox" },
{ element: "input", type: "radio" },
{ element: "button" },
{ element: "select" },
{ element: "option" },
{ element: "optgroup" },
];
for (let index = 0; index < tests.length; index++) {
let test = tests[index];
await SpecialPowers.spawn(
gBrowser.selectedBrowser,
[{ element: test.element, type: test.type, index }],
async function (arg) {
let element = content.document.createElement(arg.element);
element.id = "element" + arg.index;
if (arg.type) {
element.setAttribute("type", arg.type);
}
content.document.body.appendChild(element);
}
);
let popupShownPromise = BrowserTestUtils.waitForEvent(
contentAreaContextMenu,
"popupshown"
);
await BrowserTestUtils.synthesizeMouseAtCenter(
"#element" + index,
{ type: "contextmenu", button: 2 },
gBrowser.selectedBrowser
);
await popupShownPromise;
let typeAttr = test.type ? "type=" + test.type + " " : "";
is(
gContextMenu.shouldDisplay,
true,
"context menu behavior for <" +
test.element +
" " +
typeAttr +
"> is wrong"
);
let popupHiddenPromise = BrowserTestUtils.waitForEvent(
contentAreaContextMenu,
"popuphidden"
);
contentAreaContextMenu.hidePopup();
await popupHiddenPromise;
}
gBrowser.removeCurrentTab();
});
|