Chromium Code Reviews| Index: athena/extensions/chrome/extensions_delegate_impl.cc |
| diff --git a/athena/extensions/chrome/extensions_delegate_impl.cc b/athena/extensions/chrome/extensions_delegate_impl.cc |
| index de97c306f299a8ad3d548346d7f78b7cf53abea8..3caa2fed7b18812eb8df44c03b46115516e71634 100644 |
| --- a/athena/extensions/chrome/extensions_delegate_impl.cc |
| +++ b/athena/extensions/chrome/extensions_delegate_impl.cc |
| @@ -4,12 +4,16 @@ |
| #include "athena/extensions/public/extensions_delegate.h" |
| +#include "athena/activity/public/activity_factory.h" |
| +#include "athena/activity/public/activity_manager.h" |
| #include "athena/extensions/chrome/athena_apps_client.h" |
| #include "base/macros.h" |
| +#include "base/strings/utf_string_conversions.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/extensions/extension_util.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/extensions/application_launch.h" |
| +#include "chrome/browser/web_applications/web_app.h" |
| #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
| #include "extensions/browser/extension_registry.h" |
| #include "extensions/browser/extension_system.h" |
| @@ -71,14 +75,35 @@ class ChromeExtensionsDelegate : public ExtensionsDelegate { |
| } |
| params.container = extensions::LAUNCH_CONTAINER_WINDOW; |
| - OpenApplication(params); |
| + // V2 apps |
| + if (CanLaunchViaEvent(extension)) { |
| + OpenApplication(params); |
| + return true; |
| + } |
| + LaunchV1App(params, extension); |
| return true; |
| } |
| + |
| virtual bool UnloadApp(const std::string& app_id) OVERRIDE { |
| // TODO(skuhne): Implement using extension service. |
| return false; |
| } |
| + void LaunchV1App(const AppLaunchParams& params, |
| + const extensions::Extension* extension) { |
| + // TODO(oshima): Just activate if the app is already running. |
| + const GURL url_input = params.override_url; |
| + |
| + DCHECK(!url_input.is_empty() || extension); |
| + GURL url = UrlForExtension(extension, url_input); |
| + std::string app_name = extension |
|
Jun Mukai
2014/09/04 21:47:12
LaunchApp early-exits if |extension| is NULL, whic
oshima
2014/09/04 22:13:55
You're right. Removed NULL condition.
|
| + ? extension->name() |
| + : web_app::GenerateApplicationNameFromURL(url); |
| + athena::ActivityManager::Get()->AddActivity( |
| + athena::ActivityFactory::Get()->CreateWebActivity( |
| + GetBrowserContext(), base::UTF8ToUTF16(app_name), url)); |
| + } |
| + |
| // ExtensionService for the browser context this is created for. |
| ExtensionService* extension_service_; |