1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/accessible/tests/mochitest/treeupdate/test_menubutton.xul Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,198 @@ 1.4 +<?xml version="1.0"?> 1.5 +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> 1.6 +<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" 1.7 + type="text/css"?> 1.8 + 1.9 +<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 1.10 + title="Accessible XUL button hierarchy tests"> 1.11 + 1.12 + <script type="application/javascript" 1.13 + src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" /> 1.14 + <script type="application/javascript" 1.15 + src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js" /> 1.16 + 1.17 + <script type="application/javascript" 1.18 + src="../common.js" /> 1.19 + <script type="application/javascript" 1.20 + src="../role.js" /> 1.21 + <script type="application/javascript" 1.22 + src="../events.js" /> 1.23 + 1.24 + <script type="application/javascript"> 1.25 + <![CDATA[ 1.26 + 1.27 + //////////////////////////////////////////////////////////////////////////// 1.28 + // Invokers 1.29 + 1.30 + function openMenu(aButtonID, aMenuItemRole) 1.31 + { 1.32 + var menuItemRole = aMenuItemRole || ROLE_MENUITEM; 1.33 + this.button = getAccessible(aButtonID); 1.34 + this.menupopup = this.button.firstChild; 1.35 + 1.36 + var checker = new invokerChecker(EVENT_REORDER, this.menupopup); 1.37 + this.__proto__ = new synthClick(aButtonID, checker); 1.38 + 1.39 + this.invoke = function openMenu_invoke() 1.40 + { 1.41 + var tree = 1.42 + { PUSHBUTTON: [ 1.43 + { MENUPOPUP: [ ] } 1.44 + ] }; 1.45 + testAccessibleTree(this.button, tree); 1.46 + 1.47 + this.__proto__.invoke(); 1.48 + } 1.49 + 1.50 + this.finalCheck = function openMenu_finalCheck() 1.51 + { 1.52 + var tree = 1.53 + { PUSHBUTTON: [ 1.54 + { MENUPOPUP: [ 1.55 + { role: menuItemRole, children: [ ] }, 1.56 + { role: menuItemRole, children: [ ] } 1.57 + ] } 1.58 + ] }; 1.59 + testAccessibleTree(this.button, tree); 1.60 + 1.61 + synthesizeKey("VK_ESCAPE", { }); 1.62 + } 1.63 + 1.64 + this.getID = function openMenu_getID() 1.65 + { 1.66 + return "open menu of the button " + prettyName(aButtonID); 1.67 + } 1.68 + } 1.69 + 1.70 + function openMenuButton(aButtonID) 1.71 + { 1.72 + this.buttonNode = getNode(aButtonID); 1.73 + this.menupoupNode = this.buttonNode.firstChild; 1.74 + 1.75 + this.eventSeq = [ 1.76 + new invokerChecker(EVENT_REORDER, this.menupoupNode) 1.77 + ]; 1.78 + 1.79 + this.invoke = function openMenu_invoke() 1.80 + { 1.81 + var tree = 1.82 + { PUSHBUTTON: [ 1.83 + { MENUPOPUP: [ ] }, 1.84 + { PUSHBUTTON: [ ] } 1.85 + ] }; 1.86 + testAccessibleTree(this.buttonNode, tree); 1.87 + 1.88 + this.buttonNode.open = true; 1.89 + } 1.90 + 1.91 + this.finalCheck = function openMenu_finalCheck() 1.92 + { 1.93 + var tree = 1.94 + { PUSHBUTTON: [ 1.95 + { MENUPOPUP: [ 1.96 + { MENUITEM: [ ] }, 1.97 + { MENUITEM: [ ] } 1.98 + ] }, 1.99 + { PUSHBUTTON: [ ] } 1.100 + ] }; 1.101 + testAccessibleTree(this.buttonNode, tree); 1.102 + 1.103 + this.buttonNode.open = false; 1.104 + } 1.105 + 1.106 + this.getID = function openMenu_getID() 1.107 + { 1.108 + return "open menu for menu button " + prettyName(aButtonID); 1.109 + } 1.110 + } 1.111 + 1.112 + //////////////////////////////////////////////////////////////////////////// 1.113 + // Do test 1.114 + 1.115 + gA11yEventDumpToConsole = true; // debug stuff 1.116 + 1.117 + var gQueue = null; 1.118 + 1.119 + function doTest() 1.120 + { 1.121 + gQueue = new eventQueue(); 1.122 + 1.123 + gQueue.push(new openMenu("button1")); 1.124 + gQueue.push(new openMenuButton("button2")); 1.125 + gQueue.push(new openMenu("button3")); 1.126 + gQueue.push(new openMenuButton("button4")); 1.127 + 1.128 + var columnPickerBtn = getAccessible("tree").firstChild.lastChild; 1.129 + gQueue.push(new openMenu(columnPickerBtn, ROLE_CHECK_MENU_ITEM)); 1.130 + gQueue.invoke(); // SimpleTest.finish() 1.131 + } 1.132 + 1.133 + SimpleTest.waitForExplicitFinish(); 1.134 + addA11yLoadEvent(doTest); 1.135 + ]]> 1.136 + </script> 1.137 + 1.138 + <hbox flex="1" style="overflow: auto;"> 1.139 + <body xmlns="http://www.w3.org/1999/xhtml"> 1.140 + <a target="_blank" 1.141 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=249292" 1.142 + title="Ensure accessible children for toolbarbutton types 'menu' and 'menu-button'"> 1.143 + Bug 249292 1.144 + </a> 1.145 + <a target="_blank" 1.146 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=630486" 1.147 + title="Don't force accessible creation for popup children"> 1.148 + Bug 630486 1.149 + </a> 1.150 + <a target="_blank" 1.151 + href="https://bugzilla.mozilla.org/show_bug.cgi?id=722265" 1.152 + title="Column header selection popup no longer exposed to accessibility APIs"> 1.153 + Bug 722265 1.154 + </a> 1.155 + <br/> 1.156 + <p id="display"></p> 1.157 + <div id="content" style="display: none"> 1.158 + </div> 1.159 + <pre id="test"> 1.160 + </pre> 1.161 + </body> 1.162 + 1.163 + <vbox flex="1"> 1.164 + <button id="button1" type="menu" label="button"> 1.165 + <menupopup> 1.166 + <menuitem label="menuitem"/> 1.167 + <menuitem label="menuitem"/> 1.168 + </menupopup> 1.169 + </button> 1.170 + <button id="button2" type="menu-button" label="menu button"> 1.171 + <menupopup> 1.172 + <menuitem label="menuitem"/> 1.173 + <menuitem label="menuitem"/> 1.174 + </menupopup> 1.175 + </button> 1.176 + 1.177 + <toolbarbutton id="button3" type="menu" label="toolbarbutton"> 1.178 + <menupopup> 1.179 + <menuitem label="menuitem"/> 1.180 + <menuitem label="menuitem"/> 1.181 + </menupopup> 1.182 + </toolbarbutton> 1.183 + <toolbarbutton id="button4" type="menu-button" label="menu toolbarbutton"> 1.184 + <menupopup> 1.185 + <menuitem label="menuitem"/> 1.186 + <menuitem label="menuitem"/> 1.187 + </menupopup> 1.188 + </toolbarbutton> 1.189 + 1.190 + <tree id="tree" flex="1"> 1.191 + <treecols> 1.192 + <treecol id="col" flex="1" primary="true" label="column"/> 1.193 + <treecol id="col2" flex="1" label="another column"/> 1.194 + </treecols> 1.195 + <treechildren/> 1.196 + </tree> 1.197 + </vbox> 1.198 + </hbox> 1.199 + 1.200 +</window> 1.201 +