| Index: chrome/browser/extensions/extension_prefs.cc
|
| diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
|
| index b4e706d71179e642dd5501f74c98d398506fe18f..96e497f2e1bc8e913d696b887332ed2f4ae45811 100644
|
| --- a/chrome/browser/extensions/extension_prefs.cc
|
| +++ b/chrome/browser/extensions/extension_prefs.cc
|
| @@ -564,25 +564,46 @@ void ExtensionPrefs::SetAllowFileAccess(const std::string& extension_id,
|
| }
|
|
|
| ExtensionPrefs::LaunchType ExtensionPrefs::GetLaunchType(
|
| - const std::string& extension_id) {
|
| - int value;
|
| + const std::string& extension_id,
|
| + ExtensionPrefs::LaunchType default_pref_value) {
|
| + int value = -1;
|
| + LaunchType result = LAUNCH_REGULAR;
|
| +
|
| if (ReadExtensionPrefInteger(extension_id, kPrefLaunchType, &value) &&
|
| (value == LAUNCH_PINNED ||
|
| value == LAUNCH_REGULAR ||
|
| value == LAUNCH_FULLSCREEN ||
|
| value == LAUNCH_WINDOW)) {
|
| -
|
| -#if defined(OS_MACOSX)
|
| + result = static_cast<LaunchType>(value);
|
| + } else {
|
| + result = default_pref_value;
|
| + }
|
| + #if defined(OS_MACOSX)
|
| // App windows are not yet supported on mac. Pref sync could make
|
| // the launch type LAUNCH_WINDOW, even if there is no UI to set it
|
| // on mac.
|
| - if (value == LAUNCH_WINDOW)
|
| - return LAUNCH_REGULAR;
|
| -#endif
|
| - return static_cast<LaunchType>(value);
|
| - }
|
| + if (result == LAUNCH_WINDOW)
|
| + result = LAUNCH_REGULAR;
|
| + #endif
|
| +
|
| + return result;
|
| +}
|
| +
|
| +extension_misc::LaunchContainer ExtensionPrefs::GetLaunchContainer(
|
| + const Extension* extension,
|
| + ExtensionPrefs::LaunchType default_pref_value) {
|
| + extension_misc::LaunchContainer launch_container =
|
| + extension->launch_container();
|
| +
|
| + ExtensionPrefs::LaunchType prefs_launch_type =
|
| + GetLaunchType(extension->id(), default_pref_value);
|
| +
|
| + // If the user chose to open in a window, then launch in one.
|
| + if (prefs_launch_type == ExtensionPrefs::LAUNCH_WINDOW)
|
| + return extension_misc::LAUNCH_WINDOW;
|
|
|
| - return LAUNCH_REGULAR;
|
| + // Otherwise, use the container the extension chose.
|
| + return launch_container;
|
| }
|
|
|
| void ExtensionPrefs::SetLaunchType(const std::string& extension_id,
|
|
|