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_); |