| Index: chrome/browser/extensions/extension_toolbar_model.cc
|
| diff --git a/chrome/browser/extensions/extension_toolbar_model.cc b/chrome/browser/extensions/extension_toolbar_model.cc
|
| index 74e8280992a878c0df0072d31c4e260259126eb2..3bd6c3d0e2a501e12ae3098c5bfb15fa4fd9ffda 100644
|
| --- a/chrome/browser/extensions/extension_toolbar_model.cc
|
| +++ b/chrome/browser/extensions/extension_toolbar_model.cc
|
| @@ -185,52 +185,57 @@ void ExtensionToolbarModel::Observe(
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) {
|
| ExtensionService* extension_service =
|
| - extensions::ExtensionSystem::Get(profile_)->extension_service();
|
| - if (!extension_service || !extension_service->is_ready())
|
| + ExtensionSystem::Get(profile_)->extension_service();
|
| + DCHECK(extension_service);
|
| + if (!extension_service->is_ready())
|
| return;
|
|
|
| - if (type == chrome::NOTIFICATION_EXTENSIONS_READY) {
|
| - InitializeExtensionList(extension_service);
|
| - return;
|
| - }
|
| -
|
| - const Extension* extension = NULL;
|
| - if (type == chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED) {
|
| - extension = content::Details<extensions::UnloadedExtensionInfo>(
|
| - details)->extension;
|
| - } else if (type ==
|
| - chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED) {
|
| - extension = extension_service->GetExtensionById(
|
| - *content::Details<const std::string>(details).ptr(), true);
|
| - } else {
|
| - extension = content::Details<const Extension>(details).ptr();
|
| - }
|
| - if (type == chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED) {
|
| - // We don't want to add the same extension twice. It may have already been
|
| - // added by EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED below, if the user
|
| - // hides the browser action and then disables and enables the extension.
|
| - for (size_t i = 0; i < toolbar_items_.size(); i++) {
|
| - if (toolbar_items_[i].get() == extension)
|
| - return; // Already exists.
|
| - }
|
| - if (ExtensionActionAPI::GetBrowserActionVisibility(
|
| - extension_prefs_, extension->id())) {
|
| - AddExtension(extension);
|
| + switch (type) {
|
| + case chrome::NOTIFICATION_EXTENSIONS_READY:
|
| + InitializeExtensionList(extension_service);
|
| + break;
|
| + case chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: {
|
| + const Extension* extension =
|
| + content::Details<const Extension>(details).ptr();
|
| + // We don't want to add the same extension twice. It may have already been
|
| + // added by EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED below, if the user
|
| + // hides the browser action and then disables and enables the extension.
|
| + for (size_t i = 0; i < toolbar_items_.size(); i++) {
|
| + if (toolbar_items_[i].get() == extension)
|
| + return; // Already exists.
|
| + }
|
| + if (ExtensionActionAPI::GetBrowserActionVisibility(extension_prefs_,
|
| + extension->id())) {
|
| + AddExtension(extension);
|
| + }
|
| + break;
|
| }
|
| - } else if (type == chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED) {
|
| - RemoveExtension(extension);
|
| - } else if (type == chrome::NOTIFICATION_EXTENSION_UNINSTALLED) {
|
| - UninstalledExtension(extension);
|
| - } else if (type ==
|
| - chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED) {
|
| - if (ExtensionActionAPI::GetBrowserActionVisibility(
|
| - extension_prefs_, extension->id())) {
|
| - AddExtension(extension);
|
| - } else {
|
| + case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: {
|
| + const Extension* extension =
|
| + content::Details<extensions::UnloadedExtensionInfo>(details)
|
| + ->extension;
|
| RemoveExtension(extension);
|
| + break;
|
| }
|
| - } else {
|
| - NOTREACHED() << "Received unexpected notification";
|
| + case chrome::NOTIFICATION_EXTENSION_UNINSTALLED: {
|
| + const Extension* extension =
|
| + content::Details<const Extension>(details).ptr();
|
| + UninstalledExtension(extension);
|
| + break;
|
| + }
|
| + case chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED: {
|
| + const Extension* extension = extension_service->GetExtensionById(
|
| + *content::Details<const std::string>(details).ptr(), true);
|
| + if (ExtensionActionAPI::GetBrowserActionVisibility(extension_prefs_,
|
| + extension->id())) {
|
| + AddExtension(extension);
|
| + } else {
|
| + RemoveExtension(extension);
|
| + }
|
| + break;
|
| + }
|
| + default:
|
| + NOTREACHED() << "Received unexpected notification";
|
| }
|
| }
|
|
|
|
|