Index: third_party/WebKit/Source/devtools/front_end/accessibility/AXTreePane.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/accessibility/AXTreePane.js b/third_party/WebKit/Source/devtools/front_end/accessibility/AXTreePane.js |
index 88ed1ee7e86b4dfc38922fcb3f44c90e16fea6b1..358aa53526723efa01c93081fa54efc805203063 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/accessibility/AXTreePane.js |
+++ b/third_party/WebKit/Source/devtools/front_end/accessibility/AXTreePane.js |
@@ -16,8 +16,6 @@ Accessibility.AXTreePane = class extends Accessibility.AccessibilitySubPane { |
this._treeOutline.setPaddingSize(12); |
this.element.classList.add('accessibility-computed'); |
- |
- this._expandedNodes = new Set(); |
} |
/** |
@@ -41,43 +39,26 @@ Accessibility.AXTreePane = class extends Accessibility.AccessibilitySubPane { |
var parent = axNode.parentNode(); |
if (parent) { |
- this.setExpanded(parent.backendDOMNodeId(), false); |
- |
- var chain = []; |
- var ancestor = parent.parentNode(); |
+ var ancestorChain = []; |
+ var ancestor = parent; |
while (ancestor) { |
- chain.unshift(ancestor); |
+ ancestorChain.unshift(ancestor); |
ancestor = ancestor.parentNode(); |
} |
- for (var ancestorNode of chain) { |
+ for (var ancestorNode of ancestorChain) { |
var ancestorTreeElement = new Accessibility.AXNodeTreeElement(ancestorNode, this); |
previousTreeElement.appendChild(ancestorTreeElement); |
previousTreeElement.expand(); |
previousTreeElement = ancestorTreeElement; |
} |
- var parentTreeElement = new Accessibility.AXNodeTreeParentElement(parent, inspectedNodeTreeElement, this); |
- previousTreeElement.appendChild(parentTreeElement); |
- if (this.isExpanded(parent.backendDOMNodeId())) |
- parentTreeElement.appendSiblings(); |
- else |
- parentTreeElement.appendChild(inspectedNodeTreeElement); |
- previousTreeElement.expand(); |
- previousTreeElement = parentTreeElement; |
- } else { |
- previousTreeElement.appendChild(inspectedNodeTreeElement); |
} |
+ previousTreeElement.appendChild(inspectedNodeTreeElement); |
previousTreeElement.expand(); |
- for (var child of axNode.children()) { |
- var childTreeElement = new Accessibility.AXNodeTreeElement(child, this); |
- inspectedNodeTreeElement.appendChild(childTreeElement); |
- } |
- |
inspectedNodeTreeElement.selectable = true; |
inspectedNodeTreeElement.select(!this._selectedByUser /* omitFocus */, false); |
- if (this.isExpanded(axNode.backendDOMNodeId())) |
- inspectedNodeTreeElement.expand(); |
+ inspectedNodeTreeElement.expand(); |
this.clearSelectedByUser(); |
} |
@@ -113,30 +94,6 @@ Accessibility.AXTreePane = class extends Accessibility.AccessibilitySubPane { |
target() { |
return this.node().target(); |
} |
- |
- /** |
- * @param {?number} backendDOMNodeId |
- * @param {boolean} expanded |
- */ |
- setExpanded(backendDOMNodeId, expanded) { |
- if (!backendDOMNodeId) |
- return; |
- if (expanded) |
- this._expandedNodes.add(backendDOMNodeId); |
- else |
- this._expandedNodes.delete(backendDOMNodeId); |
- } |
- |
- /** |
- * @param {?number} backendDOMNodeId |
- * @return {boolean} |
- */ |
- isExpanded(backendDOMNodeId) { |
- if (!backendDOMNodeId) |
- return false; |
- |
- return this._expandedNodes.has(backendDOMNodeId); |
- } |
}; |
Accessibility.InspectNodeButton = class { |
@@ -247,6 +204,18 @@ Accessibility.AXNodeTreeElement = class extends UI.TreeElement { |
return true; |
} |
+ /** |
+ * @override |
+ */ |
+ onpopulate() { |
+ for (var child of this._axNode.children()) { |
+ var childTreeElement = new Accessibility.AXNodeTreeElement(child, this._treePane); |
+ this.appendChild(childTreeElement); |
+ if (childTreeElement.isExpandable() && !child.hasOnlyUnloadedChildren()) |
+ childTreeElement.expand(); |
+ } |
+ } |
+ |
inspectDOMNode() { |
this._treePane.setSelectedByUser(true); |
this._treePane.setSelectedNode(this._axNode); |
@@ -266,21 +235,21 @@ Accessibility.AXNodeTreeElement = class extends UI.TreeElement { |
this._appendIgnoredNodeElement(); |
} else { |
this._appendRoleElement(this._axNode.role()); |
- if (this._axNode.name().value) { |
+ if (this._axNode.name() && this._axNode.name().value) { |
this.titleElement().createChild('span', 'separator').textContent = '\u00A0'; |
this._appendNameElement(/** @type {string} */ (this._axNode.name().value)); |
} |
} |
if (this._axNode.hasOnlyUnloadedChildren()) { |
- this.titleElement().classList.add('children-unloaded'); |
+ this.listItemElement.classList.add('children-unloaded'); |
this.setExpandable(true); |
} else { |
this.setExpandable(!!this._axNode.numChildren()); |
} |
if (!this._axNode.isDOMNode()) |
- this.titleElement().classList.add('no-dom-node'); |
+ this.listItemElement.classList.add('no-dom-node'); |
this.titleElement().appendChild(this._inspectNodeButton.element); |
} |
@@ -290,8 +259,6 @@ Accessibility.AXNodeTreeElement = class extends UI.TreeElement { |
expand() { |
if (!this._axNode || this._axNode.hasOnlyUnloadedChildren()) |
return; |
- |
- this._treePane.setExpanded(this._axNode.backendDOMNodeId(), true); |
super.expand(); |
} |
@@ -302,8 +269,6 @@ Accessibility.AXNodeTreeElement = class extends UI.TreeElement { |
if (!this._axNode || this._axNode.hasOnlyUnloadedChildren()) |
return; |
- if (this._treePane) |
- this._treePane.setExpanded(this._axNode.backendDOMNodeId(), false); |
super.collapse(); |
} |
@@ -357,106 +322,3 @@ Accessibility.AXNodeTreeElement.RoleStyles = { |
role: 'ax-role', |
}; |
-/** |
- * @unrestricted |
- */ |
-Accessibility.ExpandSiblingsButton = class { |
- /** |
- * @param {!Accessibility.AXNodeTreeParentElement} treeElement |
- * @param {number} numSiblings |
- */ |
- constructor(treeElement, numSiblings) { |
- this._treeElement = treeElement; |
- |
- this.element = createElementWithClass('button', 'expand-siblings'); |
- this.element.textContent = Common.UIString((numSiblings === 1 ? '+ %d node' : '+ %d nodes'), numSiblings); |
- this.element.addEventListener('mousedown', this._handleMouseDown.bind(this)); |
- } |
- |
- /** |
- * @param {!Event} event |
- */ |
- _handleMouseDown(event) { |
- this._treeElement.expandSiblings(); |
- event.consume(); |
- } |
-}; |
- |
-/** |
- * @unrestricted |
- */ |
-Accessibility.AXNodeTreeParentElement = class extends Accessibility.AXNodeTreeElement { |
- /** |
- * @param {!Accessibility.AccessibilityNode} axNode |
- * @param {!Accessibility.AXNodeTreeElement} inspectedNodeTreeElement |
- * @param {!Accessibility.AXTreePane} treePane |
- */ |
- constructor(axNode, inspectedNodeTreeElement, treePane) { |
- super(axNode, treePane); |
- |
- this._inspectedNodeTreeElement = inspectedNodeTreeElement; |
- var numSiblings = axNode.children().length - 1; |
- this._expandSiblingsButton = new Accessibility.ExpandSiblingsButton(this, numSiblings); |
- this._partiallyExpanded = false; |
- } |
- |
- /** |
- * @override |
- */ |
- onattach() { |
- super.onattach(); |
- if (this._treePane.isExpanded(this._axNode.backendDOMNodeId())) |
- this.listItemElement.classList.add('siblings-expanded'); |
- if (this._axNode.numChildren() > 1) |
- this.titleElement().insertBefore(this._expandSiblingsButton.element, this._inspectNodeButton.element); |
- } |
- |
- /** |
- * @param {boolean} altKey |
- * @return {boolean} |
- * @override |
- */ |
- descendOrExpand(altKey) { |
- if (!this.expanded || !this._partiallyExpanded) |
- return super.descendOrExpand(altKey); |
- |
- this.expandSiblings(); |
- if (altKey) |
- this.expandRecursively(); |
- return true; |
- } |
- |
- /** |
- * @override |
- */ |
- expand() { |
- super.expand(); |
- this._partiallyExpanded = true; |
- } |
- |
- expandSiblings() { |
- this.listItemElement.classList.add('siblings-expanded'); |
- this.appendSiblings(); |
- this.expanded = true; |
- this._partiallyExpanded = false; |
- this._treePane.setExpanded(this._axNode.backendDOMNodeId(), true); |
- } |
- |
- appendSiblings() { |
- var inspectedAXNode = this._inspectedNodeTreeElement.axNode(); |
- var nextIndex = 0; |
- var foundInspectedNode = false; |
- for (var sibling of this._axNode.children()) { |
- var siblingTreeElement = null; |
- if (sibling === inspectedAXNode) { |
- foundInspectedNode = true; |
- continue; |
- } |
- siblingTreeElement = new Accessibility.AXNodeTreeElement(sibling, this._treePane); |
- if (foundInspectedNode) |
- this.appendChild(siblingTreeElement); |
- else |
- this.insertChild(siblingTreeElement, nextIndex++); |
- } |
- } |
-}; |