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

Unified Diff: third_party/WebKit/Source/devtools/front_end/accessibility/AXTreePane.js

Issue 2322413003: Show ancestor hierarchy in accessibility panel (Closed)
Patch Set: Add new test for ancestors Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
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
new file mode 100644
index 0000000000000000000000000000000000000000..9e8a6d371487482bdcecf13fb0c4d5d02c97a031
--- /dev/null
+++ b/third_party/WebKit/Source/devtools/front_end/accessibility/AXTreePane.js
@@ -0,0 +1,131 @@
+// 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}
+ */
+WebInspector.AXTreePane = function()
+{
+ WebInspector.AccessibilitySubPane.call(this, WebInspector.UIString("Accessibility Tree"));
+
+ this._treeOutline = this.createTreeOutline();
+
+ this.element.classList.add("accessibility-computed");
+};
+
+
+WebInspector.AXTreePane.prototype = {
+ /**
+ * @param {!Array<!AccessibilityAgent.AXNode>} nodes
+ */
+ setAXNodeAndAncestors: function(nodes)
+ {
+ this._nodes = nodes;
+
+ var target = this.node().target();
+ var treeOutline = this._treeOutline;
+ treeOutline.removeChildren();
+ treeOutline.element.classList.remove("hidden");
+ var previous = treeOutline.rootElement();
+ while (nodes.length) {
+ var ancestor = nodes.pop();
+ var ancestorTreeElement = new WebInspector.AXNodeTreeElement(ancestor, target);
+ previous.appendChild(ancestorTreeElement);
+ previous.expand();
+ previous = ancestorTreeElement;
+ }
+ previous.selectable = true;
+ previous.select(true /* omitFocus */);
+ },
+
+ __proto__: WebInspector.AccessibilitySubPane.prototype
+};
+
+/**
+ * @constructor
+ * @extends {TreeElement}
+ * @param {!AccessibilityAgent.AXNode} axNode
+ * @param {!WebInspector.Target} target
+ */
+WebInspector.AXNodeTreeElement = function(axNode, target)
+{
+ /** @type {!AccessibilityAgent.AXNode} */
+ this._axNode = axNode;
+
+ /** @type {!WebInspector.Target} */
+ this._target = target;
+
+ // Pass an empty title, the title gets made later in onattach.
+ TreeElement.call(this, "");
+
+ this.selectable = false;
+};
+
+/** @type {!Object<string, string>} */
+WebInspector.AXNodeTreeElement.RoleStyles = {
+ internalRole: "ax-internal-role",
+ role: "ax-role",
+};
+
+WebInspector.AXNodeTreeElement.prototype = {
+ /**
+ * @override
+ */
+ onattach: function()
+ {
+ this._update();
+ },
+
+ _update: function()
+ {
+ this.listItemElement.removeChildren();
+
+ if (this._axNode.ignored) {
+ this._appendIgnoredNodeElement();
+ } else {
+ this._appendRoleElement(this._axNode.role);
+ if ("name" in this._axNode && this._axNode.name.value) {
+ this.listItemElement.createChild("span", "separator").textContent = "\u00A0";
+ this._appendNameElement(/** @type {string} */ (this._axNode.name.value));
+ }
+ }
+ },
+
+ /**
+ * @param {string} name
+ */
+ _appendNameElement: function(name)
+ {
+ var nameElement = createElement("span");
+ nameElement.textContent = '"' + name + '"';
+ nameElement.classList.add("ax-readable-string");
+ this.listItemElement.appendChild(nameElement);
+ },
+
+ /**
+ * @param {!AccessibilityAgent.AXValue=} role
+ */
+ _appendRoleElement: function(role)
+ {
+ if (!role)
+ return;
+
+ var roleElement = createElementWithClass("span", "monospace");
+ roleElement.classList.add(WebInspector.AXNodeTreeElement.RoleStyles[role.type]);
+ roleElement.setTextContentTruncatedIfNeeded(role.value || "");
+
+ this.listItemElement.appendChild(roleElement);
+ },
+
+ _appendIgnoredNodeElement: function()
+ {
+ var ignoredNodeElement = createElementWithClass("span", "monospace");
+ ignoredNodeElement.textContent = WebInspector.UIString("Ignored");
+ ignoredNodeElement.classList.add("ax-tree-ignored-node");
+ this.listItemElement.appendChild(ignoredNodeElement);
+ },
+
+ __proto__: TreeElement.prototype
+};

Powered by Google App Engine
This is Rietveld 408576698