mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-10-31 16:28:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* 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();
 | |
| });
 | 
