diff options
Diffstat (limited to 'chromium/ui/webui/resources/js/cr/ui/tree.js')
-rw-r--r-- | chromium/ui/webui/resources/js/cr/ui/tree.js | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/chromium/ui/webui/resources/js/cr/ui/tree.js b/chromium/ui/webui/resources/js/cr/ui/tree.js index 3c12715d55d..04f978ebf72 100644 --- a/chromium/ui/webui/resources/js/cr/ui/tree.js +++ b/chromium/ui/webui/resources/js/cr/ui/tree.js @@ -201,9 +201,13 @@ cr.define('cr.ui', function() { if (oldSelectedItem) oldSelectedItem.selected = false; - if (item) + if (item) { item.selected = true; - + if (item.id) + this.setAttribute('aria-activedescendant', item.id); + } else { + this.removeAttribute('aria-activedescendant'); + } cr.dispatchSimpleEvent(this, 'change'); } }, @@ -231,6 +235,14 @@ cr.define('cr.ui', function() { cr.defineProperty(Tree, 'iconVisibility', cr.PropertyKind.ATTR); /** + * Incremental counter for an auto generated ID of the tree item. This will + * be incremented per element, so each element never share same ID. + * + * @type {number} + */ + var treeItemAutoGeneratedIdCounter = 0; + + /** * This is used as a blueprint for new tree item elements. * @type {!HTMLElement} */ @@ -253,7 +265,9 @@ cr.define('cr.ui', function() { * @extends {HTMLElement} */ var TreeItem = cr.ui.define(function() { - return treeItemProto.cloneNode(true); + var treeItem = treeItemProto.cloneNode(true); + treeItem.id = 'tree-item-autogen-id-' + treeItemAutoGeneratedIdCounter++; + return treeItem; }); TreeItem.prototype = { |