tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_tree.xhtml (5520B)


      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"
      4                 type="text/css"?>
      5 <?xml-stylesheet href="../treeview.css"
      6                 type="text/css"?>
      7 
      8 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
      9        title="XUL tree selectable tests">
     10 
     11  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
     12 
     13  <script type="application/javascript"
     14          src="../treeview.js" />
     15 
     16  <script type="application/javascript"
     17          src="../common.js" />
     18  <script type="application/javascript"
     19          src="../events.js" />
     20  <script type="application/javascript"
     21          src="../role.js" />
     22  <script type="application/javascript"
     23          src="../states.js" />
     24  <script type="application/javascript"
     25          src="../selectable.js" />
     26 
     27  <script type="application/javascript">
     28  <![CDATA[
     29    ////////////////////////////////////////////////////////////////////////////
     30    // Test
     31 
     32    // gA11yEventDumpID = "debug";
     33 
     34    /**
     35     * Event queue invoker object to test accessible states for XUL tree
     36     * accessible.
     37     */
     38    function statesChecker(aTreeID, aView)
     39    {
     40      this.DOMNode = getNode(aTreeID);
     41      
     42      this.invoke = function invoke()
     43      {
     44        this.DOMNode.view = aView;
     45      }
     46      this.check = function check()
     47      {
     48        var tree = getAccessible(this.DOMNode);
     49 
     50        var isTreeMultiSelectable = false;
     51        var seltype = this.DOMNode.getAttribute("seltype");
     52        if (seltype != "single")
     53          isTreeMultiSelectable = true;
     54 
     55        // selectAll
     56        var accSelectable = getAccessible(this.DOMNode,
     57                                          [nsIAccessibleSelectable]);
     58        ok(accSelectable, "tree is not selectable!");
     59        if (accSelectable) {
     60          is(accSelectable.selectAll(), isTreeMultiSelectable,
     61             "SelectAll is not correct for seltype: " + seltype);
     62        }
     63 
     64        var selectedChildren = [];
     65        if (isTreeMultiSelectable) {
     66          var rows = tree.children;
     67          for (var i = 0; i < rows.length; i++) {
     68          var row = rows.queryElementAt(i, nsIAccessible);
     69            if (getRole(row) == ROLE_OUTLINEITEM || getRole(row) == ROLE_ROW)
     70              selectedChildren.push(row);
     71          }
     72        }
     73        testSelectableSelection(accSelectable, selectedChildren,
     74                                "selectAll test. ");
     75 
     76        // unselectAll
     77        accSelectable.unselectAll();
     78        testSelectableSelection(accSelectable, [], "unselectAll test. ");
     79 
     80        // addItemToSelection
     81        accSelectable.addItemToSelection(1);
     82        accSelectable.addItemToSelection(3);
     83 
     84        selectedChildren = isTreeMultiSelectable ?
     85          [ accSelectable.getChildAt(2), accSelectable.getChildAt(4) ] :
     86          [ accSelectable.getChildAt(2) ];
     87        testSelectableSelection(accSelectable, selectedChildren,
     88                                "addItemToSelection test. ");
     89 
     90        // removeItemFromSelection
     91        accSelectable.removeItemFromSelection(1);
     92 
     93        selectedChildren = isTreeMultiSelectable ?
     94          [ accSelectable.getChildAt(4) ] : [ ];
     95        testSelectableSelection(accSelectable, selectedChildren,
     96                                "removeItemFromSelection test. ");
     97      }
     98 
     99      this.getID = function getID()
    100      {
    101        "tree processor for " + prettyName(aTreeID);
    102      }
    103    }
    104 
    105    var gQueue = null;
    106 
    107    function doTest()
    108    {
    109      gQueue = new eventQueue(EVENT_REORDER);
    110      gQueue.push(new statesChecker("tree", new nsTreeTreeView()));
    111      gQueue.push(new statesChecker("treesingle", new nsTreeTreeView()));
    112      gQueue.push(new statesChecker("tabletree", new nsTreeTreeView()));
    113 
    114      gQueue.invoke(); // Will call SimpleTest.finish();
    115    }
    116 
    117    SimpleTest.waitForExplicitFinish();
    118    addA11yLoadEvent(doTest);
    119  ]]>
    120  </script>
    121 
    122  <hbox flex="1" style="overflow: auto;">
    123    <body xmlns="http://www.w3.org/1999/xhtml">
    124      <a target="_blank"
    125        href="https://bugzilla.mozilla.org/show_bug.cgi?id=523118"
    126        title="we mistake 'cell' and text' xul tree seltypes for multiselects">
    127       Mozilla Bug 523118
    128      </a>
    129      <a target="_blank"
    130        href="https://bugzilla.mozilla.org/show_bug.cgi?id=624977"
    131        title="Optimize nsXulTreeAccessible selectedItems()">
    132       Mozilla Bug 624977
    133      </a><br/>
    134      <p id="display"></p>
    135      <div id="content" style="display: none">
    136      </div>
    137      <pre id="test">
    138      </pre>
    139    </body>
    140 
    141    <vbox flex="1">
    142      <tree id="tree" flex="1">
    143        <treecols>
    144          <treecol id="col" flex="1" primary="true" label="column"/>
    145        </treecols>
    146        <treechildren/>
    147      </tree>
    148 
    149      <tree id="treesingle" flex="1" seltype="single">
    150        <treecols>
    151          <treecol id="col_single" flex="1" primary="true" label="column"/>
    152        </treecols>
    153        <treechildren/>
    154      </tree>
    155 
    156      <tree id="tabletree" flex="1" editable="true">
    157        <treecols>
    158          <treecol id="tabletree_col1" cycler="true" label="cycler"/>
    159          <treecol id="tabletree_col2" flex="1" primary="true" label="column1"/>
    160          <treecol id="tabletree_col3" flex="1" label="column2"/>
    161          <treecol id="tabletree_col4" flex="1" label="checker"
    162                   type="checkbox" editable="true"/>
    163        </treecols>
    164        <treechildren/>
    165      </tree>
    166 
    167      <vbox id="debug"/>
    168    </vbox>
    169  </hbox>
    170 
    171 </window>