OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/extensions/application_launch.h" | 5 #include "chrome/browser/ui/extensions/application_launch.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "apps/launcher.h" | 9 #include "apps/launcher.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 21 matching lines...) Expand all Loading... |
32 #include "chrome/common/extensions/manifest_url_handler.h" | 32 #include "chrome/common/extensions/manifest_url_handler.h" |
33 #include "chrome/common/url_constants.h" | 33 #include "chrome/common/url_constants.h" |
34 #include "content/public/browser/render_view_host.h" | 34 #include "content/public/browser/render_view_host.h" |
35 #include "content/public/browser/web_contents.h" | 35 #include "content/public/browser/web_contents.h" |
36 #include "content/public/common/renderer_preferences.h" | 36 #include "content/public/common/renderer_preferences.h" |
37 #include "extensions/browser/extension_prefs.h" | 37 #include "extensions/browser/extension_prefs.h" |
38 #include "extensions/browser/extension_registry.h" | 38 #include "extensions/browser/extension_registry.h" |
39 #include "extensions/browser/extension_system.h" | 39 #include "extensions/browser/extension_system.h" |
40 #include "extensions/common/constants.h" | 40 #include "extensions/common/constants.h" |
41 #include "extensions/common/extension.h" | 41 #include "extensions/common/extension.h" |
| 42 #include "extensions/common/features/feature.h" |
| 43 #include "extensions/common/features/feature_provider.h" |
42 #include "grit/generated_resources.h" | 44 #include "grit/generated_resources.h" |
43 #include "ui/base/window_open_disposition.h" | 45 #include "ui/base/window_open_disposition.h" |
44 #include "ui/gfx/rect.h" | 46 #include "ui/gfx/rect.h" |
45 | 47 |
46 #if defined(OS_MACOSX) | 48 #if defined(OS_MACOSX) |
47 #include "chrome/browser/ui/browser_commands_mac.h" | 49 #include "chrome/browser/ui/browser_commands_mac.h" |
48 #endif | 50 #endif |
49 | 51 |
50 using content::WebContents; | 52 using content::WebContents; |
51 using extensions::Extension; | 53 using extensions::Extension; |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 return NULL; | 317 return NULL; |
316 Profile* profile = params.profile; | 318 Profile* profile = params.profile; |
317 | 319 |
318 WebContents* tab = NULL; | 320 WebContents* tab = NULL; |
319 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile); | 321 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile); |
320 prefs->SetActiveBit(extension->id(), true); | 322 prefs->SetActiveBit(extension->id(), true); |
321 | 323 |
322 UMA_HISTOGRAM_ENUMERATION( | 324 UMA_HISTOGRAM_ENUMERATION( |
323 "Extensions.AppLaunchContainer", params.container, 100); | 325 "Extensions.AppLaunchContainer", params.container, 100); |
324 | 326 |
325 if (extension->is_platform_app()) { | 327 if (CanLaunchViaEvent(extension)) { |
326 // Remember what desktop the launch happened on so that when the app opens a | 328 // Remember what desktop the launch happened on so that when the app opens a |
327 // window we can open them on the right desktop. | 329 // window we can open them on the right desktop. |
328 PerAppSettingsServiceFactory::GetForBrowserContext(profile)-> | 330 PerAppSettingsServiceFactory::GetForBrowserContext(profile)-> |
329 SetDesktopLastLaunchedFrom(extension->id(), params.desktop_type); | 331 SetDesktopLastLaunchedFrom(extension->id(), params.desktop_type); |
330 | 332 |
331 apps::LaunchPlatformAppWithCommandLine( | 333 apps::LaunchPlatformAppWithCommandLine( |
332 profile, extension, params.command_line, params.current_directory); | 334 profile, extension, params.command_line, params.current_directory); |
333 return NULL; | 335 return NULL; |
334 } | 336 } |
335 | 337 |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 // up in LoadingStateChanged to schedule a GetApplicationInfo. And when | 461 // up in LoadingStateChanged to schedule a GetApplicationInfo. And when |
460 // the web app info is available, extensions::TabHelper notifies Browser via | 462 // the web app info is available, extensions::TabHelper notifies Browser via |
461 // OnDidGetApplicationInfo, which calls | 463 // OnDidGetApplicationInfo, which calls |
462 // web_app::UpdateShortcutForTabContents when it sees UPDATE_SHORTCUT as | 464 // web_app::UpdateShortcutForTabContents when it sees UPDATE_SHORTCUT as |
463 // pending web app action. | 465 // pending web app action. |
464 extensions::TabHelper::FromWebContents(tab)->set_pending_web_app_action( | 466 extensions::TabHelper::FromWebContents(tab)->set_pending_web_app_action( |
465 extensions::TabHelper::UPDATE_SHORTCUT); | 467 extensions::TabHelper::UPDATE_SHORTCUT); |
466 | 468 |
467 return tab; | 469 return tab; |
468 } | 470 } |
| 471 |
| 472 bool CanLaunchViaEvent(const extensions::Extension* extension) { |
| 473 extensions::FeatureProvider* feature_provider = |
| 474 extensions::FeatureProvider::GetAPIFeatures(); |
| 475 extensions::Feature* feature = feature_provider->GetFeature("app.runtime"); |
| 476 return feature->IsAvailableToExtension(extension).is_available(); |
| 477 } |
OLD | NEW |