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

Side by Side Diff: LayoutTests/inspector-protocol/accessibility/accessibility-ignoredNodesTest.js

Issue 1076453004: Show reasons why nodes are ignored in accessibility sidebar (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: pfeldman review comments (take 2) Created 5 years, 7 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
(Empty)
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
3 // found in the LICENSE file.
4
5 function initialize_IgnoredNodesTests() {
6 InspectorTest.dumpAccessibilityNodesByIdrefAndCompleteTest = function(ids, msg)
7 {
8 if (msg.error) {
9 InspectorTest.log(msg.error.message);
10 InspectorTest.completeTest();
11 return;
12 }
13
14
15 var rootNode = msg.result.root;
16 var promises = [];
17 for (var id of ids) {
18 var selector = "#" + id;
19 var promise = InspectorTest._sendQuerySelector(rootNode.nodeId, selector )
20 .then(InspectorTest._getAXNode)
21 .then(InspectorTest._rewriteNodes)
22 .then(InspectorTest._dumpNode.bind(null, selector))
23 .catch(function(msg) { InspectorTest.log("Error: " + JSON.stringify( msg)); })
pfeldman 2015/04/29 19:38:46 Lets insert some new lines here.
aboxhall 2015/04/29 21:03:32 Done.
24 promises.push(promise);
25 }
26
27 Promise.all(promises).then(function() { InspectorTest.completeTest(); });
28 }
29
30 InspectorTest._sendCommandPromise = function(command, params)
pfeldman 2015/04/29 19:38:46 These are not a part of closure. This whole closur
aboxhall 2015/04/29 21:03:32 Acknowledged.
31 {
32 return new Promise(function(resolve, reject) {
33 InspectorTest.sendCommand(command, params, function(msg) {
34 if (msg.error) { reject(msg.error); return; }
pfeldman 2015/04/29 19:38:46 Lets insert some new lines here.
aboxhall 2015/04/29 21:03:32 Done.
35 resolve(msg);
36 })
37 });
38 }
39
40
41 InspectorTest._sendQuerySelector = function(nodeId, selector)
42 {
43 return InspectorTest._sendCommandPromise("DOM.querySelector", { "nodeId": no deId, "selector": selector });
44 }
45
46 InspectorTest._getAXNode = function(msg) {
pfeldman 2015/04/29 19:38:46 { -> next line
aboxhall 2015/04/29 21:03:32 Done.
47 var node = msg.result;
48 return InspectorTest._sendCommandPromise("Accessibility.getAXNode", { "nodeI d": node.nodeId });
49 }
50
51 InspectorTest._describeNode = function(nodeData)
52 {
53 var description = nodeData.nodeName.toLowerCase();
54 switch (nodeData.nodeType) {
55 case Node.ELEMENT_NODE:
56 var p = nodeData.attributes.indexOf("id");
57 if (p >= 0)
58 description += "#" + nodeData.attributes[p + 1];
59 }
60 return description;
61 }
62
63 InspectorTest._rewriteNode = function(relatedNode)
64 {
65 function rewriteNodePromise(resolve, reject)
66 {
67 if (!("backendNodeId" in relatedNode)) {
68 reject("Could not find backendNodeId in " + JSON.stringify(relatedNo de));
69 return;
70 }
71 var backendNodeId = relatedNode.backendNodeId;
72
73 function onNodeResolved(backendNodeId, message)
74 {
75 var nodeId = message.result.nodeIds[0];
76 if (!(nodeId in nodeInfo)) {
77 relatedNode.nodeResult = "[NODE NOT FOUND]";
78 resolve();
79 return;
80 }
81 var node = nodeInfo[nodeId];
82 delete relatedNode.backendNodeId;
83 relatedNode.nodeResult = InspectorTest._describeNode(node);
84 resolve();
85 }
86 InspectorTest.sendCommand("DOM.pushNodesByBackendIdsToFrontend", { "back endNodeIds": [ backendNodeId ] }, onNodeResolved.bind(null, backendNodeId));
87 }
88 return new Promise(rewriteNodePromise);
89 }
90
91 InspectorTest._checkExists = function(path, obj, reject)
92 {
93 var pathComponents = path.split(".");
94 var currentPath = [];
95 var currentObject = obj;
96 for (var component of pathComponents) {
97 currentPath.push(component);
98 if (!(component in currentObject)) {
99 reject("Could not find " + currentPath.join(".") + " in " + JSON.str ingify(obj, null, " "));
100 return false;
101 }
102 currentObject = currentObject[component];
103 }
104 return true;
105 }
106
107 InspectorTest._check = function(condition, errorMsg, obj, reject)
108 {
109 if (condition)
110 return true;
111 reject(errorMsg + " in " + JSON.stringify(obj, null, " "));
112 }
113
114 InspectorTest._rewriteNodes = function(msg)
115 {
116 function rewriteNodesPromise(resolve, reject)
117 {
118 if (msg.error) {
119 reject(msg.error.message);
120 return;
121 }
122
123 if (msg.result.accessibilityNode.ignored) {
124 InspectorTest._checkExists("result.accessibilityNode.ignoredReasons" , msg);
125 var properties = msg.result.accessibilityNode.ignoredReasons;
126 } else {
127 InspectorTest._checkExists("result.accessibilityNode.properties", ms g);
128 var properties = msg.result.accessibilityNode.properties;
129 }
130 var promises = [];
131 for (var property of properties) {
132 if (property.value.type === "idrefList") {
133 if (!InspectorTest._checkExists("value.relatedNodeArrayValue", p roperty, reject))
134 return;
135 var relatedNodeArray = property.value.relatedNodeArrayValue;
136 InspectorTest._check(Array.isArray(relatedNodeArray), "value.rel atedNodeArrayValue should be an array", JSON.stringify(property), reject);
137 for (var relatedNode of relatedNodeArray) {
138 promises.push(InspectorTest._rewriteNode(relatedNode));
139 }
140 } else if (property.value.type === "idref") {
141 if (!InspectorTest._checkExists("value.relatedNodeValue", proper ty, reject))
142 return;
143 var relatedNode = property.value.relatedNodeValue;
144 promises.push(InspectorTest._rewriteNode(relatedNode));
145 }
146 }
147
148 Promise.all(promises).then(resolve(msg));
149 }
150 return new Promise(rewriteNodesPromise);
151 }
152
153 InspectorTest._dumpNode = function(selector, msg)
154 {
155 function stripIds(key, value)
156 {
157 if (key == "id")
158 return "<int>"
159 if (key == "backendNodeId")
160 return "<string>"
161 if (key == "nodeId")
162 return "<string>"
163 return value;
164 }
165 InspectorTest.log(selector + ": " + JSON.stringify(msg, stripIds, " "));
166 }
167 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698