summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/extensions/extensions_ui.cc17
1 files changed, 14 insertions, 3 deletions
diff --git a/chrome/browser/extensions/extensions_ui.cc b/chrome/browser/extensions/extensions_ui.cc
index 55c05e0..c411444 100644
--- a/chrome/browser/extensions/extensions_ui.cc
+++ b/chrome/browser/extensions/extensions_ui.cc
@@ -297,14 +297,16 @@ void ExtensionsDOMHandler::OnIconsLoaded(DictionaryValue* json) {
// Register for notifications that we need to reload the page.
registrar_.RemoveAll();
+ registrar_.Add(this, NotificationType::EXTENSION_LOADED,
+ NotificationService::AllSources());
registrar_.Add(this, NotificationType::EXTENSION_PROCESS_CREATED,
NotificationService::AllSources());
registrar_.Add(this, NotificationType::EXTENSION_UNLOADED,
NotificationService::AllSources());
- registrar_.Add(this, NotificationType::EXTENSION_UPDATE_DISABLED,
- NotificationService::AllSources());
registrar_.Add(this, NotificationType::EXTENSION_UNLOADED_DISABLED,
NotificationService::AllSources());
+ registrar_.Add(this, NotificationType::EXTENSION_UPDATE_DISABLED,
+ NotificationService::AllSources());
}
ExtensionResource ExtensionsDOMHandler::PickExtensionIcon(
@@ -533,10 +535,19 @@ void ExtensionsDOMHandler::Observe(NotificationType type,
const NotificationSource& source,
const NotificationDetails& details) {
switch (type.value) {
+ // We listen to both EXTENSION_LOADED and EXTENSION_PROCESS_CREATED because
+ // we don't know about the views for an extension at EXTENSION_LOADED, but
+ // if we only listen to EXTENSION_PROCESS_CREATED, we'll miss extensions
+ // that don't have a process at startup.
+ //
+ // Doing it this way gets everything, but it means that we will actually
+ // render the page twice. This doesn't seem to result in any noticeable
+ // flicker, though.
+ case NotificationType::EXTENSION_LOADED:
case NotificationType::EXTENSION_PROCESS_CREATED:
case NotificationType::EXTENSION_UNLOADED:
- case NotificationType::EXTENSION_UPDATE_DISABLED:
case NotificationType::EXTENSION_UNLOADED_DISABLED:
+ case NotificationType::EXTENSION_UPDATE_DISABLED:
if (dom_ui_->tab_contents())
HandleRequestExtensionsData(NULL);
break;