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

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

Issue 2942573003: [DevTools] New harness for inspector-protocol layout tests (Closed)
Patch Set: unified 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(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
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
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
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 })
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698