Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: third_party/WebKit/LayoutTests/inspector-protocol/resources/accessibility-dumpAccessibilityNodes.js

Issue 2951183002: [DevTools] Move inspector-protocol/accessibility tests to new harness (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 function initialize_DumpAccessibilityNodesTest() { 5 (function initialize_DumpAccessibilityNodesTest(testRunner, session) {
6
7 function trackGetChildNodesEvents(nodeInfo, callback)
8 {
9 session.protocol.DOM.onSetChildNodes(setChildNodes);
10
11 function setChildNodes(message)
12 {
13 var nodes = message.params.nodes;
14 for (var i = 0; i < nodes.length; ++i)
15 addNode(nodeInfo, nodes[i]);
16 if (callback)
17 callback();
18 }
19 }
20
21 function addNode(nodeInfo, node)
22 {
23 nodeInfo[node.nodeId] = node;
24 delete node.nodeId;
25 var children = node.children || [];
26 for (var i = 0; i < children.length; ++i)
27 addNode(nodeInfo, children[i]);
28 var shadowRoots = node.shadowRoots || [];
29 for (var i = 0; i < shadowRoots.length; ++i)
30 addNode(nodeInfo, shadowRoots[i]);
31 }
32
33 async function requestDocumentNodeId(callback)
34 {
35 var result = (await session.protocol.DOM.getDocument()).result;
36 if (callback)
37 callback(result.root.nodeId);
38 return result.root.nodeId;
39 };
40
41 async function requestNodeId(documentNodeId, selector, callback)
42 {
43 var result = (await session.protocol.DOM.querySelector({"nodeId": documentNo deId , "selector": selector})).result;
44 if (callback)
45 callback(result.nodeId);
46 return result.nodeId;
47 };
6 48
7 var nodeInfo = {}; 49 var nodeInfo = {};
8 InspectorTest.trackGetChildNodesEvents(nodeInfo); 50 trackGetChildNodesEvents(nodeInfo);
9 51
10 InspectorTest.dumpAccessibilityNodesBySelectorAndCompleteTest = function(selecto r, fetchRelatives, msg) { 52 function dumpAccessibilityNodesBySelectorAndCompleteTest(selector, fetchRelative s, msg) {
11 if (msg.error) { 53 if (msg.error) {
12 InspectorTest.log(msg.error.message); 54 testRunner.log(msg.error.message);
13 InspectorTest.completeTest(); 55 testRunner.completeTest();
14 return; 56 return;
15 } 57 }
16 58
17 var rootNode = msg.result.root; 59 var rootNode = msg.result.root;
18 var rootNodeId = rootNode.nodeId; 60 var rootNodeId = rootNode.nodeId;
19 InspectorTest.addNode(nodeInfo, rootNode); 61 addNode(nodeInfo, rootNode);
20 62
21 sendQuerySelectorAll(rootNodeId, selector) 63 sendQuerySelectorAll(rootNodeId, selector)
22 .then((msg) => { return getAXNodes(msg, fetchRelatives || false) } ) 64 .then((msg) => { return getAXNodes(msg, fetchRelatives || false) } )
23 .then(() => { done(); }) 65 .then(() => { done(); })
24 .then(() => { 66 .then(() => {
25 InspectorTest.completeTest(); 67 testRunner.completeTest();
26 }) 68 })
27 .catch((msg) => { InspectorTest.log("Error: " + JSON.stringify(msg)); }) 69 .catch((msg) => { testRunner.log("Error: " + JSON.stringify(msg)); })
28 }
29
30 function sendCommandPromise(command, params)
31 {
32 return new Promise(function(resolve, reject) {
33 InspectorTest.sendCommand(command, params, function(msg) {
34 if (msg.error) {
35 reject(msg.error);
36 return;
37 }
38
39 resolve(msg);
40 })
41 });
42 } 70 }
43 71
44 function done() 72 function done()
45 { 73 {
46 sendCommandPromise("Runtime.evaluate", { expression: "done();" }); 74 session.protocol.Runtime.evaluate({expression: "done();"});
47 } 75 }
48 76
49 function sendQuerySelectorAll(nodeId, selector) 77 function sendQuerySelectorAll(nodeId, selector)
50 { 78 {
51 return sendCommandPromise("DOM.querySelectorAll", { "nodeId": nodeId, "selec tor": 79 return session.protocol.DOM.querySelectorAll({"nodeId": nodeId, "selector": selector });
52 selector });
53 } 80 }
54 81
55 function getAXNodes(msg, fetchRelatives) 82 function getAXNodes(msg, fetchRelatives)
56 { 83 {
57 var promise = Promise.resolve(); 84 var promise = Promise.resolve();
58 if (!msg.result || !msg.result.nodeIds) { 85 if (!msg.result || !msg.result.nodeIds) {
59 InspectorTest.log("Unexpected result: " + JSON.stringify(msg)); 86 testRunner.log("Unexpected result: " + JSON.stringify(msg));
60 InspectorTest.completeTest(); 87 testRunner.completeTest();
61 } 88 }
62 msg.result.nodeIds.forEach((id) => { 89 msg.result.nodeIds.forEach((id) => {
63 if (fetchRelatives) { 90 if (fetchRelatives) {
64 promise = promise.then(() => { 91 promise = promise.then(() => {
65 return sendCommandPromise("Accessibility.getPartialAXTree", { "n odeId": id, "fetchRelatives": true }); 92 return session.protocol.Accessibility.getPartialAXTree({ "nodeId ": id, "fetchRelatives": true });
66 }); 93 });
67 promise = promise.then((msg) => { return rewriteRelatedNodes(msg, id ); }) 94 promise = promise.then((msg) => { return rewriteRelatedNodes(msg, id ); })
68 .then((msg) => { return dumpTreeStructure(msg); }); 95 .then((msg) => { return dumpTreeStructure(msg); });
69 96
70 } 97 }
71 promise = promise.then(() => { return sendCommandPromise("Accessibility. getPartialAXTree", { "nodeId": id, "fetchRelatives": false }); }) 98 promise = promise.then(() => { return session.protocol.Accessibility.get PartialAXTree({ "nodeId": id, "fetchRelatives": false }); })
72 .then((msg) => { return rewriteRelatedNodes(msg, id); } ) 99 .then((msg) => { return rewriteRelatedNodes(msg, id); } )
73 .then((msg) => { return dumpNode(msg); }); 100 .then((msg) => { return dumpNode(msg); });
74 101
75 }); 102 });
76 return promise; 103 return promise;
77 } 104 }
78 105
79 function describeDomNode(nodeData) 106 function describeDomNode(nodeData)
80 { 107 {
81 var description = nodeData.nodeName.toLowerCase(); 108 var description = nodeData.nodeName.toLowerCase();
(...skipping 15 matching lines...) Expand all
97 { 124 {
98 if (!("backendDOMNodeId" in axNode)) { 125 if (!("backendDOMNodeId" in axNode)) {
99 resolve(); 126 resolve();
100 return; 127 return;
101 } 128 }
102 var backendDOMNodeId = axNode.backendDOMNodeId; 129 var backendDOMNodeId = axNode.backendDOMNodeId;
103 130
104 function onDomNodeResolved(backendDOMNodeId, message) 131 function onDomNodeResolved(backendDOMNodeId, message)
105 { 132 {
106 if (!message.result || !message.result.nodeIds) { 133 if (!message.result || !message.result.nodeIds) {
107 InspectorTest.log("Unexpected result for pushNodesByBackendIdsTo Frontend: " + JSON.stringify(message)); 134 testRunner.log("Unexpected result for pushNodesByBackendIdsToFro ntend: " + JSON.stringify(message));
108 InspectorTest.completeTest(); 135 testRunner.completeTest();
109 return; 136 return;
110 } 137 }
111 var nodeId = message.result.nodeIds[0]; 138 var nodeId = message.result.nodeIds[0];
112 if (!(nodeId in nodeInfo)) { 139 if (!(nodeId in nodeInfo)) {
113 axNode.domNode = "[NODE NOT FOUND]"; 140 axNode.domNode = "[NODE NOT FOUND]";
114 resolve(); 141 resolve();
115 return; 142 return;
116 } 143 }
117 var domNode = nodeInfo[nodeId]; 144 var domNode = nodeInfo[nodeId];
118 delete axNode.backendDOMNodeId; 145 delete axNode.backendDOMNodeId;
119 axNode.domNode = describeDomNode(domNode); 146 axNode.domNode = describeDomNode(domNode);
120 if (nodeId === selectedNodeId) 147 if (nodeId === selectedNodeId)
121 axNode.selected = true; 148 axNode.selected = true;
122 resolve(); 149 resolve();
123 } 150 }
124 151
125 var params = { "backendNodeIds": [ backendDOMNodeId ] }; 152 var params = { "backendNodeIds": [ backendDOMNodeId ] };
126 InspectorTest.sendCommand("DOM.pushNodesByBackendIdsToFrontend", params , onDomNodeResolved.bind(null, backendDOMNodeId)); 153 session.protocol.DOM.pushNodesByBackendIdsToFrontend(params).then(onDomN odeResolved.bind(null, backendDOMNodeId));
127 } 154 }
128 promises.push(new Promise(rewriteBackendDomNodeIdPromise)); 155 promises.push(new Promise(rewriteBackendDomNodeIdPromise));
129 } 156 }
130 157
131 function rewriteRelatedNode(relatedNode) 158 function rewriteRelatedNode(relatedNode)
132 { 159 {
133 function rewriteRelatedNodePromise(resolve, reject) 160 function rewriteRelatedNodePromise(resolve, reject)
134 { 161 {
135 if (!("backendDOMNodeId" in relatedNode)) { 162 if (!("backendDOMNodeId" in relatedNode)) {
136 reject("Could not find backendDOMNodeId in " + JSON.stringify(relate dNode)); 163 reject("Could not find backendDOMNodeId in " + JSON.stringify(relate dNode));
137 return; 164 return;
138 } 165 }
139 var backendDOMNodeId = relatedNode.backendDOMNodeId; 166 var backendDOMNodeId = relatedNode.backendDOMNodeId;
140 167
141 function onNodeResolved(backendDOMNodeId, message) 168 function onNodeResolved(backendDOMNodeId, message)
142 { 169 {
143 if (!message.result || !message.result.nodeIds) { 170 if (!message.result || !message.result.nodeIds) {
144 InspectorTest.log("Unexpected result for pushNodesByBackendIdsTo Frontend: " + JSON.stringify(message)); 171 testRunner.log("Unexpected result for pushNodesByBackendIdsToFro ntend: " + JSON.stringify(message));
145 InspectorTest.completeTest(); 172 testRunner.completeTest();
146 return; 173 return;
147 } 174 }
148 var nodeId = message.result.nodeIds[0]; 175 var nodeId = message.result.nodeIds[0];
149 if (!(nodeId in nodeInfo)) { 176 if (!(nodeId in nodeInfo)) {
150 relatedNode.nodeResult = "[NODE NOT FOUND]"; 177 relatedNode.nodeResult = "[NODE NOT FOUND]";
151 resolve(); 178 resolve();
152 return; 179 return;
153 } 180 }
154 var domNode = nodeInfo[nodeId]; 181 var domNode = nodeInfo[nodeId];
155 delete relatedNode.backendDOMNodeId; 182 delete relatedNode.backendDOMNodeId;
156 relatedNode.nodeResult = describeDomNode(domNode); 183 relatedNode.nodeResult = describeDomNode(domNode);
157 resolve(); 184 resolve();
158 } 185 }
159 var params = { "backendNodeIds": [ backendDOMNodeId ] }; 186 var params = { "backendNodeIds": [ backendDOMNodeId ] };
160 InspectorTest.sendCommand("DOM.pushNodesByBackendIdsToFrontend", params, onNodeResolved.bind(null, backendDOMNodeId)); 187 session.protocol.DOM.pushNodesByBackendIdsToFrontend(params).then(onNode Resolved.bind(null, backendDOMNodeId));
161 188
162 } 189 }
163 return new Promise(rewriteRelatedNodePromise); 190 return new Promise(rewriteRelatedNodePromise);
164 } 191 }
165 192
166 function checkExists(path, obj) 193 function checkExists(path, obj)
167 { 194 {
168 var pathComponents = path.split("."); 195 var pathComponents = path.split(".");
169 var currentPath = []; 196 var currentPath = [];
170 var currentObject = obj; 197 var currentObject = obj;
171 for (var component of pathComponents) { 198 for (var component of pathComponents) {
172 var isArray = false; 199 var isArray = false;
173 var index = -1; 200 var index = -1;
174 var matches = component.match(/(\w+)\[(\d+)\]/); 201 var matches = component.match(/(\w+)\[(\d+)\]/);
175 if (matches) { 202 if (matches) {
176 isArray = true; 203 isArray = true;
177 component = matches[1]; 204 component = matches[1];
178 index = Number.parseInt(matches[2], 10); 205 index = Number.parseInt(matches[2], 10);
179 } 206 }
180 currentPath.push(component); 207 currentPath.push(component);
181 if (!(component in currentObject)) { 208 if (!(component in currentObject)) {
182 InspectorTest.log("Could not find " + currentPath.join(".") + " in " + JSON.stringify(obj, null, " ")); 209 testRunner.log("Could not find " + currentPath.join(".") + " in " + JSON.stringify(obj, null, " "));
183 InspectorTest.completeTest(); 210 testRunner.completeTest();
184 } 211 }
185 if (isArray) 212 if (isArray)
186 currentObject = currentObject[component][index]; 213 currentObject = currentObject[component][index];
187 else 214 else
188 currentObject = currentObject[component]; 215 currentObject = currentObject[component];
189 } 216 }
190 return true; 217 return true;
191 } 218 }
192 219
193 function check(condition, errorMsg, obj) 220 function check(condition, errorMsg, obj)
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 { 281 {
255 var stripKeys = ["id", "backendDOMNodeId", "nodeId", "parentId"]; 282 var stripKeys = ["id", "backendDOMNodeId", "nodeId", "parentId"];
256 if (stripKeys.indexOf(key) !== -1) 283 if (stripKeys.indexOf(key) !== -1)
257 return "<" + typeof(value) + ">"; 284 return "<" + typeof(value) + ">";
258 var deleteKeys = ["selected"]; 285 var deleteKeys = ["selected"];
259 if (deleteKeys.indexOf(key) !== -1) 286 if (deleteKeys.indexOf(key) !== -1)
260 return undefined; 287 return undefined;
261 return value; 288 return value;
262 } 289 }
263 if (!msg.result || !msg.result.nodes || msg.result.nodes.length !== 1) { 290 if (!msg.result || !msg.result.nodes || msg.result.nodes.length !== 1) {
264 InspectorTest.log("Expected exactly one node in " + JSON.stringify(msg, null, " ")); 291 testRunner.log("Expected exactly one node in " + JSON.stringify(msg, nul l, " "));
265 return; 292 return;
266 } 293 }
267 InspectorTest.log(JSON.stringify(msg.result.nodes[0], stripIds, " ")); 294 testRunner.log(JSON.stringify(msg.result.nodes[0], stripIds, " "));
268 } 295 }
269 296
270 function dumpTreeStructure(msg) 297 function dumpTreeStructure(msg)
271 { 298 {
272 function printNodeAndChildren(node, leadingSpace) 299 function printNodeAndChildren(node, leadingSpace)
273 { 300 {
274 leadingSpace = leadingSpace || ""; 301 leadingSpace = leadingSpace || "";
275 var string = leadingSpace; 302 var string = leadingSpace;
276 if (node.selected) 303 if (node.selected)
277 string += "*"; 304 string += "*";
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 if (!node.childIds.length) 340 if (!node.childIds.length)
314 delete node.childIds; 341 delete node.childIds;
315 if (!node.children.length) 342 if (!node.children.length)
316 delete node.children; 343 delete node.children;
317 } 344 }
318 } 345 }
319 var rootNode = Object.values(nodeMap).find((node) => !("parentId" in node)); 346 var rootNode = Object.values(nodeMap).find((node) => !("parentId" in node));
320 for (var node of Object.values(nodeMap)) 347 for (var node of Object.values(nodeMap))
321 delete node.parentId; 348 delete node.parentId;
322 349
323 InspectorTest.log("\n" + printNodeAndChildren(rootNode)); 350 testRunner.log("\n" + printNodeAndChildren(rootNode));
324 } 351 }
325 352
326 } 353 return dumpAccessibilityNodesBySelectorAndCompleteTest;
354
355 })
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698