Chromium Code Reviews| Index: ui/webui/resources/js/cr/ui/tabs.js |
| diff --git a/ui/webui/resources/js/cr/ui/tabs.js b/ui/webui/resources/js/cr/ui/tabs.js |
| index 6afa5663133d325dc80161f6fa9b98cb5314e712..571c6436c4bae92a57206f4331f73ac3b3f993e9 100644 |
| --- a/ui/webui/resources/js/cr/ui/tabs.js |
| +++ b/ui/webui/resources/js/cr/ui/tabs.js |
| @@ -10,7 +10,9 @@ cr.define('cr.ui', function() { |
| * @return {TabBox} The tab box if found. |
| */ |
| function getTabBox(el) { |
| - return el.parentElement && el.parentElement.parentElement; |
| + return findAncestor(el, function(node) { |
| + return node.tagName == 'TABBOX'; |
| + }); |
| } |
| /** |
| @@ -39,12 +41,14 @@ cr.define('cr.ui', function() { |
| TABPANEL: TabPanel |
| }; |
| - var child; |
| - for (var i = 0; child = this.children[i]; i++) { |
| - var constr = map[child.tagName]; |
| - if (constr) |
| + var tagNames = Object.keys(map); |
| + tagNames.forEach(function(tagName) { |
|
Dan Beam
2013/05/25 02:43:33
nit: Object.keys(map).forEach(function(tagName) {
dvh
2013/05/25 03:53:22
Done.
|
| + var children = this.getElementsByTagName(tagName); |
| + var constr = map[tagName]; |
| + for (var i = 0; child = children[i]; i++) { |
| cr.ui.decorate(child, constr); |
| - } |
| + } |
| + }.bind(this)); |
| } |
| /** |
| @@ -53,10 +57,18 @@ cr.define('cr.ui', function() { |
| * @this {TabBox} |
| */ |
| function selectedIndexSetHook(selectedIndex) { |
| - var child, tabChild; |
| - for (var i = 0; child = this.children[i]; i++) { |
| - for (var j = 0; tabChild = child.children[j]; j++) { |
| - tabChild.selected = j == selectedIndex; |
| + var child, tabChild, element; |
| + element = this.getElementsByTagName('TABS')[0]; |
|
Dan Beam
2013/05/25 02:43:33
nit: this.querySelector('tabs');
dvh
2013/05/25 03:53:22
Done.
|
| + if (element) { |
| + for (var i = 0; child = element.children[i]; i++) { |
| + child.selected = i == selectedIndex; |
| + } |
| + } |
| + |
| + element = this.getElementsByTagName('TABPANELS')[0]; |
| + if (element) { |
| + for (var i = 0; child = element.children[i]; i++) { |
| + child.selected = i == selectedIndex; |
| } |
| } |
| } |
| @@ -113,7 +125,7 @@ cr.define('cr.ui', function() { |
| decorate: function() { |
| decorateChildren.call(this); |
| - // Make the Tabs element fousable. |
| + // Make the Tabs element focusable. |
| this.tabIndex = 0; |
| this.addEventListener('keydown', this.handleKeyDown_.bind(this)); |
| @@ -149,8 +161,9 @@ cr.define('cr.ui', function() { |
| delta *= -1; |
| var count = this.children.length; |
| - var index = this.parentElement.selectedIndex; |
| - this.parentElement.selectedIndex = (index + delta + count) % count; |
| + var tabbox = getTabBox(this); |
| + var index = tabbox.selectedIndex; |
| + tabbox.selectedIndex = (index + delta + count) % count; |
| // Show focus outline since we used the keyboard. |
| this.focusOutlineManager_.visible = true; |