Index: chrome/browser/resources/extensions/extension_list.js |
diff --git a/chrome/browser/resources/extensions/extension_list.js b/chrome/browser/resources/extensions/extension_list.js |
index f6967bd6297656b638d75cb63c44064ba79773fc..47dd7103a3af70ab966d33722af678c77be009f5 100644 |
--- a/chrome/browser/resources/extensions/extension_list.js |
+++ b/chrome/browser/resources/extensions/extension_list.js |
@@ -285,11 +285,32 @@ cr.define('extensions', function() { |
this.extensions_ = extensions; |
this.showExtensionNodes_(); |
resolve(); |
+ |
+ // |onUpdateFinished_| should be called after the list becomes visible |
+ // in extensions.js. |resolve| is async, so |onUpdateFinished_| |
+ // shouldn't be called directly. |
+ this.extensionsUpdated_.then(this.onUpdateFinished_.bind(this)); |
}.bind(this)); |
}.bind(this)); |
return this.extensionsUpdated_; |
}, |
+ /** Updates elements that need to be visible in order to update properly. */ |
+ onUpdateFinished_: function() { |
+ assert(!this.hidden); |
+ assert(!this.parentElement.hidden); |
+ |
+ this.updateFocusableElements(); |
+ |
+ var idToHighlight = this.getIdQueryParam_(); |
+ if (idToHighlight && $(idToHighlight)) |
+ this.scrollToNode_(idToHighlight); |
+ |
+ var idToOpenOptions = this.getOptionsQueryParam_(); |
+ if (idToOpenOptions && $(idToOpenOptions)) |
+ this.showEmbeddedExtensionOptions_(idToOpenOptions, true); |
+ }, |
+ |
/** @return {number} The number of extensions being displayed. */ |
getNumExtensions: function() { |
return this.extensions_.length; |
@@ -339,14 +360,6 @@ cr.define('extensions', function() { |
assertInstanceof(node, ExtensionFocusRow).destroy(); |
} |
} |
- |
- var idToHighlight = this.getIdQueryParam_(); |
- if (idToHighlight && $(idToHighlight)) |
- this.scrollToNode_(idToHighlight); |
- |
- var idToOpenOptions = this.getOptionsQueryParam_(); |
- if (idToOpenOptions && $(idToOpenOptions)) |
- this.showEmbeddedExtensionOptions_(idToOpenOptions, true); |
}, |
/** Updates each row's focusable elements without rebuilding the grid. */ |