accessible/tests/mochitest/selectable/test_tree.xul

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

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

mercurial