test_submenuClose.xhtml (2668B)
1 <?xml version="1.0"?> 2 <?xml-stylesheet type="text/css" href="chrome://global/skin"?> 3 <?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?> 4 <!-- 5 https://bugzilla.mozilla.org/show_bug.cgi?id=1181560 6 --> 7 <window title="Mozilla Bug 1181560" 8 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 9 onload="SimpleTest.waitForFocus(nextTest, window)"> 10 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> 11 <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/> 12 13 14 <!-- test results are displayed in the html:body --> 15 <body xmlns="http://www.w3.org/1999/xhtml"> 16 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1181560" 17 target="_blank">Mozilla Bug 1181560</a> 18 </body> 19 20 <vbox> 21 <menubar> 22 <menu id="menu" label="MyMenu"> 23 <menupopup> 24 <menuitem label="A"/> 25 <menu id="b" label="B"> 26 <menupopup> 27 <menuitem label="B1"/> 28 </menupopup> 29 </menu> 30 <menu id="c" label="C"> 31 <menupopup> 32 <menuitem label="C1"/> 33 </menupopup> 34 </menu> 35 </menupopup> 36 </menu> 37 </menubar> 38 </vbox> 39 40 <!-- test code goes here --> 41 <script type="application/javascript"> 42 <![CDATA[ 43 /** Test for Bug 1181560 */ 44 SimpleTest.waitForExplicitFinish(); 45 46 let menuB, menuC, mainMenu, menuBOpen, menuCOpen; 47 let menuBOpenCount = 0; 48 49 function handleBOpens() { 50 menuBOpenCount++; 51 menuBOpen = true; 52 ok(!menuCOpen, "Menu C should not be open when menu B has opened"); 53 if (menuBOpenCount >= 2) { 54 SimpleTest.finish(); 55 return; 56 } 57 sendKey("LEFT", window); 58 sendKey("DOWN", window); 59 sendKey("RIGHT", window); 60 } 61 62 function handleBCloses() { 63 menuBOpen = false; 64 } 65 66 function handleCOpens() { 67 menuCOpen = true; 68 ok(!menuBOpen, "Menu B should not be open when menu C has opened"); 69 synthesizeMouseAtCenter(menuB, {}, window); 70 } 71 72 function handleCCloses() { 73 menuCOpen = false; 74 } 75 76 function nextTest(e) { 77 mainMenu = document.getElementById("menu"); 78 menuB = document.getElementById("b"); 79 menuC = document.getElementById("c"); 80 menuB.menupopup.addEventListener("popupshown", handleBOpens); 81 menuB.menupopup.addEventListener("popuphidden", handleBCloses); 82 menuC.menupopup.addEventListener("popupshown", handleCOpens); 83 menuC.menupopup.addEventListener("popuphidden", handleCCloses); 84 mainMenu.addEventListener("popupshown", ev => { 85 synthesizeMouseAtCenter(menuB, {}, window); 86 }); 87 mainMenu.open = true; 88 } 89 ]]> 90 </script> 91 </window>