test_tree.xhtml (5007B)
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 6 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 7 title="Accessible XUL tree hierarchy tests"> 8 9 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" /> 10 11 <script type="application/javascript" 12 src="../treeview.js" /> 13 14 <script type="application/javascript" 15 src="../common.js" /> 16 <script type="application/javascript" 17 src="../role.js" /> 18 <script type="application/javascript" 19 src="../events.js" /> 20 21 <script type="application/javascript"> 22 <![CDATA[ 23 //////////////////////////////////////////////////////////////////////////// 24 // Accessible tree testers 25 26 function getTreeItemAccTree(aTableRole, acolumnCount) 27 { 28 var treeItemRole; 29 switch (aTableRole) { 30 case ROLE_LIST: 31 treeItemRole = ROLE_LISTITEM; 32 break; 33 case ROLE_OUTLINE: 34 treeItemRole = ROLE_OUTLINEITEM; 35 break; 36 case ROLE_TABLE: case ROLE_TREE_TABLE: 37 treeItemRole = ROLE_ROW; 38 break; 39 } 40 41 var accTree = { 42 role: treeItemRole, 43 children: [] 44 }; 45 46 if (aTableRole == ROLE_TABLE || aTableRole == ROLE_TREE_TABLE) { 47 for (var idx = 0; idx < acolumnCount; idx++) { 48 var cellAccTree = { 49 role: ROLE_GRID_CELL, 50 children: [] 51 }; 52 accTree.children.push(cellAccTree); 53 } 54 } 55 56 return accTree; 57 } 58 59 function testAccessibleTreeFor(aTree, aRole) 60 { 61 var accTreeForColumns = { 62 role: ROLE_LIST, 63 children: [] 64 }; 65 66 var accTreeForTree = { 67 role: aRole, 68 children: [ 69 accTreeForColumns 70 ] 71 }; 72 73 var view = aTree.view; 74 var columnCount = aTree.columns.count; 75 76 for (let idx = 0; idx < columnCount; idx++) 77 accTreeForColumns.children.push({ COLUMNHEADER: [ ] }); 78 if (!aTree.hasAttribute("hidecolumnpicker")) { 79 accTreeForColumns.children.push({ PUSHBUTTON: [ ] }); 80 accTreeForColumns.children.push({ MENUPOPUP: [ ] }); 81 } 82 83 for (let idx = 0; idx < view.rowCount; idx++) 84 accTreeForTree.children.push(getTreeItemAccTree(aRole, columnCount)); 85 86 testAccessibleTree(aTree, accTreeForTree); 87 } 88 89 /** 90 * Event queue invoker object to test accessible tree for XUL tree element. 91 */ 92 function treeChecker(aID, aView, aRole) 93 { 94 this.DOMNode = getNode(aID); 95 96 this.invoke = function invoke() 97 { 98 this.DOMNode.view = aView; 99 } 100 this.check = function check() 101 { 102 testAccessibleTreeFor(this.DOMNode, aRole); 103 } 104 this.getID = function getID() 105 { 106 return "Tree testing of " + aID; 107 } 108 } 109 110 //////////////////////////////////////////////////////////////////////////// 111 // Test 112 113 // gA11yEventDumpID = "debug"; 114 var gQueue = null; 115 116 function doTest() 117 { 118 gQueue = new eventQueue(EVENT_REORDER); 119 120 gQueue.push(new treeChecker("list", new nsTableTreeView(3), ROLE_LIST)); 121 gQueue.push(new treeChecker("tree", new nsTreeTreeView(), ROLE_OUTLINE)); 122 gQueue.push(new treeChecker("table", new nsTableTreeView(3), ROLE_TABLE)); 123 gQueue.push(new treeChecker("treetable", new nsTreeTreeView(), ROLE_TREE_TABLE)); 124 125 gQueue.invoke(); // Will call SimpleTest.finish() 126 } 127 128 SimpleTest.waitForExplicitFinish(); 129 addA11yLoadEvent(doTest); 130 ]]> 131 </script> 132 133 <hbox flex="1" style="overflow: auto;"> 134 <body xmlns="http://www.w3.org/1999/xhtml"> 135 <a target="_blank" 136 href="https://bugzilla.mozilla.org/show_bug.cgi?id=503727" 137 title="Reorganize implementation of XUL tree accessibility"> 138 Mozilla Bug 503727 139 </a><br/> 140 <p id="display"></p> 141 <div id="content" style="display: none"> 142 </div> 143 <pre id="test"> 144 </pre> 145 </body> 146 147 <vbox flex="1"> 148 <tree id="list" flex="1" hidecolumnpicker="true"> 149 <treecols> 150 <treecol id="col" flex="1" hideheader="true"/> 151 </treecols> 152 <treechildren/> 153 </tree> 154 155 <tree id="tree" flex="1"> 156 <treecols> 157 <treecol id="col" flex="1" primary="true" label="column"/> 158 </treecols> 159 <treechildren/> 160 </tree> 161 162 <tree id="table" flex="1"> 163 <treecols> 164 <treecol id="col1" flex="1" label="column"/> 165 <treecol id="col2" flex="1" label="column 2"/> 166 </treecols> 167 <treechildren/> 168 </tree> 169 170 <tree id="treetable" flex="1"> 171 <treecols> 172 <treecol id="col1" flex="1" primary="true" label="column"/> 173 <treecol id="col2" flex="1" label="column 2"/> 174 </treecols> 175 <treechildren/> 176 </tree> 177 178 <vbox id="debug"/> 179 </vbox> 180 </hbox> 181 182 </window>