accessible/tests/mochitest/treeupdate/test_menubutton.xul

changeset 0
6474c204b198
     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 +

mercurial