| Index: chrome/browser/extensions/launch_util.cc
|
| diff --git a/chrome/browser/extensions/launch_util.cc b/chrome/browser/extensions/launch_util.cc
|
| index 14423aec6f3a0682b86f874d8af828d2a4a60b01..e1f4d6fd7a0fd6ed67413da1456a58433a361293 100644
|
| --- a/chrome/browser/extensions/launch_util.cc
|
| +++ b/chrome/browser/extensions/launch_util.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/command_line.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/extensions/extension_prefs.h"
|
| +#include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/ui/host_desktop.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/extensions/extension_constants.h"
|
| @@ -32,7 +33,6 @@ const char kPrefLaunchType[] = "launchType";
|
|
|
| LaunchType GetLaunchType(const ExtensionPrefs* prefs,
|
| const Extension* extension) {
|
| - int value = -1;
|
| LaunchType result = LAUNCH_TYPE_DEFAULT;
|
|
|
| // Launch hosted apps as windows by default for streamlined hosted apps.
|
| @@ -42,13 +42,10 @@ LaunchType GetLaunchType(const ExtensionPrefs* prefs,
|
| result = LAUNCH_TYPE_WINDOW;
|
| }
|
|
|
| - if (prefs->ReadPrefAsInteger(extension->id(), kPrefLaunchType, &value) &&
|
| - (value == LAUNCH_TYPE_PINNED ||
|
| - value == LAUNCH_TYPE_REGULAR ||
|
| - value == LAUNCH_TYPE_FULLSCREEN ||
|
| - value == LAUNCH_TYPE_WINDOW)) {
|
| + int value = GetLaunchTypePrefValue(prefs, extension->id());
|
| + if (value >= LAUNCH_TYPE_FIRST && value < NUM_LAUNCH_TYPES)
|
| result = static_cast<LaunchType>(value);
|
| - }
|
| +
|
| #if defined(OS_MACOSX)
|
| // App windows are not yet supported on mac. Pref sync could make
|
| // the launch type LAUNCH_TYPE_WINDOW, even if there is no UI to set it
|
| @@ -66,11 +63,27 @@ LaunchType GetLaunchType(const ExtensionPrefs* prefs,
|
| return result;
|
| }
|
|
|
| -void SetLaunchType(ExtensionPrefs* prefs,
|
| +LaunchType GetLaunchTypePrefValue(const ExtensionPrefs* prefs,
|
| + const std::string& extension_id) {
|
| + int value = LAUNCH_TYPE_INVALID;
|
| + return prefs->ReadPrefAsInteger(extension_id, kPrefLaunchType, &value)
|
| + ? static_cast<LaunchType>(value) : LAUNCH_TYPE_INVALID;
|
| +}
|
| +
|
| +void SetLaunchType(ExtensionService* service,
|
| const std::string& extension_id,
|
| LaunchType launch_type) {
|
| - prefs->UpdateExtensionPref(extension_id, kPrefLaunchType,
|
| + DCHECK(launch_type >= LAUNCH_TYPE_FIRST && launch_type < NUM_LAUNCH_TYPES);
|
| +
|
| + service->extension_prefs()->UpdateExtensionPref(extension_id, kPrefLaunchType,
|
| new base::FundamentalValue(static_cast<int>(launch_type)));
|
| +
|
| + // Sync the launch type.
|
| + const Extension* extension = service->GetInstalledExtension(extension_id);
|
| + if (extension) {
|
| + ExtensionSyncService::Get(service->profile())->
|
| + SyncExtensionChangeIfNeeded(*extension);
|
| + }
|
| }
|
|
|
| LaunchContainer GetLaunchContainer(const ExtensionPrefs* prefs,
|
|
|