Index: third_party/WebKit/Source/devtools/front_end/accessibility/AccessibilityNodeView.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/accessibility/AccessibilityNodeView.js b/third_party/WebKit/Source/devtools/front_end/accessibility/AccessibilityNodeView.js |
index 966763b21d5411543d1361550533fcedaef49bfb..e577bcf6cfeb543ba25b8b0d9c29586c6dd3565b 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/accessibility/AccessibilityNodeView.js |
+++ b/third_party/WebKit/Source/devtools/front_end/accessibility/AccessibilityNodeView.js |
@@ -1,691 +1,663 @@ |
// Copyright 2016 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
- |
/** |
- * @constructor |
- * @extends {WebInspector.AccessibilitySubPane} |
+ * @unrestricted |
*/ |
-WebInspector.AXNodeSubPane = function() |
-{ |
- WebInspector.AccessibilitySubPane.call(this, WebInspector.UIString("Computed Properties")); |
+WebInspector.AXNodeSubPane = class extends WebInspector.AccessibilitySubPane { |
+ constructor() { |
+ super(WebInspector.UIString('Computed Properties')); |
- this._noNodeInfo = this.createInfo(WebInspector.UIString("No accessibility node")); |
- this._ignoredInfo = this.createInfo(WebInspector.UIString("Accessibility node not exposed"), "ax-ignored-info hidden"); |
+ this._noNodeInfo = this.createInfo(WebInspector.UIString('No accessibility node')); |
+ this._ignoredInfo = |
+ this.createInfo(WebInspector.UIString('Accessibility node not exposed'), 'ax-ignored-info hidden'); |
this._treeOutline = this.createTreeOutline(); |
this._ignoredReasonsTree = this.createTreeOutline(); |
- this.element.classList.add("accessibility-computed"); |
-}; |
- |
- |
-WebInspector.AXNodeSubPane.prototype = { |
- /** |
- * @param {?WebInspector.AccessibilityNode} axNode |
- * @override |
- */ |
- setAXNode: function(axNode) |
- { |
- if (this._axNode === axNode) |
- return; |
- this._axNode = axNode; |
- |
- var treeOutline = this._treeOutline; |
- treeOutline.removeChildren(); |
- var ignoredReasons = this._ignoredReasonsTree; |
- ignoredReasons.removeChildren(); |
- |
- if (!axNode) { |
- treeOutline.element.classList.add("hidden"); |
- this._ignoredInfo.classList.add("hidden"); |
- ignoredReasons.element.classList.add("hidden"); |
- |
- this._noNodeInfo.classList.remove("hidden"); |
- this.element.classList.add("ax-ignored-node-pane"); |
- |
- return; |
- } |
+ this.element.classList.add('accessibility-computed'); |
+ } |
- if (axNode.ignored()) { |
- this._noNodeInfo.classList.add("hidden"); |
- treeOutline.element.classList.add("hidden"); |
- this.element.classList.add("ax-ignored-node-pane"); |
- |
- this._ignoredInfo.classList.remove("hidden"); |
- ignoredReasons.element.classList.remove("hidden"); |
- /** |
- * @param {!AccessibilityAgent.AXProperty} property |
- */ |
- function addIgnoredReason(property) |
- { |
- ignoredReasons.appendChild(new WebInspector.AXNodeIgnoredReasonTreeElement(property, /** @type {!WebInspector.AccessibilityNode} */ (axNode))); |
- } |
- var ignoredReasonsArray = /** @type {!Array<!AccessibilityAgent.AXProperty>} */(axNode.ignoredReasons()); |
- for (var reason of ignoredReasonsArray) |
- addIgnoredReason(reason); |
- if (!ignoredReasons.firstChild()) |
- ignoredReasons.element.classList.add("hidden"); |
- return; |
- } |
- this.element.classList.remove("ax-ignored-node-pane"); |
+ /** |
+ * @param {?WebInspector.AccessibilityNode} axNode |
+ * @override |
+ */ |
+ setAXNode(axNode) { |
+ if (this._axNode === axNode) |
+ return; |
+ this._axNode = axNode; |
- this._ignoredInfo.classList.add("hidden"); |
- ignoredReasons.element.classList.add("hidden"); |
- this._noNodeInfo.classList.add("hidden"); |
+ var treeOutline = this._treeOutline; |
+ treeOutline.removeChildren(); |
+ var ignoredReasons = this._ignoredReasonsTree; |
+ ignoredReasons.removeChildren(); |
- treeOutline.element.classList.remove("hidden"); |
+ if (!axNode) { |
+ treeOutline.element.classList.add('hidden'); |
+ this._ignoredInfo.classList.add('hidden'); |
+ ignoredReasons.element.classList.add('hidden'); |
- /** |
- * @param {!AccessibilityAgent.AXProperty} property |
- */ |
- function addProperty(property) |
- { |
- treeOutline.appendChild(new WebInspector.AXNodePropertyTreePropertyElement(property, /** @type {!WebInspector.AccessibilityNode} */ (axNode))); |
- } |
+ this._noNodeInfo.classList.remove('hidden'); |
+ this.element.classList.add('ax-ignored-node-pane'); |
- for (var property of axNode.coreProperties()) |
- addProperty(property); |
+ return; |
+ } |
- var roleProperty = /** @type {!AccessibilityAgent.AXProperty} */ ({name: "role", value: axNode.role()}); |
- addProperty(roleProperty); |
+ if (axNode.ignored()) { |
+ this._noNodeInfo.classList.add('hidden'); |
+ treeOutline.element.classList.add('hidden'); |
+ this.element.classList.add('ax-ignored-node-pane'); |
+ |
+ this._ignoredInfo.classList.remove('hidden'); |
+ ignoredReasons.element.classList.remove('hidden'); |
+ /** |
+ * @param {!AccessibilityAgent.AXProperty} property |
+ */ |
+ function addIgnoredReason(property) { |
+ ignoredReasons.appendChild(new WebInspector.AXNodeIgnoredReasonTreeElement( |
+ property, /** @type {!WebInspector.AccessibilityNode} */ (axNode))); |
+ } |
+ var ignoredReasonsArray = /** @type {!Array<!AccessibilityAgent.AXProperty>} */ (axNode.ignoredReasons()); |
+ for (var reason of ignoredReasonsArray) |
+ addIgnoredReason(reason); |
+ if (!ignoredReasons.firstChild()) |
+ ignoredReasons.element.classList.add('hidden'); |
+ return; |
+ } |
+ this.element.classList.remove('ax-ignored-node-pane'); |
- var propertyMap = {}; |
- var propertiesArray = /** @type {!Array.<!AccessibilityAgent.AXProperty>} */ (axNode.properties()); |
- for (var property of propertiesArray) |
- propertyMap[property.name] = property; |
+ this._ignoredInfo.classList.add('hidden'); |
+ ignoredReasons.element.classList.add('hidden'); |
+ this._noNodeInfo.classList.add('hidden'); |
- for (var propertySet of [AccessibilityAgent.AXWidgetAttributes, AccessibilityAgent.AXWidgetStates, AccessibilityAgent.AXGlobalStates, AccessibilityAgent.AXLiveRegionAttributes, AccessibilityAgent.AXRelationshipAttributes]) { |
- for (var propertyKey in propertySet) { |
- var property = propertySet[propertyKey]; |
- if (property in propertyMap) |
- addProperty(propertyMap[property]); |
- } |
- } |
- }, |
+ treeOutline.element.classList.remove('hidden'); |
/** |
- * @override |
- * @param {?WebInspector.DOMNode} node |
+ * @param {!AccessibilityAgent.AXProperty} property |
*/ |
- setNode: function(node) |
- { |
- WebInspector.AccessibilitySubPane.prototype.setNode.call(this, node); |
- this._axNode = null; |
- }, |
+ function addProperty(property) { |
+ treeOutline.appendChild(new WebInspector.AXNodePropertyTreePropertyElement( |
+ property, /** @type {!WebInspector.AccessibilityNode} */ (axNode))); |
+ } |
- __proto__: WebInspector.AccessibilitySubPane.prototype |
+ for (var property of axNode.coreProperties()) |
+ addProperty(property); |
+ |
+ var roleProperty = /** @type {!AccessibilityAgent.AXProperty} */ ({name: 'role', value: axNode.role()}); |
+ addProperty(roleProperty); |
+ |
+ var propertyMap = {}; |
+ var propertiesArray = /** @type {!Array.<!AccessibilityAgent.AXProperty>} */ (axNode.properties()); |
+ for (var property of propertiesArray) |
+ propertyMap[property.name] = property; |
+ |
+ for (var propertySet |
+ of [AccessibilityAgent.AXWidgetAttributes, AccessibilityAgent.AXWidgetStates, |
+ AccessibilityAgent.AXGlobalStates, AccessibilityAgent.AXLiveRegionAttributes, |
+ AccessibilityAgent.AXRelationshipAttributes]) { |
+ for (var propertyKey in propertySet) { |
+ var property = propertySet[propertyKey]; |
+ if (property in propertyMap) |
+ addProperty(propertyMap[property]); |
+ } |
+ } |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {?WebInspector.DOMNode} node |
+ */ |
+ setNode(node) { |
+ super.setNode(node); |
+ this._axNode = null; |
+ } |
}; |
/** |
- * @constructor |
- * @param {!WebInspector.AccessibilityNode} axNode |
- * @extends {TreeElement} |
+ * @unrestricted |
*/ |
-WebInspector.AXNodePropertyTreeElement = function(axNode) |
-{ |
+WebInspector.AXNodePropertyTreeElement = class extends TreeElement { |
+ /** |
+ * @param {!WebInspector.AccessibilityNode} axNode |
+ */ |
+ constructor(axNode) { |
// Pass an empty title, the title gets made later in onattach. |
- TreeElement.call(this, ""); |
+ super(''); |
this._axNode = axNode; |
-}; |
- |
-/** |
- * @param {?AccessibilityAgent.AXValueType} type |
- * @param {string} value |
- * @return {!Element} |
- */ |
-WebInspector.AXNodePropertyTreeElement.createSimpleValueElement = function(type, value) |
-{ |
+ } |
+ |
+ /** |
+ * @param {?AccessibilityAgent.AXValueType} type |
+ * @param {string} value |
+ * @return {!Element} |
+ */ |
+ static createSimpleValueElement(type, value) { |
var valueElement; |
var AXValueType = AccessibilityAgent.AXValueType; |
if (!type || type === AXValueType.ValueUndefined || type === AXValueType.ComputedString) |
- valueElement = createElement("span"); |
+ valueElement = createElement('span'); |
else |
- valueElement = createElementWithClass("span", "monospace"); |
+ valueElement = createElementWithClass('span', 'monospace'); |
var valueText; |
var isStringProperty = type && WebInspector.AXNodePropertyTreeElement.StringProperties.has(type); |
if (isStringProperty) { |
- // Render \n as a nice unicode cr symbol. |
- valueText = "\"" + value.replace(/\n/g, "\u21B5") + "\""; |
- valueElement._originalTextContent = value; |
+ // Render \n as a nice unicode cr symbol. |
+ valueText = '"' + value.replace(/\n/g, '\u21B5') + '"'; |
+ valueElement._originalTextContent = value; |
} else { |
- valueText = String(value); |
+ valueText = String(value); |
} |
if (type && type in WebInspector.AXNodePropertyTreeElement.TypeStyles) |
- valueElement.classList.add(WebInspector.AXNodePropertyTreeElement.TypeStyles[type]); |
+ valueElement.classList.add(WebInspector.AXNodePropertyTreeElement.TypeStyles[type]); |
- valueElement.setTextContentTruncatedIfNeeded(valueText || ""); |
+ valueElement.setTextContentTruncatedIfNeeded(valueText || ''); |
- valueElement.title = String(value) || ""; |
+ valueElement.title = String(value) || ''; |
return valueElement; |
-}; |
- |
-/** |
- * @param {string} tooltip |
- * @return {!Element} |
- */ |
-WebInspector.AXNodePropertyTreeElement.createExclamationMark = function(tooltip) |
-{ |
- var exclamationElement = createElement("label", "dt-icon-label"); |
- exclamationElement.type = "warning-icon"; |
+ } |
+ |
+ /** |
+ * @param {string} tooltip |
+ * @return {!Element} |
+ */ |
+ static createExclamationMark(tooltip) { |
+ var exclamationElement = createElement('label', 'dt-icon-label'); |
+ exclamationElement.type = 'warning-icon'; |
exclamationElement.title = tooltip; |
return exclamationElement; |
+ } |
+ |
+ /** |
+ * @param {string} name |
+ */ |
+ appendNameElement(name) { |
+ var nameElement = createElement('span'); |
+ var AXAttributes = WebInspector.AccessibilityStrings.AXAttributes; |
+ if (name in AXAttributes) { |
+ nameElement.textContent = WebInspector.UIString(AXAttributes[name].name); |
+ nameElement.title = AXAttributes[name].description; |
+ nameElement.classList.add('ax-readable-name'); |
+ } else { |
+ nameElement.textContent = name; |
+ nameElement.classList.add('ax-name'); |
+ nameElement.classList.add('monospace'); |
+ } |
+ this.listItemElement.appendChild(nameElement); |
+ } |
+ |
+ /** |
+ * @param {!AccessibilityAgent.AXValue} value |
+ * @return {?Element} |
+ */ |
+ appendValueElement(value) { |
+ var AXValueType = AccessibilityAgent.AXValueType; |
+ if (value.type === AXValueType.Idref || value.type === AXValueType.Node || value.type === AXValueType.IdrefList || |
+ value.type === AXValueType.NodeList) { |
+ this.appendRelatedNodeListValueElement(value); |
+ if (!value.value) |
+ return null; |
+ } else if (value.sources) { |
+ var sources = value.sources; |
+ for (var i = 0; i < sources.length; i++) { |
+ var source = sources[i]; |
+ var child = new WebInspector.AXValueSourceTreeElement(source, this._axNode); |
+ this.appendChild(child); |
+ } |
+ this.expand(); |
+ } |
+ var element = WebInspector.AXNodePropertyTreeElement.createSimpleValueElement(value.type, String(value.value)); |
+ this.listItemElement.appendChild(element); |
+ return element; |
+ } |
+ |
+ /** |
+ * @param {!AccessibilityAgent.AXRelatedNode} relatedNode |
+ * @param {number} index |
+ */ |
+ appendRelatedNode(relatedNode, index) { |
+ var deferredNode = new WebInspector.DeferredDOMNode(this._axNode.target(), relatedNode.backendNodeId); |
+ var nodeTreeElement = new WebInspector.AXRelatedNodeSourceTreeElement({deferredNode: deferredNode}, relatedNode); |
+ this.appendChild(nodeTreeElement); |
+ } |
+ |
+ /** |
+ * @param {!AccessibilityAgent.AXRelatedNode} relatedNode |
+ */ |
+ appendRelatedNodeInline(relatedNode) { |
+ var deferredNode = new WebInspector.DeferredDOMNode(this._axNode.target(), relatedNode.backendNodeId); |
+ var linkedNode = new WebInspector.AXRelatedNodeElement({deferredNode: deferredNode}, relatedNode); |
+ this.listItemElement.appendChild(linkedNode.render()); |
+ } |
+ |
+ /** |
+ * @param {!AccessibilityAgent.AXValue} value |
+ */ |
+ appendRelatedNodeListValueElement(value) { |
+ if (value.relatedNodes.length === 1 && !value.value) { |
+ this.appendRelatedNodeInline(value.relatedNodes[0]); |
+ return; |
+ } |
+ |
+ value.relatedNodes.forEach(this.appendRelatedNode, this); |
+ if (value.relatedNodes.length <= 3) |
+ this.expand(); |
+ else |
+ this.collapse(); |
+ } |
}; |
+ |
/** @type {!Object<string, string>} */ |
WebInspector.AXNodePropertyTreeElement.TypeStyles = { |
- attribute: "ax-value-string", |
- boolean: "object-value-boolean", |
- booleanOrUndefined: "object-value-boolean", |
- computedString: "ax-readable-string", |
- idref: "ax-value-string", |
- idrefList: "ax-value-string", |
- integer: "object-value-number", |
- internalRole: "ax-internal-role", |
- number: "ax-value-number", |
- role: "ax-role", |
- string: "ax-value-string", |
- tristate: "object-value-boolean", |
- valueUndefined: "ax-value-undefined" |
+ attribute: 'ax-value-string', |
+ boolean: 'object-value-boolean', |
+ booleanOrUndefined: 'object-value-boolean', |
+ computedString: 'ax-readable-string', |
+ idref: 'ax-value-string', |
+ idrefList: 'ax-value-string', |
+ integer: 'object-value-number', |
+ internalRole: 'ax-internal-role', |
+ number: 'ax-value-number', |
+ role: 'ax-role', |
+ string: 'ax-value-string', |
+ tristate: 'object-value-boolean', |
+ valueUndefined: 'ax-value-undefined' |
}; |
/** @type {!Set.<!AccessibilityAgent.AXValueType>} */ |
WebInspector.AXNodePropertyTreeElement.StringProperties = new Set([ |
- AccessibilityAgent.AXValueType.String, |
- AccessibilityAgent.AXValueType.ComputedString, |
- AccessibilityAgent.AXValueType.IdrefList, |
- AccessibilityAgent.AXValueType.Idref |
+ AccessibilityAgent.AXValueType.String, AccessibilityAgent.AXValueType.ComputedString, |
+ AccessibilityAgent.AXValueType.IdrefList, AccessibilityAgent.AXValueType.Idref |
]); |
-WebInspector.AXNodePropertyTreeElement.prototype = { |
- /** |
- * @param {string} name |
- */ |
- appendNameElement: function(name) |
- { |
- var nameElement = createElement("span"); |
- var AXAttributes = WebInspector.AccessibilityStrings.AXAttributes; |
- if (name in AXAttributes) { |
- nameElement.textContent = WebInspector.UIString(AXAttributes[name].name); |
- nameElement.title = AXAttributes[name].description; |
- nameElement.classList.add("ax-readable-name"); |
- } else { |
- nameElement.textContent = name; |
- nameElement.classList.add("ax-name"); |
- nameElement.classList.add("monospace"); |
- } |
- this.listItemElement.appendChild(nameElement); |
- }, |
- |
- /** |
- * @param {!AccessibilityAgent.AXValue} value |
- * @return {?Element} |
- */ |
- appendValueElement: function(value) |
- { |
- var AXValueType = AccessibilityAgent.AXValueType; |
- if (value.type === AXValueType.Idref || value.type === AXValueType.Node || |
- value.type === AXValueType.IdrefList || value.type === AXValueType.NodeList) { |
- this.appendRelatedNodeListValueElement(value); |
- if (!value.value) |
- return null; |
- } else if (value.sources) { |
- var sources = value.sources; |
- for (var i = 0; i < sources.length; i++) { |
- var source = sources[i]; |
- var child = new WebInspector.AXValueSourceTreeElement(source, this._axNode); |
- this.appendChild(child); |
- } |
- this.expand(); |
- } |
- var element = WebInspector.AXNodePropertyTreeElement.createSimpleValueElement(value.type, String(value.value)); |
- this.listItemElement.appendChild(element); |
- return element; |
- }, |
- |
- /** |
- * @param {!AccessibilityAgent.AXRelatedNode} relatedNode |
- * @param {number} index |
- */ |
- appendRelatedNode: function(relatedNode, index) |
- { |
- var deferredNode = new WebInspector.DeferredDOMNode(this._axNode.target(), relatedNode.backendNodeId); |
- var nodeTreeElement = new WebInspector.AXRelatedNodeSourceTreeElement({ deferredNode: deferredNode }, relatedNode); |
- this.appendChild(nodeTreeElement); |
- }, |
- |
- /** |
- * @param {!AccessibilityAgent.AXRelatedNode} relatedNode |
- */ |
- appendRelatedNodeInline: function(relatedNode) |
- { |
- var deferredNode = new WebInspector.DeferredDOMNode(this._axNode.target(), relatedNode.backendNodeId); |
- var linkedNode = new WebInspector.AXRelatedNodeElement({ deferredNode: deferredNode }, relatedNode); |
- this.listItemElement.appendChild(linkedNode.render()); |
- }, |
- |
- /** |
- * @param {!AccessibilityAgent.AXValue} value |
- */ |
- appendRelatedNodeListValueElement: function(value) |
- { |
- if (value.relatedNodes.length === 1 && !value.value) { |
- this.appendRelatedNodeInline(value.relatedNodes[0]); |
- return; |
- } |
- |
- value.relatedNodes.forEach(this.appendRelatedNode, this); |
- if (value.relatedNodes.length <= 3) |
- this.expand(); |
- else |
- this.collapse(); |
- }, |
- |
- __proto__: TreeElement.prototype |
-}; |
- |
/** |
- * @constructor |
- * @extends {WebInspector.AXNodePropertyTreeElement} |
- * @param {!AccessibilityAgent.AXProperty} property |
- * @param {!WebInspector.AccessibilityNode} axNode |
+ * @unrestricted |
*/ |
-WebInspector.AXNodePropertyTreePropertyElement = function(property, axNode) |
-{ |
- WebInspector.AXNodePropertyTreeElement.call(this, axNode); |
+WebInspector.AXNodePropertyTreePropertyElement = class extends WebInspector.AXNodePropertyTreeElement { |
+ /** |
+ * @param {!AccessibilityAgent.AXProperty} property |
+ * @param {!WebInspector.AccessibilityNode} axNode |
+ */ |
+ constructor(property, axNode) { |
+ super(axNode); |
this._property = property; |
this.toggleOnClick = true; |
this.selectable = false; |
- this.listItemElement.classList.add("property"); |
-}; |
+ this.listItemElement.classList.add('property'); |
+ } |
-WebInspector.AXNodePropertyTreePropertyElement.prototype = { |
- /** |
- * @override |
- */ |
- onattach: function() |
- { |
- this._update(); |
- }, |
+ /** |
+ * @override |
+ */ |
+ onattach() { |
+ this._update(); |
+ } |
- _update: function() |
- { |
- this.listItemElement.removeChildren(); |
+ _update() { |
+ this.listItemElement.removeChildren(); |
- this.appendNameElement(this._property.name); |
+ this.appendNameElement(this._property.name); |
- this.listItemElement.createChild("span", "separator").textContent = ":\u00A0"; |
+ this.listItemElement.createChild('span', 'separator').textContent = ':\u00A0'; |
- var valueElement = this.appendValueElement(this._property.value); |
- if (this._property.name === "name") |
- valueElement.classList.add("ax-computed-text"); |
- }, |
- |
- __proto__: WebInspector.AXNodePropertyTreeElement.prototype |
+ var valueElement = this.appendValueElement(this._property.value); |
+ if (this._property.name === 'name') |
+ valueElement.classList.add('ax-computed-text'); |
+ } |
}; |
/** |
- * @constructor |
- * @extends {WebInspector.AXNodePropertyTreeElement} |
- * @param {!AccessibilityAgent.AXValueSource} source |
- * @param {!WebInspector.AccessibilityNode} axNode |
+ * @unrestricted |
*/ |
-WebInspector.AXValueSourceTreeElement = function(source, axNode) |
-{ |
- WebInspector.AXNodePropertyTreeElement.call(this, axNode); |
+WebInspector.AXValueSourceTreeElement = class extends WebInspector.AXNodePropertyTreeElement { |
+ /** |
+ * @param {!AccessibilityAgent.AXValueSource} source |
+ * @param {!WebInspector.AccessibilityNode} axNode |
+ */ |
+ constructor(source, axNode) { |
+ super(axNode); |
this._source = source; |
this.selectable = false; |
-}; |
- |
-WebInspector.AXValueSourceTreeElement.prototype = { |
- /** |
- * @override |
- */ |
- onattach: function() |
- { |
- this._update(); |
- }, |
- |
- /** |
- * @param {!AccessibilityAgent.AXRelatedNode} relatedNode |
- * @param {number} index |
- * @param {string} idref |
- */ |
- appendRelatedNodeWithIdref: function(relatedNode, index, idref) |
- { |
- var deferredNode = new WebInspector.DeferredDOMNode(this._axNode.target(), relatedNode.backendNodeId); |
- var nodeTreeElement = new WebInspector.AXRelatedNodeSourceTreeElement({ deferredNode: deferredNode, idref: idref }, relatedNode); |
- this.appendChild(nodeTreeElement); |
- }, |
- |
- /** |
- * @param {!AccessibilityAgent.AXValue} value |
- */ |
- appendIDRefValueElement: function(value) |
- { |
- var relatedNodes = value.relatedNodes; |
- var numNodes = relatedNodes.length; |
- var valueElement; |
- |
- var idrefs = value.value.trim().split(/\s+/); |
- if (idrefs.length === 1) { |
- var idref = idrefs[0]; |
- var matchingNode = relatedNodes.find(node => node.idref === idref); |
- if (matchingNode) { |
- this.appendRelatedNodeWithIdref(matchingNode, 0, idref); |
- } else { |
- this.listItemElement.appendChild(new WebInspector.AXRelatedNodeElement({ idref: idref }).render()); |
- } |
- } else { |
- // TODO(aboxhall): exclamation mark if not idreflist type |
- for (var i = 0; i < idrefs.length; ++i) { |
- var idref = idrefs[i]; |
- var matchingNode = relatedNodes.find(node => node.idref === idref); |
- if (matchingNode) { |
- this.appendRelatedNodeWithIdref(matchingNode, i, idref); |
- } else { |
- this.appendChild(new WebInspector.AXRelatedNodeSourceTreeElement({ idref: idref })); |
- } |
- } |
- } |
- }, |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ onattach() { |
+ this._update(); |
+ } |
+ |
+ /** |
+ * @param {!AccessibilityAgent.AXRelatedNode} relatedNode |
+ * @param {number} index |
+ * @param {string} idref |
+ */ |
+ appendRelatedNodeWithIdref(relatedNode, index, idref) { |
+ var deferredNode = new WebInspector.DeferredDOMNode(this._axNode.target(), relatedNode.backendNodeId); |
+ var nodeTreeElement = |
+ new WebInspector.AXRelatedNodeSourceTreeElement({deferredNode: deferredNode, idref: idref}, relatedNode); |
+ this.appendChild(nodeTreeElement); |
+ } |
+ |
+ /** |
+ * @param {!AccessibilityAgent.AXValue} value |
+ */ |
+ appendIDRefValueElement(value) { |
+ var relatedNodes = value.relatedNodes; |
+ var numNodes = relatedNodes.length; |
+ var valueElement; |
- /** |
- * @param {!AccessibilityAgent.AXValue} value |
- * @override |
- */ |
- appendRelatedNodeListValueElement: function(value) |
- { |
- var relatedNodes = value.relatedNodes; |
- var numNodes = relatedNodes.length; |
- |
- if (value.type === AccessibilityAgent.AXValueType.IdrefList || |
- value.type === AccessibilityAgent.AXValueType.Idref) { |
- this.appendIDRefValueElement(value); |
+ var idrefs = value.value.trim().split(/\s+/); |
+ if (idrefs.length === 1) { |
+ var idref = idrefs[0]; |
+ var matchingNode = relatedNodes.find(node => node.idref === idref); |
+ if (matchingNode) { |
+ this.appendRelatedNodeWithIdref(matchingNode, 0, idref); |
+ } else { |
+ this.listItemElement.appendChild(new WebInspector.AXRelatedNodeElement({idref: idref}).render()); |
+ } |
+ } else { |
+ // TODO(aboxhall): exclamation mark if not idreflist type |
+ for (var i = 0; i < idrefs.length; ++i) { |
+ var idref = idrefs[i]; |
+ var matchingNode = relatedNodes.find(node => node.idref === idref); |
+ if (matchingNode) { |
+ this.appendRelatedNodeWithIdref(matchingNode, i, idref); |
} else { |
- WebInspector.AXNodePropertyTreeElement.prototype.appendRelatedNodeListValueElement.call(this, value); |
+ this.appendChild(new WebInspector.AXRelatedNodeSourceTreeElement({idref: idref})); |
} |
+ } |
+ } |
+ } |
+ |
+ /** |
+ * @param {!AccessibilityAgent.AXValue} value |
+ * @override |
+ */ |
+ appendRelatedNodeListValueElement(value) { |
+ var relatedNodes = value.relatedNodes; |
+ var numNodes = relatedNodes.length; |
+ |
+ if (value.type === AccessibilityAgent.AXValueType.IdrefList || |
+ value.type === AccessibilityAgent.AXValueType.Idref) { |
+ this.appendIDRefValueElement(value); |
+ } else { |
+ super.appendRelatedNodeListValueElement(value); |
+ } |
- if (numNodes <= 3) |
- this.expand(); |
- else |
- this.collapse(); |
- }, |
- |
- /** |
- * @param {!AccessibilityAgent.AXValueSource} source |
- */ |
- appendSourceNameElement: function(source) |
- { |
- var nameElement = createElement("span"); |
- var AXValueSourceType = AccessibilityAgent.AXValueSourceType; |
- var type = source.type; |
- var name; |
- switch (type) { |
- case AXValueSourceType.Attribute: |
- case AXValueSourceType.Placeholder: |
- case AXValueSourceType.RelatedElement: |
- if (source.nativeSource) { |
- var AXNativeSourceTypes = WebInspector.AccessibilityStrings.AXNativeSourceTypes; |
- var nativeSource = source.nativeSource; |
- nameElement.textContent = WebInspector.UIString(AXNativeSourceTypes[nativeSource].name); |
- nameElement.title = WebInspector.UIString(AXNativeSourceTypes[nativeSource].description); |
- nameElement.classList.add("ax-readable-name"); |
- break; |
- } |
- nameElement.textContent = source.attribute; |
- nameElement.classList.add("ax-name"); |
- nameElement.classList.add("monospace"); |
- break; |
- default: |
- var AXSourceTypes = WebInspector.AccessibilityStrings.AXSourceTypes; |
- if (type in AXSourceTypes) { |
- nameElement.textContent = WebInspector.UIString(AXSourceTypes[type].name); |
- nameElement.title = WebInspector.UIString(AXSourceTypes[type].description); |
- nameElement.classList.add("ax-readable-name"); |
- } else { |
- console.warn(type, "not in AXSourceTypes"); |
- nameElement.textContent = WebInspector.UIString(type); |
- } |
- } |
- this.listItemElement.appendChild(nameElement); |
- }, |
- |
- _update: function() |
- { |
- this.listItemElement.removeChildren(); |
- |
- if (this._source.invalid) { |
- var exclamationMark = WebInspector.AXNodePropertyTreeElement.createExclamationMark(WebInspector.UIString("Invalid source.")); |
- this.listItemElement.appendChild(exclamationMark); |
- this.listItemElement.classList.add("ax-value-source-invalid"); |
- } else if (this._source.superseded) { |
- this.listItemElement.classList.add("ax-value-source-unused"); |
+ if (numNodes <= 3) |
+ this.expand(); |
+ else |
+ this.collapse(); |
+ } |
+ |
+ /** |
+ * @param {!AccessibilityAgent.AXValueSource} source |
+ */ |
+ appendSourceNameElement(source) { |
+ var nameElement = createElement('span'); |
+ var AXValueSourceType = AccessibilityAgent.AXValueSourceType; |
+ var type = source.type; |
+ var name; |
+ switch (type) { |
+ case AXValueSourceType.Attribute: |
+ case AXValueSourceType.Placeholder: |
+ case AXValueSourceType.RelatedElement: |
+ if (source.nativeSource) { |
+ var AXNativeSourceTypes = WebInspector.AccessibilityStrings.AXNativeSourceTypes; |
+ var nativeSource = source.nativeSource; |
+ nameElement.textContent = WebInspector.UIString(AXNativeSourceTypes[nativeSource].name); |
+ nameElement.title = WebInspector.UIString(AXNativeSourceTypes[nativeSource].description); |
+ nameElement.classList.add('ax-readable-name'); |
+ break; |
} |
- |
- this.appendSourceNameElement(this._source); |
- |
- this.listItemElement.createChild("span", "separator").textContent = ":\u00a0"; |
- |
- if (this._source.attributeValue) { |
- this.appendValueElement(this._source.attributeValue); |
- this.listItemElement.createTextChild("\u00a0"); |
- } else if (this._source.nativeSourceValue) { |
- this.appendValueElement(this._source.nativeSourceValue); |
- this.listItemElement.createTextChild("\u00a0"); |
- } else if (this._source.value) { |
- this.appendValueElement(this._source.value); |
+ nameElement.textContent = source.attribute; |
+ nameElement.classList.add('ax-name'); |
+ nameElement.classList.add('monospace'); |
+ break; |
+ default: |
+ var AXSourceTypes = WebInspector.AccessibilityStrings.AXSourceTypes; |
+ if (type in AXSourceTypes) { |
+ nameElement.textContent = WebInspector.UIString(AXSourceTypes[type].name); |
+ nameElement.title = WebInspector.UIString(AXSourceTypes[type].description); |
+ nameElement.classList.add('ax-readable-name'); |
} else { |
- var valueElement = WebInspector.AXNodePropertyTreeElement.createSimpleValueElement(AccessibilityAgent.AXValueType.ValueUndefined, WebInspector.UIString("Not specified")); |
- this.listItemElement.appendChild(valueElement); |
- this.listItemElement.classList.add("ax-value-source-unused"); |
+ console.warn(type, 'not in AXSourceTypes'); |
+ nameElement.textContent = WebInspector.UIString(type); |
} |
+ } |
+ this.listItemElement.appendChild(nameElement); |
+ } |
+ |
+ _update() { |
+ this.listItemElement.removeChildren(); |
+ |
+ if (this._source.invalid) { |
+ var exclamationMark = |
+ WebInspector.AXNodePropertyTreeElement.createExclamationMark(WebInspector.UIString('Invalid source.')); |
+ this.listItemElement.appendChild(exclamationMark); |
+ this.listItemElement.classList.add('ax-value-source-invalid'); |
+ } else if (this._source.superseded) { |
+ this.listItemElement.classList.add('ax-value-source-unused'); |
+ } |
- if (this._source.value && this._source.superseded) |
- this.listItemElement.classList.add("ax-value-source-superseded"); |
- }, |
+ this.appendSourceNameElement(this._source); |
- /** |
- * @param {!AccessibilityAgent.AXValue} value |
- * @return {!Element} |
- * @override |
- */ |
- appendValueElement: function(value) |
- { |
- var element = WebInspector.AXNodePropertyTreeElement.prototype.appendValueElement.call(this, value); |
- if (!element) { |
- element = WebInspector.AXNodePropertyTreeElement.createSimpleValueElement(value.type, String(value.value)); |
- this.listItemElement.appendChild(element); |
- } |
- return element; |
- }, |
+ this.listItemElement.createChild('span', 'separator').textContent = ':\u00a0'; |
+ |
+ if (this._source.attributeValue) { |
+ this.appendValueElement(this._source.attributeValue); |
+ this.listItemElement.createTextChild('\u00a0'); |
+ } else if (this._source.nativeSourceValue) { |
+ this.appendValueElement(this._source.nativeSourceValue); |
+ this.listItemElement.createTextChild('\u00a0'); |
+ } else if (this._source.value) { |
+ this.appendValueElement(this._source.value); |
+ } else { |
+ var valueElement = WebInspector.AXNodePropertyTreeElement.createSimpleValueElement( |
+ AccessibilityAgent.AXValueType.ValueUndefined, WebInspector.UIString('Not specified')); |
+ this.listItemElement.appendChild(valueElement); |
+ this.listItemElement.classList.add('ax-value-source-unused'); |
+ } |
- __proto__: WebInspector.AXNodePropertyTreeElement.prototype |
+ if (this._source.value && this._source.superseded) |
+ this.listItemElement.classList.add('ax-value-source-superseded'); |
+ } |
+ |
+ /** |
+ * @param {!AccessibilityAgent.AXValue} value |
+ * @return {!Element} |
+ * @override |
+ */ |
+ appendValueElement(value) { |
+ var element = super.appendValueElement(value); |
+ if (!element) { |
+ element = WebInspector.AXNodePropertyTreeElement.createSimpleValueElement(value.type, String(value.value)); |
+ this.listItemElement.appendChild(element); |
+ } |
+ return element; |
+ } |
}; |
/** |
- * @constructor |
- * @param {{deferredNode: (!WebInspector.DeferredDOMNode|undefined), idref: (string|undefined)}} node |
- * @param {!AccessibilityAgent.AXRelatedNode=} value |
- * @extends {TreeElement} |
+ * @unrestricted |
*/ |
-WebInspector.AXRelatedNodeSourceTreeElement = function(node, value) |
-{ |
- TreeElement.call(this, ""); |
+WebInspector.AXRelatedNodeSourceTreeElement = class extends TreeElement { |
+ /** |
+ * @param {{deferredNode: (!WebInspector.DeferredDOMNode|undefined), idref: (string|undefined)}} node |
+ * @param {!AccessibilityAgent.AXRelatedNode=} value |
+ */ |
+ constructor(node, value) { |
+ super(''); |
this._value = value; |
this._axRelatedNodeElement = new WebInspector.AXRelatedNodeElement(node, value); |
this.selectable = false; |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ onattach() { |
+ this.listItemElement.appendChild(this._axRelatedNodeElement.render()); |
+ if (!this._value) |
+ return; |
+ |
+ if (this._value.text) |
+ this.listItemElement.appendChild(WebInspector.AXNodePropertyTreeElement.createSimpleValueElement( |
+ AccessibilityAgent.AXValueType.ComputedString, this._value.text)); |
+ } |
}; |
-WebInspector.AXRelatedNodeSourceTreeElement.prototype = { |
- /** |
- * @override |
- */ |
- onattach: function() |
- { |
- this.listItemElement.appendChild(this._axRelatedNodeElement.render()); |
- if (!this._value) |
- return; |
- |
- if (this._value.text) |
- this.listItemElement.appendChild(WebInspector.AXNodePropertyTreeElement.createSimpleValueElement(AccessibilityAgent.AXValueType.ComputedString, this._value.text)); |
- }, |
- |
- __proto__: TreeElement.prototype |
-}; |
- |
- |
/** |
- * @constructor |
- * @param {{deferredNode: (!WebInspector.DeferredDOMNode|undefined), idref: (string|undefined)}} node |
- * @param {!AccessibilityAgent.AXRelatedNode=} value |
+ * @unrestricted |
*/ |
-WebInspector.AXRelatedNodeElement = function(node, value) |
-{ |
+WebInspector.AXRelatedNodeElement = class { |
+ /** |
+ * @param {{deferredNode: (!WebInspector.DeferredDOMNode|undefined), idref: (string|undefined)}} node |
+ * @param {!AccessibilityAgent.AXRelatedNode=} value |
+ */ |
+ constructor(node, value) { |
this._deferredNode = node.deferredNode; |
this._idref = node.idref; |
this._value = value; |
-}; |
+ } |
+ |
+ /** |
+ * @return {!Element} |
+ */ |
+ render() { |
+ var element = createElement('span'); |
+ var valueElement; |
-WebInspector.AXRelatedNodeElement.prototype = { |
/** |
- * @return {!Element} |
+ * @param {?WebInspector.DOMNode} node |
+ * @this {!WebInspector.AXRelatedNodeElement} |
*/ |
- render: function() |
- { |
- var element = createElement("span"); |
- var valueElement; |
- |
- /** |
- * @param {?WebInspector.DOMNode} node |
- * @this {!WebInspector.AXRelatedNodeElement} |
- */ |
- function onNodeResolved(node) |
- { |
- valueElement.appendChild(WebInspector.DOMPresentationUtils.linkifyNodeReference(node, this._idref)); |
- } |
- |
- if (this._deferredNode) { |
- valueElement = createElement("span"); |
- element.appendChild(valueElement); |
- this._deferredNode.resolve(onNodeResolved.bind(this)); |
- } else if (this._idref) { |
- element.classList.add("invalid"); |
- valueElement = WebInspector.AXNodePropertyTreeElement.createExclamationMark(WebInspector.UIString("No node with this ID.")); |
- valueElement.createTextChild(this._idref); |
- element.appendChild(valueElement); |
- } |
+ function onNodeResolved(node) { |
+ valueElement.appendChild(WebInspector.DOMPresentationUtils.linkifyNodeReference(node, this._idref)); |
+ } |
- return element; |
+ if (this._deferredNode) { |
+ valueElement = createElement('span'); |
+ element.appendChild(valueElement); |
+ this._deferredNode.resolve(onNodeResolved.bind(this)); |
+ } else if (this._idref) { |
+ element.classList.add('invalid'); |
+ valueElement = |
+ WebInspector.AXNodePropertyTreeElement.createExclamationMark(WebInspector.UIString('No node with this ID.')); |
+ valueElement.createTextChild(this._idref); |
+ element.appendChild(valueElement); |
} |
+ |
+ return element; |
+ } |
}; |
/** |
- * @constructor |
- * @extends {WebInspector.AXNodePropertyTreeElement} |
- * @param {!AccessibilityAgent.AXProperty} property |
- * @param {!WebInspector.AccessibilityNode} axNode |
+ * @unrestricted |
*/ |
-WebInspector.AXNodeIgnoredReasonTreeElement = function(property, axNode) |
-{ |
- WebInspector.AXNodePropertyTreeElement.call(this, axNode); |
+WebInspector.AXNodeIgnoredReasonTreeElement = class extends WebInspector.AXNodePropertyTreeElement { |
+ /** |
+ * @param {!AccessibilityAgent.AXProperty} property |
+ * @param {!WebInspector.AccessibilityNode} axNode |
+ */ |
+ constructor(property, axNode) { |
+ super(axNode); |
this._property = property; |
this._axNode = axNode; |
this.toggleOnClick = true; |
this.selectable = false; |
-}; |
- |
-WebInspector.AXNodeIgnoredReasonTreeElement.prototype = { |
- /** |
- * @override |
- */ |
- onattach: function() |
- { |
- this.listItemElement.removeChildren(); |
- |
- this._reasonElement = WebInspector.AXNodeIgnoredReasonTreeElement.createReasonElement(this._property.name, this._axNode); |
- this.listItemElement.appendChild(this._reasonElement); |
- |
- var value = this._property.value; |
- if (value.type === AccessibilityAgent.AXValueType.Idref) |
- this.appendRelatedNodeListValueElement(value); |
- }, |
- |
- __proto__: WebInspector.AXNodePropertyTreeElement.prototype |
-}; |
- |
-/** |
- * @param {?string} reason |
- * @param {?WebInspector.AccessibilityNode} axNode |
- * @return {?Element} |
- */ |
-WebInspector.AXNodeIgnoredReasonTreeElement.createReasonElement = function(reason, axNode) |
-{ |
+ } |
+ |
+ /** |
+ * @param {?string} reason |
+ * @param {?WebInspector.AccessibilityNode} axNode |
+ * @return {?Element} |
+ */ |
+ static createReasonElement(reason, axNode) { |
var reasonElement = null; |
switch (reason) { |
- case "activeModalDialog": |
- reasonElement = WebInspector.formatLocalized("Element is hidden by active modal dialog:\u00a0", []); |
+ case 'activeModalDialog': |
+ reasonElement = WebInspector.formatLocalized('Element is hidden by active modal dialog:\u00a0', []); |
break; |
- case "ancestorDisallowsChild": |
- reasonElement = WebInspector.formatLocalized("Element is not permitted as child of ", []); |
+ case 'ancestorDisallowsChild': |
+ reasonElement = WebInspector.formatLocalized('Element is not permitted as child of ', []); |
break; |
- // http://www.w3.org/TR/wai-aria/roles#childrenArePresentational |
- case "ancestorIsLeafNode": |
- reasonElement = WebInspector.formatLocalized("Ancestor's children are all presentational:\u00a0", []); |
+ // http://www.w3.org/TR/wai-aria/roles#childrenArePresentational |
+ case 'ancestorIsLeafNode': |
+ reasonElement = WebInspector.formatLocalized('Ancestor\'s children are all presentational:\u00a0', []); |
break; |
- case "ariaHidden": |
- var ariaHiddenSpan = createElement("span", "source-code").textContent = "aria-hidden"; |
- reasonElement = WebInspector.formatLocalized("Element is %s.", [ ariaHiddenSpan ]); |
+ case 'ariaHidden': |
+ var ariaHiddenSpan = createElement('span', 'source-code').textContent = 'aria-hidden'; |
+ reasonElement = WebInspector.formatLocalized('Element is %s.', [ariaHiddenSpan]); |
break; |
- case "ariaHiddenRoot": |
- var ariaHiddenSpan = createElement("span", "source-code").textContent = "aria-hidden"; |
- var trueSpan = createElement("span", "source-code").textContent = "true"; |
- reasonElement = WebInspector.formatLocalized("%s is %s on ancestor:\u00a0", [ ariaHiddenSpan, trueSpan ]); |
+ case 'ariaHiddenRoot': |
+ var ariaHiddenSpan = createElement('span', 'source-code').textContent = 'aria-hidden'; |
+ var trueSpan = createElement('span', 'source-code').textContent = 'true'; |
+ reasonElement = WebInspector.formatLocalized('%s is %s on ancestor:\u00a0', [ariaHiddenSpan, trueSpan]); |
break; |
- case "emptyAlt": |
- reasonElement = WebInspector.formatLocalized("Element has empty alt text.", []); |
+ case 'emptyAlt': |
+ reasonElement = WebInspector.formatLocalized('Element has empty alt text.', []); |
break; |
- case "emptyText": |
- reasonElement = WebInspector.formatLocalized("No text content.", []); |
+ case 'emptyText': |
+ reasonElement = WebInspector.formatLocalized('No text content.', []); |
break; |
- case "inert": |
- reasonElement = WebInspector.formatLocalized("Element is inert.", []); |
+ case 'inert': |
+ reasonElement = WebInspector.formatLocalized('Element is inert.', []); |
break; |
- case "inheritsPresentation": |
- reasonElement = WebInspector.formatLocalized("Element inherits presentational role from\u00a0", []); |
+ case 'inheritsPresentation': |
+ reasonElement = WebInspector.formatLocalized('Element inherits presentational role from\u00a0', []); |
break; |
- case "labelContainer": |
- reasonElement = WebInspector.formatLocalized("Part of label element:\u00a0", []); |
+ case 'labelContainer': |
+ reasonElement = WebInspector.formatLocalized('Part of label element:\u00a0', []); |
break; |
- case "labelFor": |
- reasonElement = WebInspector.formatLocalized("Label for\u00a0", []); |
+ case 'labelFor': |
+ reasonElement = WebInspector.formatLocalized('Label for\u00a0', []); |
break; |
- case "notRendered": |
- reasonElement = WebInspector.formatLocalized("Element is not rendered.", []); |
+ case 'notRendered': |
+ reasonElement = WebInspector.formatLocalized('Element is not rendered.', []); |
break; |
- case "notVisible": |
- reasonElement = WebInspector.formatLocalized("Element is not visible.", []); |
+ case 'notVisible': |
+ reasonElement = WebInspector.formatLocalized('Element is not visible.', []); |
break; |
- case "presentationalRole": |
- var rolePresentationSpan = createElement("span", "source-code").textContent = "role=" + axNode.role().value; |
- reasonElement = WebInspector.formatLocalized("Element has %s.", [ rolePresentationSpan ]); |
+ case 'presentationalRole': |
+ var rolePresentationSpan = createElement('span', 'source-code').textContent = 'role=' + axNode.role().value; |
+ reasonElement = WebInspector.formatLocalized('Element has %s.', [rolePresentationSpan]); |
break; |
- case "probablyPresentational": |
- reasonElement = WebInspector.formatLocalized("Element is presentational.", []); |
+ case 'probablyPresentational': |
+ reasonElement = WebInspector.formatLocalized('Element is presentational.', []); |
break; |
- case "staticTextUsedAsNameFor": |
- reasonElement = WebInspector.formatLocalized("Static text node is used as name for\u00a0", []); |
+ case 'staticTextUsedAsNameFor': |
+ reasonElement = WebInspector.formatLocalized('Static text node is used as name for\u00a0', []); |
break; |
- case "uninteresting": |
- reasonElement = WebInspector.formatLocalized("Element not interesting for accessibility.", []); |
+ case 'uninteresting': |
+ reasonElement = WebInspector.formatLocalized('Element not interesting for accessibility.', []); |
break; |
} |
if (reasonElement) |
- reasonElement.classList.add("ax-reason"); |
+ reasonElement.classList.add('ax-reason'); |
return reasonElement; |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ onattach() { |
+ this.listItemElement.removeChildren(); |
+ |
+ this._reasonElement = |
+ WebInspector.AXNodeIgnoredReasonTreeElement.createReasonElement(this._property.name, this._axNode); |
+ this.listItemElement.appendChild(this._reasonElement); |
+ |
+ var value = this._property.value; |
+ if (value.type === AccessibilityAgent.AXValueType.Idref) |
+ this.appendRelatedNodeListValueElement(value); |
+ } |
}; |
+ |
+ |