browser_bug424101.js (2129B)
1 /* Make sure that the context menu appears on form elements */ 2 3 add_setup(async function () { 4 await SpecialPowers.pushPrefEnv({ 5 set: [["test.wait300msAfterTabSwitch", true]], 6 }); 7 }); 8 9 add_task(async function () { 10 await BrowserTestUtils.openNewForegroundTab(gBrowser, "data:text/html,test"); 11 12 let contentAreaContextMenu = document.getElementById( 13 "contentAreaContextMenu" 14 ); 15 16 let tests = [ 17 { element: "input", type: "text" }, 18 { element: "input", type: "password" }, 19 { element: "input", type: "image" }, 20 { element: "input", type: "button" }, 21 { element: "input", type: "submit" }, 22 { element: "input", type: "reset" }, 23 { element: "input", type: "checkbox" }, 24 { element: "input", type: "radio" }, 25 { element: "button" }, 26 { element: "select" }, 27 { element: "option" }, 28 { element: "optgroup" }, 29 ]; 30 31 for (let index = 0; index < tests.length; index++) { 32 let test = tests[index]; 33 34 await SpecialPowers.spawn( 35 gBrowser.selectedBrowser, 36 [{ element: test.element, type: test.type, index }], 37 async function (arg) { 38 let element = content.document.createElement(arg.element); 39 element.id = "element" + arg.index; 40 if (arg.type) { 41 element.setAttribute("type", arg.type); 42 } 43 content.document.body.appendChild(element); 44 } 45 ); 46 47 let popupShownPromise = BrowserTestUtils.waitForEvent( 48 contentAreaContextMenu, 49 "popupshown" 50 ); 51 await BrowserTestUtils.synthesizeMouseAtCenter( 52 "#element" + index, 53 { type: "contextmenu", button: 2 }, 54 gBrowser.selectedBrowser 55 ); 56 await popupShownPromise; 57 58 let typeAttr = test.type ? "type=" + test.type + " " : ""; 59 is( 60 gContextMenu.shouldDisplay, 61 true, 62 "context menu behavior for <" + 63 test.element + 64 " " + 65 typeAttr + 66 "> is wrong" 67 ); 68 69 let popupHiddenPromise = BrowserTestUtils.waitForEvent( 70 contentAreaContextMenu, 71 "popuphidden" 72 ); 73 contentAreaContextMenu.hidePopup(); 74 await popupHiddenPromise; 75 } 76 77 gBrowser.removeCurrentTab(); 78 });