| Index: chrome/browser/extensions/tab_helper.cc | 
| diff --git a/chrome/browser/extensions/tab_helper.cc b/chrome/browser/extensions/tab_helper.cc | 
| index fca7b655afc0a1ade0d1bf7465ddde3ebd284a31..d02ad22b868c0f259a985587b16288f0cb76fd63 100644 | 
| --- a/chrome/browser/extensions/tab_helper.cc | 
| +++ b/chrome/browser/extensions/tab_helper.cc | 
| @@ -34,6 +34,7 @@ | 
| #include "chrome/browser/ui/browser_dialogs.h" | 
| #include "chrome/browser/ui/browser_finder.h" | 
| #include "chrome/browser/ui/host_desktop.h" | 
| +#include "chrome/browser/ui/web_applications/hosted_app_tab_helper.h" | 
| #include "chrome/browser/ui/web_applications/web_app_ui.h" | 
| #include "chrome/browser/web_applications/web_app.h" | 
| #include "chrome/common/extensions/extension.h" | 
| @@ -309,7 +310,8 @@ void TabHelper::OnDidGetApplicationInfo(int32 page_id, | 
| break; | 
| } | 
| case CREATE_HOSTED_APP: { | 
| -      CreateHostedApp(info); | 
| +      HostedAppTabHelper::FromWebContents(web_contents())-> | 
| +          CreateHostedApp(info); | 
| break; | 
| } | 
| case UPDATE_SHORTCUT: { | 
| @@ -328,39 +330,6 @@ void TabHelper::OnDidGetApplicationInfo(int32 page_id, | 
| #endif | 
| } | 
|  | 
| -void TabHelper::CreateHostedApp(const WebApplicationInfo& info) { | 
| -  ShellIntegration::ShortcutInfo shortcut_info; | 
| -  web_app::GetShortcutInfoForTab(web_contents(), &shortcut_info); | 
| -  WebApplicationInfo web_app_info; | 
| - | 
| -  web_app_info.is_bookmark_app = true; | 
| -  web_app_info.app_url = shortcut_info.url; | 
| -  web_app_info.title = shortcut_info.title; | 
| -  web_app_info.urls.push_back(web_app_info.app_url); | 
| - | 
| -  // TODO(calamity): this should attempt to download the best icon that it can | 
| -  // from |info.icons| rather than just using the favicon as it scales up badly. | 
| -  // Fix this once |info.icons| gets populated commonly. | 
| - | 
| -  // Get the smallest icon in the icon family (should have only 1). | 
| -  const gfx::Image* icon = shortcut_info.favicon.GetBest(0, 0); | 
| -  SkBitmap bitmap = icon ? icon->AsBitmap() : SkBitmap(); | 
| - | 
| -  if (!icon->IsEmpty()) { | 
| -    WebApplicationInfo::IconInfo icon_info; | 
| -    icon_info.data = bitmap; | 
| -    icon_info.width = icon_info.data.width(); | 
| -    icon_info.height = icon_info.data.height(); | 
| -    web_app_info.icons.push_back(icon_info); | 
| -  } | 
| - | 
| -  ExtensionService* service = profile_->GetExtensionService(); | 
| -  scoped_refptr<extensions::CrxInstaller> installer( | 
| -      extensions::CrxInstaller::CreateSilent(service)); | 
| -  installer->set_error_on_unsupported_requirements(true); | 
| -  installer->InstallWebApp(web_app_info); | 
| -} | 
| - | 
| void TabHelper::OnInlineWebstoreInstall( | 
| int install_id, | 
| int return_route_id, | 
|  |