4 <title>Test to fire contextmenu event by widget level
</title>
5 <script src=
"/tests/SimpleTest/EventUtils.js"></script>
6 <script src=
"/tests/SimpleTest/SimpleTest.js"></script>
7 <script src=
"/tests/SimpleTest/SpecialPowers.js"></script>
8 <link rel=
"stylesheet" type=
"text/css" href=
"/tests/SimpleTest/test.css">
13 background-color: blue;
18 add_task(async
function test_fire_contextmenu_by_mousedown() {
19 await SpecialPowers
.pushPrefEnv({
20 set: [["ui.context_menus.after_mouseup", false]],
22 await SimpleTest
.promiseFocus();
24 // contextmenu event is fired by mouse down.
25 await
process_contextmenu_event({ isMousedown
: true, preventEvent
: false });
26 // contextmenu event is fired by mouse down even if mouse handler calls preventDefault.
27 await
process_contextmenu_event({ isMousedown
: true, preventEvent
: true });
30 add_task(async
function test_fire_contextmenu_by_mouseup() {
31 await SpecialPowers
.pushPrefEnv({
32 set: [["ui.context_menus.after_mouseup", true]],
34 await SimpleTest
.promiseFocus();
36 // contextmenu event is fired by mouse up.
37 await
process_contextmenu_event({ isMousedown
: false, preventEvent
: false });
38 // contextmenu event is fired by mouse up even if mouse handler calls preventDefault.
39 await
process_contextmenu_event({ isMousedown
: false, preventEvent
: true });
42 async
function process_contextmenu_event({ isMousedown
, preventEvent
}) {
43 await SpecialPowers
.contentTransformsReceived(window
);
45 const target
= document
.getElementById("target");
49 const promise
= new Promise(resolve
=> {
50 target
.addEventListener("mousedown", e
=> {
51 is(e
.buttons
, 2, "The right button down should be fired");
52 is(count
++, 0, "The first event is mousedown");
53 if (isMousedown
&& preventEvent
) {
59 target
.addEventListener("contextmenu", e
=> {
60 is(count
++, 1, "The second event is contextmenu");
63 target
.addEventListener("mouseup", () => {
64 is(count
++, 2, "The third event is mouseup");
68 target
.addEventListener("mouseup", e
=> {
69 is(count
++, 1, "The second event is mouseup");
74 target
.addEventListener("contextmenu", e
=> {
75 is(count
++, 2, "The third event is contextmenu");
82 synthesizeNativeMouseEvent({
90 synthesizeNativeMouseEvent({
103 <div id=
"target"></div>