accessible/tests/mochitest/tree/test_formctrl.xul
author Marco Zehe <mzehe@mozilla.com>
Thu, 22 Nov 2018 05:57:48 +0000
changeset 504098 111154a7621cc50da7bed70c93171b96c8ef92f0
parent 266459 f3457bf766e4da9ebfdbfc2e30d4d5eceff7bab9
child 506268 d2c26e2f11646f98fa28c8047b9d98b0e97b7399
permissions -rw-r--r--
Bug 1507365 - Allow labels inside toolbarbuttons to participate in accessible name calculation, r=Jamie Toolbar buttons in XUL can now have labels inside them to provide the actual caption for the button. Adjust the accessibility module to allow label elements as acceptable children for the toolbarbutton element so the algorithm can pick up their text for the button's name. Differential Revision: https://phabricator.services.mozilla.com/D12527

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
                 type="text/css"?>

<!-- Firefox toolbar -->
<?xml-stylesheet href="chrome://browser/content/browser.css"
                 type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        title="Accessible XUL checkbox and radio hierarchy tests">

  <!-- Firefox toolbar -->
  <script type="application/javascript"
          src="chrome://browser/content/browser.js"/>

  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />

  <script type="application/javascript"
          src="../common.js" />
  <script type="application/javascript"
          src="../role.js" />

  <script type="application/javascript">
  <![CDATA[
    ////////////////////////////////////////////////////////////////////////////
    // Test

    function doTest()
    {
      // checkbox
      var accTree = {
        role: ROLE_CHECKBUTTON,
        children: [ ]
      };

      testAccessibleTree("checkbox", accTree);

      // radiogroup
      accTree = {
        role: ROLE_RADIO_GROUP,
        children: [
          {
            role: ROLE_RADIOBUTTON,
            children: [ ]
          },
          {
            role: ROLE_RADIOBUTTON,
            children: [ ]
          }
        ]
      };

      testAccessibleTree("radiogroup", accTree);

      // toolbar
      accTree = {
        role: ROLE_TOOLBAR,
        name: "My toolbar",
        children: [
          {
            role: ROLE_PUSHBUTTON,
            name: "hello",
            children: [
              {
                role: ROLE_LABEL,
                name: "hello"
              }
            ]
          }
        ]
      };

      testAccessibleTree("toolbar", accTree);

      // toolbar
      accTree = {
        role: ROLE_TOOLBAR,
        name: "My second toolbar",
        children: [
          {
            role: ROLE_PUSHBUTTON,
            name: "hello",
            children: [
              {
                role: ROLE_LABEL,
                name: "hello"
              }
            ]
          }
        ]
      };

      testAccessibleTree("toolbar2", accTree);

      if (!SEAMONKEY)
        testAccessibleTree("tb_customizable", { TOOLBAR: [] });

      SimpleTest.finish()
    }

    SimpleTest.waitForExplicitFinish();
    addA11yLoadEvent(doTest);
  ]]>
  </script>

  <hbox flex="1" style="overflow: auto;">
    <body xmlns="http://www.w3.org/1999/xhtml">
      <a target="_blank"
         href="https://bugzilla.mozilla.org/show_bug.cgi?id=342045"
         title="Fix O(n^2) access to all the children of a container">
        Mozilla Bug 342045
      </a><br/>
      <p id="display"></p>
      <div id="content" style="display: none">
      </div>
      <pre id="test">
      </pre>
    </body>

    <vbox flex="1">
      <checkbox id="checkbox" label="checkbox"/>
      <radiogroup id="radiogroup">
        <radio label="radio1"/>
        <radio label="radio2"/>
      </radiogroup>
      <toolbar id="toolbar" toolbarname="My toolbar">
        <toolbarbutton id="button1" label="hello"/>
      </toolbar>
      <toolbar id="toolbar2" toolbarname="2nd" aria-label="My second toolbar">
        <toolbarbutton id="button2" label="hello"/>
      </toolbar>

      <toolbar id="tb_customizable" customizable="true"/>
    </vbox>
  </hbox>

</window>