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

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: Add a catch-all return to ignoredReasonName 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) {
24 InspectorTest.log("Error: " + JSON.stringify(msg));
25 })
26 promises.push(promise);
27 }
28
29 Promise.all(promises).then(function() { InspectorTest.completeTest(); });
30 }
31
32 InspectorTest._sendCommandPromise = function(command, params)
33 {
34 return new Promise(function(resolve, reject) {
35 InspectorTest.sendCommand(command, params, function(msg) {
36 if (msg.error) {
37 reject(msg.error);
38 return;
39 }
40
41 resolve(msg);
42 })
43 });
44 }
45
46
47 InspectorTest._sendQuerySelector = function(nodeId, selector)
48 {
49 return InspectorTest._sendCommandPromise("DOM.querySelector", { "nodeId": no deId, "selector": selector });
50 }
51
52 InspectorTest._getAXNode = function(msg)
53 {
54 var node = msg.result;
55 return InspectorTest._sendCommandPromise("Accessibility.getAXNode", { "nodeI d": node.nodeId });
56 }
57
58 InspectorTest._describeNode = function(nodeData)
59 {
60 var description = nodeData.nodeName.toLowerCase();
61 switch (nodeData.nodeType) {
62 case Node.ELEMENT_NODE:
63 var p = nodeData.attributes.indexOf("id");
64 if (p >= 0)
65 description += "#" + nodeData.attributes[p + 1];
66 }
67 return description;
68 }
69
70 InspectorTest._rewriteNode = function(relatedNode)
71 {
72 function rewriteNodePromise(resolve, reject)
73 {
74 if (!("backendNodeId" in relatedNode)) {
75 reject("Could not find backendNodeId in " + JSON.stringify(relatedNo de));
76 return;
77 }
78 var backendNodeId = relatedNode.backendNodeId;
79
80 function onNodeResolved(backendNodeId, message)
81 {
82 var nodeId = message.result.nodeIds[0];
83 if (!(nodeId in nodeInfo)) {
84 relatedNode.nodeResult = "[NODE NOT FOUND]";
85 resolve();
86 return;
87 }
88 var node = nodeInfo[nodeId];
89 delete relatedNode.backendNodeId;
90 relatedNode.nodeResult = InspectorTest._describeNode(node);
91 resolve();
92 }
93 InspectorTest.sendCommand("DOM.pushNodesByBackendIdsToFrontend", { "back endNodeIds": [ backendNodeId ] }, onNodeResolved.bind(null, backendNodeId));
94 }
95 return new Promise(rewriteNodePromise);
96 }
97
98 InspectorTest._checkExists = function(path, obj, reject)
99 {
100 var pathComponents = path.split(".");
101 var currentPath = [];
102 var currentObject = obj;
103 for (var component of pathComponents) {
104 currentPath.push(component);
105 if (!(component in currentObject)) {
106 reject("Could not find " + currentPath.join(".") + " in " + JSON.str ingify(obj, null, " "));
107 return false;
108 }
109 currentObject = currentObject[component];
110 }
111 return true;
112 }
113
114 InspectorTest._check = function(condition, errorMsg, obj, reject)
115 {
116 if (condition)
117 return true;
118 reject(errorMsg + " in " + JSON.stringify(obj, null, " "));
119 }
120
121 InspectorTest._rewriteNodes = function(msg)
122 {
123 function rewriteNodesPromise(resolve, reject)
124 {
125 if (msg.error) {
126 reject(msg.error.message);
127 return;
128 }
129
130 if (msg.result.accessibilityNode.ignored) {
131 InspectorTest._checkExists("result.accessibilityNode.ignoredReasons" , msg);
132 var properties = msg.result.accessibilityNode.ignoredReasons;
133 } else {
134 InspectorTest._checkExists("result.accessibilityNode.properties", ms g);
135 var properties = msg.result.accessibilityNode.properties;
136 }
137 var promises = [];
138 for (var property of properties) {
139 if (property.value.type === "idrefList") {
140 if (!InspectorTest._checkExists("value.relatedNodeArrayValue", p roperty, reject))
141 return;
142 var relatedNodeArray = property.value.relatedNodeArrayValue;
143 InspectorTest._check(Array.isArray(relatedNodeArray), "value.rel atedNodeArrayValue should be an array", JSON.stringify(property), reject);
144 for (var relatedNode of relatedNodeArray)
145 promises.push(InspectorTest._rewriteNode(relatedNode));
146 } else if (property.value.type === "idref") {
147 if (!InspectorTest._checkExists("value.relatedNodeValue", proper ty, reject))
148 return;
149 var relatedNode = property.value.relatedNodeValue;
150 promises.push(InspectorTest._rewriteNode(relatedNode));
151 }
152 }
153
154 Promise.all(promises).then(resolve(msg));
155 }
156 return new Promise(rewriteNodesPromise);
157 }
158
159 InspectorTest._dumpNode = function(selector, msg)
160 {
161 function stripIds(key, value)
162 {
163 if (key == "id")
164 return "<int>"
165 if (key == "backendNodeId")
166 return "<string>"
167 if (key == "nodeId")
168 return "<string>"
169 return value;
170 }
171 InspectorTest.log(selector + ": " + JSON.stringify(msg, stripIds, " "));
172 }
173 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698