Chromium Code Reviews| 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 7d1f275403cd833be7008724a10510d3192e9fde..c83fcafb8a6f06bd89d465c7c81d18b5c3af7ce3 100644 |
| --- a/chrome/browser/extensions/app_shortcut_manager.cc |
| +++ b/chrome/browser/extensions/app_shortcut_manager.cc |
| @@ -4,7 +4,9 @@ |
| #include "chrome/browser/extensions/app_shortcut_manager.h" |
| +#include "base/bind.h" |
| #include "base/command_line.h" |
| +#include "base/logging.h" |
| #include "base/utf_string_conversions.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/web_applications/web_app.h" |
| @@ -17,6 +19,10 @@ |
| #include "skia/ext/image_operations.h" |
| #include "ui/base/resource/resource_bundle.h" |
| +#if defined(OS_WIN) |
| +#include "chrome/browser/extensions/app_host_installer_win.h" |
| +#endif |
| + |
| namespace extensions { |
| namespace { |
| @@ -81,8 +87,15 @@ void AppShortcutManager::Observe(int type, |
| case chrome::NOTIFICATION_EXTENSION_INSTALLED: { |
| const Extension* extension = content::Details<const Extension>( |
| details).ptr(); |
| - if (extension->is_platform_app()) |
| + if (extension->is_platform_app()) { |
| +#if defined(OS_WIN) |
| + extensions::AppHostInstaller::EnsureAppHostInstalled( |
| + base::Bind(&AppShortcutManager::OnAppHostInstallationComplete, |
| + base::Unretained(this), extension)); |
|
erikwright (departed)
2012/11/02 18:56:38
For safety the instance pointer should be a weak p
huangs
2012/11/02 20:22:36
Done.
|
| +#else |
| UpdateApplicationShortcuts(extension); |
| +#endif |
| + } |
| break; |
| } |
| case chrome::NOTIFICATION_EXTENSION_UNINSTALLED: { |
| @@ -97,6 +110,18 @@ void AppShortcutManager::Observe(int type, |
| #endif |
| } |
| +#if defined(OS_WIN) |
| +void AppShortcutManager::OnAppHostInstallationComplete( |
| + const Extension* extension, bool app_host_install_success) { |
| + if (!app_host_install_success) { |
| + // Do not create shortcuts if App Host fails to install. |
| + LOG(ERROR) << "Application Runtime installation failed."; |
| + return; |
| + } |
| + UpdateApplicationShortcuts(extension); |
| +} |
| +#endif |
| + |
| void AppShortcutManager::UpdateApplicationShortcuts( |
| const Extension* extension) { |
| shortcut_info_ = ShortcutInfoForExtensionAndProfile(extension, profile_); |