test_bug632379.xhtml (7459B)
1 <?xml version="1.0"?> 2 <?xml-stylesheet href="chrome://global/skin" type="text/css"?> 3 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?> 4 <!-- 5 https://bugzilla.mozilla.org/show_bug.cgi?id=632379 6 --> 7 <window title="Mozilla Bug 632379" 8 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 9 10 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> 11 <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> 12 13 <style xmlns="http://www.w3.org/1999/xhtml"><![CDATA[ 14 menuitem { height: 19px; box-sizing: border-box } 15 ]]></style> 16 17 <toolbox flex="1"> 18 <menubar> 19 <menu label="MENU" accesskey="m" id="mainMenu"> 20 <menupopup maxheight="100" onpopupshown="openSubmenu(this, event)"> 21 <menu label="menu1" accesskey="1" id="menu1"> 22 <menupopup onpopupshown="snapshot(this)"> 23 <menuitem label="item"/> 24 <menuitem label="item"/> 25 <menuitem label="item"/> 26 <menuitem label="item"/> 27 <menuitem label="item"/> 28 <menuitem label="item"/> 29 <menuitem label="item"/> 30 <menuitem label="item"/> 31 <menuitem label="item"/> 32 <menuitem label="item"/> 33 <menuitem label="item"/> 34 </menupopup> 35 </menu> 36 <menu label="menu2" accesskey="2" id="menu2"> 37 <menupopup onpopupshown="snapshot(this)"> 38 <menuitem label="item"/> 39 <menuitem label="item"/> 40 <menuitem label="item"/> 41 <menuitem label="item"/> 42 <menuitem label="item"/> 43 <menuitem label="item"/> 44 <menuitem label="item"/> 45 <menuitem label="item"/> 46 <menuitem label="item"/> 47 <menuitem label="item"/> 48 <menuitem label="item"/> 49 </menupopup> 50 </menu> 51 <menu label="menu3" accesskey="3" id="menu3"> 52 <menupopup onpopupshown="snapshot(this)"> 53 <menuitem label="item"/> 54 <menuitem label="item"/> 55 <menuitem label="item"/> 56 <menuitem label="item"/> 57 <menuitem label="item"/> 58 <menuitem label="item"/> 59 <menuitem label="item"/> 60 <menuitem label="item"/> 61 <menuitem label="item"/> 62 <menuitem label="item"/> 63 <menuitem label="item"/> 64 </menupopup> 65 </menu> 66 <menu label="menu4" accesskey="4" id="menu4"> 67 <menupopup onpopupshown="snapshot(this)"> 68 <menuitem label="item"/> 69 <menuitem label="item"/> 70 <menuitem label="item"/> 71 <menuitem label="item"/> 72 <menuitem label="item"/> 73 <menuitem label="item"/> 74 <menuitem label="item"/> 75 <menuitem label="item"/> 76 <menuitem label="item"/> 77 <menuitem label="item"/> 78 <menuitem label="item"/> 79 </menupopup> 80 </menu> 81 <menu label="menu5" accesskey="5" id="menu5"> 82 <menupopup onpopupshown="snapshot(this)"> 83 <menuitem label="item"/> 84 <menuitem label="item"/> 85 <menuitem label="item"/> 86 <menuitem label="item"/> 87 <menuitem label="item"/> 88 <menuitem label="item"/> 89 <menuitem label="item"/> 90 <menuitem label="item"/> 91 <menuitem label="item"/> 92 <menuitem label="item"/> 93 <menuitem label="item"/> 94 </menupopup> 95 </menu> 96 <menu label="menu6" accesskey="6" id="menu6"> 97 <menupopup onpopupshown="snapshot(this)"> 98 <menuitem label="item"/> 99 <menuitem label="item"/> 100 <menuitem label="item"/> 101 <menuitem label="item"/> 102 <menuitem label="item"/> 103 <menuitem label="item"/> 104 <menuitem label="item"/> 105 <menuitem label="item"/> 106 <menuitem label="item"/> 107 <menuitem label="item"/> 108 <menuitem label="item"/> 109 </menupopup> 110 </menu> 111 <menu label="menu7" accesskey="7" id="menu7"> 112 <menupopup onpopupshown="snapshot(this)"> 113 <menuitem label="item"/> 114 <menuitem label="item"/> 115 <menuitem label="item"/> 116 <menuitem label="item"/> 117 <menuitem label="item"/> 118 <menuitem label="item"/> 119 <menuitem label="item"/> 120 <menuitem label="item"/> 121 <menuitem label="item"/> 122 <menuitem label="item"/> 123 <menuitem label="item"/> 124 </menupopup> 125 </menu> 126 <menu label="menu8" accesskey="8" id="menu8"> 127 <menupopup onpopupshown="snapshot(this)"> 128 <menuitem label="item"/> 129 <menuitem label="item"/> 130 <menuitem label="item"/> 131 <menuitem label="item"/> 132 <menuitem label="item"/> 133 <menuitem label="item"/> 134 <menuitem label="item"/> 135 <menuitem label="item"/> 136 <menuitem label="item"/> 137 <menuitem label="item"/> 138 <menuitem label="item"/> 139 </menupopup> 140 </menu> 141 <menu label="menu9" accesskey="9" id="menu9"> 142 <menupopup onpopupshown="snapshot(this)"> 143 <menuitem label="item"/> 144 <menuitem label="item"/> 145 <menuitem label="item"/> 146 <menuitem label="item"/> 147 <menuitem label="item"/> 148 <menuitem label="item"/> 149 <menuitem label="item"/> 150 <menuitem label="item"/> 151 <menuitem label="item"/> 152 <menuitem label="item"/> 153 <menuitem label="item"/> 154 </menupopup> 155 </menu> 156 </menupopup> 157 </menu> 158 </menubar> 159 </toolbox> 160 161 <body xmlns="http://www.w3.org/1999/xhtml"> 162 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=632379">Mozilla Bug 632379</a> 163 164 <p id="display"></p> 165 <div id="content" style="display: none"> 166 </div> 167 </body> 168 169 170 <script class="testbody" type="application/javascript"><![CDATA[ 171 172 var gFinished = false; 173 174 /** Test for Bug 632379 */ 175 // Tests whether scrolling a menu affects the position at which popups appear 176 var pos = new Array(2); 177 var count=0; 178 179 function snapshot(elem) 180 { 181 info(`snapshot(${elem.parentNode.id}) called`); 182 pos[count] = elem.getBoundingClientRect().top; 183 info(elem.querySelector("menuitem").getBoundingClientRect().height); 184 ++count; 185 if (count <= 1) { 186 // close the submenu and open the bottom submenu 187 synthesizeKey("KEY_ArrowLeft"); 188 sendString("9"); 189 } else { 190 if (!navigator.platform.includes("Mac")) { 191 is(pos[1], pos[0], `Popup ${elem.parentNode.id} should open in the same place when the menu is scrolled`); 192 } else { 193 todo(false, "This test fails on Mac since it was ported to chrome: Bug 668716."); 194 } 195 info("Test finished"); 196 gFinished = true; 197 SimpleTest.finish(); 198 } 199 } 200 201 function doTest() { 202 info("doTest() called"); 203 // open the top-level menu 204 $("mainMenu").open = true; 205 } 206 207 function openSubmenu(mainMenu, e) 208 { 209 if (e.originalTarget != mainMenu) { 210 return; 211 } 212 info("openSubmenu() called"); 213 // open a submenu in the middle 214 sendString("5"); 215 } 216 217 SimpleTest.waitForExplicitFinish(); 218 info("Wait for focus"); 219 SimpleTest.waitForFocus(doTest); 220 221 ]]></script> 222 </window>