test_tree.xhtml (4450B)
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="Accessible XUL tree states 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="../role.js" /> 20 <script type="application/javascript" 21 src="../states.js" /> 22 <script type="application/javascript" 23 src="../events.js" /> 24 25 <script type="application/javascript"> 26 <![CDATA[ 27 //////////////////////////////////////////////////////////////////////////// 28 // Test 29 30 /** 31 * Event queue invoker object to test accessible states for XUL tree 32 * accessible. 33 */ 34 function statesChecker(aTreeID, aView) 35 { 36 this.DOMNode = getNode(aTreeID); 37 38 this.invoke = function statesChecker_invoke() 39 { 40 this.DOMNode.view = aView; 41 } 42 43 this.check = function statesChecker_check() 44 { 45 var tree = getAccessible(this.DOMNode); 46 47 // tree states 48 testStates(tree, STATE_READONLY); 49 50 if (this.DOMNode.getAttribute("seltype") != "single") 51 testStates(tree, STATE_MULTISELECTABLE); 52 else 53 testStates(tree, 0, 0, STATE_MULTISELECTABLE); 54 55 // tree item states 56 var expandedItem = tree.getChildAt(2); 57 testStates(expandedItem, 58 STATE_SELECTABLE | STATE_FOCUSABLE | STATE_EXPANDED); 59 60 var collapsedItem = tree.getChildAt(5); 61 testStates(collapsedItem, 62 STATE_SELECTABLE | STATE_FOCUSABLE | STATE_COLLAPSED); 63 64 // cells states if any 65 var cells = collapsedItem.children; 66 if (cells && cells.length) { 67 for (var idx = 0; idx < cells.length; idx++) { 68 var cell = cells.queryElementAt(idx, nsIAccessible); 69 testStates(cell, STATE_SELECTABLE); 70 } 71 72 var checkboxCell = cells.queryElementAt(3, nsIAccessible); 73 testStates(checkboxCell, STATE_CHECKABLE | STATE_CHECKED); 74 } 75 } 76 77 this.getID = function statesChecker_getID() 78 { 79 return "tree processor for " + prettyName(aTreeID); 80 } 81 } 82 83 gA11yEventDumpToConsole = true; // debug stuff 84 85 var gQueue = null; 86 87 function doTest() 88 { 89 gQueue = new eventQueue(EVENT_REORDER); 90 gQueue.push(new statesChecker("tree", new nsTreeTreeView())); 91 gQueue.push(new statesChecker("treesingle", new nsTreeTreeView())); 92 gQueue.push(new statesChecker("tabletree", new nsTreeTreeView())); 93 94 gQueue.invoke(); // Will call SimpleTest.finish(); 95 } 96 97 SimpleTest.waitForExplicitFinish(); 98 addA11yLoadEvent(doTest); 99 ]]> 100 </script> 101 102 <hbox flex="1" style="overflow: auto;"> 103 <body xmlns="http://www.w3.org/1999/xhtml"> 104 <a target="_blank" 105 href="https://bugzilla.mozilla.org/show_bug.cgi?id=503727" 106 title="Reorganize implementation of XUL tree accessibility"> 107 Mozilla Bug 503727 108 </a><br/> 109 <p id="display"></p> 110 <div id="content" style="display: none"> 111 </div> 112 <pre id="test"> 113 </pre> 114 </body> 115 116 <vbox flex="1"> 117 <tree id="tree" flex="1"> 118 <treecols> 119 <treecol id="col" flex="1" primary="true" label="column"/> 120 </treecols> 121 <treechildren/> 122 </tree> 123 124 <tree id="treesingle" flex="1" seltype="single"> 125 <treecols> 126 <treecol id="col_single" flex="1" primary="true" label="column"/> 127 </treecols> 128 <treechildren/> 129 </tree> 130 131 <tree id="tabletree" flex="1" editable="true"> 132 <treecols> 133 <treecol id="tabletree_col1" cycler="true" label="cycler"/> 134 <treecol id="tabletree_col2" flex="1" primary="true" label="column1"/> 135 <treecol id="tabletree_col3" flex="1" label="column2"/> 136 <treecol id="tabletree_col4" flex="1" label="checker" 137 type="checkbox" editable="true"/> 138 </treecols> 139 <treechildren/> 140 </tree> 141 142 <vbox id="debug"/> 143 </vbox> 144 </hbox> 145 146 </window>