Index: chrome/browser/extensions/app_shortcut_manager.cc |
diff --git a/chrome/browser/extensions/app_shortcut_manager.cc b/chrome/browser/extensions/app_shortcut_manager.cc |
index 53aba19dcb9ab311789f31967f4b06da1105e0ab..a3357f80cd241713c78dba0d386dff14d10f01d8 100644 |
--- a/chrome/browser/extensions/app_shortcut_manager.cc |
+++ b/chrome/browser/extensions/app_shortcut_manager.cc |
@@ -36,6 +36,8 @@ AppShortcutManager::AppShortcutManager(Profile* profile) |
tracker_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALLED, |
content::Source<Profile>(profile_)); |
+ registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED, |
+ content::Source<Profile>(profile_)); |
} |
void AppShortcutManager::OnImageLoaded(const gfx::Image& image, |
@@ -61,15 +63,28 @@ void AppShortcutManager::OnImageLoaded(const gfx::Image& image, |
void AppShortcutManager::Observe(int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
- DCHECK(type == chrome::NOTIFICATION_EXTENSION_INSTALLED); |
- #if !defined(OS_MACOSX) |
- const Extension* extension = content::Details<const Extension>( |
- details).ptr(); |
- if (!disable_shortcut_creation_for_tests && |
- extension->is_platform_app() && |
- extension->location() != Extension::LOAD) |
- InstallApplicationShortcuts(extension); |
- #endif |
+#if !defined(OS_MACOSX) |
+ switch (type) { |
+ case chrome::NOTIFICATION_EXTENSION_INSTALLED: { |
+ const Extension* extension = content::Details<const Extension>( |
+ details).ptr(); |
+ if (!disable_shortcut_creation_for_tests && |
+ extension->is_platform_app() && |
+ extension->location() != Extension::LOAD) { |
+ InstallApplicationShortcuts(extension); |
+ } |
+ break; |
+ } |
+ case chrome::NOTIFICATION_EXTENSION_UNINSTALLED: { |
+ std::string extension_id = *content::Details<std::string>(details).ptr(); |
+ if (!disable_shortcut_creation_for_tests) |
+ web_app::DeleteAllShortcuts(profile_->GetPath(), extension_id); |
+ break; |
+ } |
+ default: |
+ NOTREACHED(); |
+ } |
+#endif |
} |
// static |