OLD | NEW |
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(session) { |
| 6 |
| 7 InspectorTest.trackGetChildNodesEvents = function(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 InspectorTest.addNode(nodeInfo, nodes[i]); |
| 16 if (callback) |
| 17 callback(); |
| 18 } |
| 19 } |
| 20 |
| 21 InspectorTest.addNode = function(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 InspectorTest.addNode(nodeInfo, children[i]); |
| 28 var shadowRoots = node.shadowRoots || []; |
| 29 for (var i = 0; i < shadowRoots.length; ++i) |
| 30 InspectorTest.addNode(nodeInfo, shadowRoots[i]); |
| 31 } |
| 32 |
| 33 InspectorTest.requestDocumentNodeId = async function(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 InspectorTest.requestNodeId = async function(documentNodeId, selector, callbac
k) |
| 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 InspectorTest.trackGetChildNodesEvents(nodeInfo); |
9 | 51 |
10 InspectorTest.dumpAccessibilityNodesBySelectorAndCompleteTest = function(selecto
r, fetchRelatives, msg) { | 52 InspectorTest.dumpAccessibilityNodesBySelectorAndCompleteTest = function(selecto
r, fetchRelatives, msg) { |
11 if (msg.error) { | 53 if (msg.error) { |
12 InspectorTest.log(msg.error.message); | 54 InspectorTest.log(msg.error.message); |
13 InspectorTest.completeTest(); | 55 InspectorTest.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 InspectorTest.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 InspectorTest.completeTest(); |
26 }) | 68 }) |
27 .catch((msg) => { InspectorTest.log("Error: " + JSON.stringify(msg)); }) | 69 .catch((msg) => { InspectorTest.log("Error: " + JSON.stringify(msg)); }) |
28 } | 70 } |
29 | 71 |
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 } | |
43 | |
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 InspectorTest.log("Unexpected result: " + JSON.stringify(msg)); |
60 InspectorTest.completeTest(); | 87 InspectorTest.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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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)); |
(...skipping 13 matching lines...) Expand all Loading... |
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; |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 InspectorTest.log("\n" + printNodeAndChildren(rootNode)); |
324 } | 351 } |
325 | 352 |
326 } | 353 }) |
OLD | NEW |