| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE html> | |
| 2 <head> | |
| 3 <script src="../../resources/js-test.js"></script> | |
| 4 </head> | |
| 5 <button id="button" style="height: 100px; width: 100px;"> | |
| 6 </button> | |
| 7 <button id="button_with_contextmenu" contextmenu="menu_id" style="height: 100px;
width: 100px;"> | |
| 8 <menu id="menu_id" type="ConText"> | |
| 9 <!-- Test removal of separator at the start. --> | |
| 10 <hr> | |
| 11 <menuitem label="Item1"></menuitem> | |
| 12 <!-- Test disabled menuitem. --> | |
| 13 <menuitem label="Item2" disabled></menuitem> | |
| 14 <!-- Test addition of separator for <hr>. --> | |
| 15 <hr> | |
| 16 <menuitem label="Item3"></menuitem> | |
| 17 <!-- Test child menu with label. --> | |
| 18 <menu label="Submenu"> | |
| 19 <menuitem label="Item4"></menuitem> | |
| 20 <menu label="Deeper submenu"> | |
| 21 <!-- Test removal of separator at the start inside submenu. --> | |
| 22 <hr> | |
| 23 <menuitem label="Item5"></menuitem> | |
| 24 <hr> | |
| 25 <menuitem label="Item6"></menuitem> | |
| 26 <!-- Test removal of separator at the end inside submenu. --> | |
| 27 <hr> | |
| 28 </menu> | |
| 29 </menu> | |
| 30 <menuitem label="Item7"></menuitem> | |
| 31 <!-- Test child menu without label. --> | |
| 32 <menu> | |
| 33 <menuitem label="Item8"></menuitem> | |
| 34 <!-- Test child menu with empty label. --> | |
| 35 <menu label=""> | |
| 36 <menuitem label="Item9"></menuitem> | |
| 37 <menuitem label="Item10"></menuitem> | |
| 38 </menu> | |
| 39 <menuitem label="Item11"></menuitem> | |
| 40 <menuitem label="Item12"></menuitem> | |
| 41 </menu> | |
| 42 <!-- Test collapsing two or more adjacent separators. --> | |
| 43 <hr> | |
| 44 <hr> | |
| 45 <hr> | |
| 46 <hr> | |
| 47 <!-- Test menuitem menu without label. --> | |
| 48 <menuitem></menuitem> | |
| 49 <!-- Test menuitem menu with empty label. --> | |
| 50 <menuitem label=""></menuitem> | |
| 51 <menuitem label="Item13"></menuitem> | |
| 52 <!-- Test menuitem of type "checkbox" without "checked" attribute. --> | |
| 53 <menuitem type="checkbox" label="Item14"></menuitem> | |
| 54 <!-- Test menuitem of type "checkbox" with "checked" attribute. --> | |
| 55 <menuitem type="checkbox" label="Item15" checked></menuitem> | |
| 56 <!-- Test default menuitem with "checked" attribute. --> | |
| 57 <menuitem label="Item16" checked></menuitem> | |
| 58 <!-- Test menuitem of type "radio" with "checked" attribute. --> | |
| 59 <menuitem type="radio" radiogroup="group" label="Item17"></menuitem> | |
| 60 <menuitem type="radio" radiogroup="group" label="Item18" checked></menui
tem> | |
| 61 <menuitem type="radio" radiogroup="group" label="Item19"></menuitem> | |
| 62 <!-- Test removal of separator at the end. --> | |
| 63 <hr> | |
| 64 </menu> | |
| 65 </button> | |
| 66 <!-- Test with menu element without type attribute specified. --> | |
| 67 <button id="button_1" contextmenu="menu_without_type" style="height: 100px; widt
h: 100px;"> | |
| 68 <menu id="menu_without_type"> | |
| 69 <menuitem label="Item1"></menuitem> | |
| 70 <menuitem label="Item2"></menuitem> | |
| 71 <menuitem label="Item3"></menuitem> | |
| 72 </menu> | |
| 73 </button> | |
| 74 <!-- Test cancelling show event. --> | |
| 75 <button id="button_2" contextmenu="menu_2" style="height: 100px; width: 100px;"> | |
| 76 <menu id="menu_2" type="context"> | |
| 77 <menuitem label="Item1"></menuitem> | |
| 78 <menuitem label="Item2"></menuitem> | |
| 79 <menuitem label="Item3"></menuitem> | |
| 80 </menu> | |
| 81 </button> | |
| 82 <!-- Test removing menu element inside show event handler. --> | |
| 83 <button id="button_3" contextmenu="menu_3" style="height: 100px; width: 100px;"> | |
| 84 <menu id="menu_3" type="context"> | |
| 85 <menuitem label="Item1"></menuitem> | |
| 86 <menuitem label="Item2"></menuitem> | |
| 87 <menuitem label="Item3"></menuitem> | |
| 88 </menu> | |
| 89 </button> | |
| 90 <!-- Test with menu element without any children. --> | |
| 91 <button id="button_4" contextmenu="menu_4" style="height: 100px; width: 100px;"> | |
| 92 <menu id="menu_4" type="context"> | |
| 93 </menu> | |
| 94 </button> | |
| 95 <!-- Test if an element A has a parent element, then A's assigned context menu i
s the assigned context menu of its parent element. --> | |
| 96 <div contextmenu="menu_5"> | |
| 97 <div> | |
| 98 <button id="button_5" style="height: 100px; width: 100px;"></button> | |
| 99 </div> | |
| 100 <menu id="menu_5" type="context"> | |
| 101 <menuitem label="Item1"> | |
| 102 <menuitem label="Item2"> | |
| 103 <menuitem label="Item3"> | |
| 104 </menu> | |
| 105 </div> | |
| 106 <script> | |
| 107 if (!window.eventSender) | |
| 108 debug("This test requires window.eventSender.") | |
| 109 | |
| 110 function contextClickAndGetMenuItems(element) { | |
| 111 var x = element.offsetParent.offsetLeft + element.offsetLeft + 4; | |
| 112 var y = element.offsetParent.offsetTop + element.offsetTop + element.offsetH
eight / 2; | |
| 113 eventSender.mouseMoveTo(x, y); | |
| 114 return eventSender.contextClick(); | |
| 115 } | |
| 116 | |
| 117 function cancel(event) { | |
| 118 event.preventDefault(); | |
| 119 } | |
| 120 | |
| 121 function removeMenu(event) { | |
| 122 event.target.remove(); | |
| 123 } | |
| 124 | |
| 125 description("Tests the custom context menu items."); | |
| 126 var button = document.getElementById("button"); | |
| 127 var items = contextClickAndGetMenuItems(button); | |
| 128 | |
| 129 // Esc key to hide the context menu. | |
| 130 eventSender.keyDown("Escape"); | |
| 131 | |
| 132 var buttonWithContextMenu = document.getElementById("button_with_contextmenu"); | |
| 133 var itemsWithCustomContextMenu = contextClickAndGetMenuItems(buttonWithContextMe
nu); | |
| 134 | |
| 135 // Esc key to hide the context menu. | |
| 136 eventSender.keyDown("Escape"); | |
| 137 | |
| 138 var button1 = document.getElementById("button_1"); | |
| 139 var items1 = contextClickAndGetMenuItems(button1); | |
| 140 | |
| 141 // Esc key to hide the context menu. | |
| 142 eventSender.keyDown("Escape"); | |
| 143 | |
| 144 var button2 = document.getElementById("button_2"); | |
| 145 document.getElementById("menu_2").addEventListener("show", cancel, false); | |
| 146 var items2 = contextClickAndGetMenuItems(button2); | |
| 147 | |
| 148 // Esc key to hide the context menu. | |
| 149 eventSender.keyDown("Escape"); | |
| 150 | |
| 151 var button3 = document.getElementById("button_3"); | |
| 152 document.getElementById("menu_3").addEventListener("show", removeMenu, false); | |
| 153 var items3 = contextClickAndGetMenuItems(button3); | |
| 154 | |
| 155 // Esc key to hide the context menu. | |
| 156 eventSender.keyDown("Escape"); | |
| 157 | |
| 158 var button4 = document.getElementById("button_4"); | |
| 159 var items4 = contextClickAndGetMenuItems(button4); | |
| 160 | |
| 161 // Esc key to hide the context menu. | |
| 162 eventSender.keyDown("Escape"); | |
| 163 | |
| 164 var button5 = document.getElementById("button_5"); | |
| 165 var items5 = contextClickAndGetMenuItems(button5); | |
| 166 | |
| 167 shouldBeEqualToNumber("itemsWithCustomContextMenu.length - items.length", 23); | |
| 168 shouldBeEqualToString("itemsWithCustomContextMenu[0]", "Item1"); | |
| 169 shouldBeEqualToString("itemsWithCustomContextMenu[1]", "#Item2"); | |
| 170 shouldBeEqualToString("itemsWithCustomContextMenu[2]", "---------"); | |
| 171 shouldBeEqualToString("itemsWithCustomContextMenu[3]", "Item3"); | |
| 172 shouldBeEqualToString("itemsWithCustomContextMenu[4]", "Submenu >"); | |
| 173 shouldBeEqualToString("itemsWithCustomContextMenu[5]", "_Item4"); | |
| 174 shouldBeEqualToString("itemsWithCustomContextMenu[6]", "_Deeper submenu >"); | |
| 175 shouldBeEqualToString("itemsWithCustomContextMenu[7]", "__Item5"); | |
| 176 shouldBeEqualToString("itemsWithCustomContextMenu[8]", "__---------"); | |
| 177 shouldBeEqualToString("itemsWithCustomContextMenu[9]", "__Item6"); | |
| 178 shouldBeEqualToString("itemsWithCustomContextMenu[10]", "Item7"); | |
| 179 shouldBeEqualToString("itemsWithCustomContextMenu[11]", "---------"); | |
| 180 shouldBeEqualToString("itemsWithCustomContextMenu[12]", "Item8"); | |
| 181 shouldBeEqualToString("itemsWithCustomContextMenu[13]", "Item11"); | |
| 182 shouldBeEqualToString("itemsWithCustomContextMenu[14]", "Item12"); | |
| 183 shouldBeEqualToString("itemsWithCustomContextMenu[15]", "---------"); | |
| 184 shouldBeEqualToString("itemsWithCustomContextMenu[16]", "Item13"); | |
| 185 shouldBeEqualToString("itemsWithCustomContextMenu[17]", "Item14"); | |
| 186 shouldBeEqualToString("itemsWithCustomContextMenu[18]", "*Item15"); | |
| 187 shouldBeEqualToString("itemsWithCustomContextMenu[19]", "Item16"); | |
| 188 shouldBeEqualToString("itemsWithCustomContextMenu[20]", "Item17"); | |
| 189 shouldBeEqualToString("itemsWithCustomContextMenu[21]", "*Item18"); | |
| 190 shouldBeEqualToString("itemsWithCustomContextMenu[22]", "Item19"); | |
| 191 shouldBeEqualToNumber("items1.length - items.length", 0); | |
| 192 shouldBeEqualToNumber("items2.length - items.length", 0); | |
| 193 shouldBeEqualToNumber("items3.length - items.length", 0); | |
| 194 shouldBeEqualToNumber("items4.length - items.length", 0); | |
| 195 shouldBeEqualToNumber("items5.length - items.length", 3); | |
| 196 shouldBeEqualToString("items5[0]", "Item1"); | |
| 197 shouldBeEqualToString("items5[1]", "Item2"); | |
| 198 shouldBeEqualToString("items5[2]", "Item3"); | |
| 199 | |
| 200 </script> | |
| OLD | NEW |