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>