Chromium Code Reviews| Index: chrome/browser/ui/startup/startup_browser_creator.cc |
| diff --git a/chrome/browser/ui/startup/startup_browser_creator.cc b/chrome/browser/ui/startup/startup_browser_creator.cc |
| index ca029f9c65880cf50435c1b06e2f9ea7a7d40da1..456b1a054bf3b48686f29a1518b9e9e24fc9382c 100644 |
| --- a/chrome/browser/ui/startup/startup_browser_creator.cc |
| +++ b/chrome/browser/ui/startup/startup_browser_creator.cc |
| @@ -24,6 +24,7 @@ |
| #include "base/prefs/pref_service.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "base/strings/string_split.h" |
| +#include "base/strings/string_tokenizer.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/threading/thread_restrictions.h" |
| #include "chrome/browser/app_mode/app_mode_utils.h" |
| @@ -63,6 +64,7 @@ |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/child_process_security_policy.h" |
| #include "content/public/browser/navigation_controller.h" |
| +#include "extensions/common/switches.h" |
| #include "net/base/net_util.h" |
| #if defined(USE_ASH) |
| @@ -609,7 +611,46 @@ bool StartupBrowserCreator::ProcessCmdLineImpl( |
| if (silent_launch) |
| return true; |
| - VLOG(2) << "ProcessCmdLineImpl: PLACE 4"; |
| + VLOG(2) << "ProcessCmdLineImpl: PLACE 4.A"; |
| + if (command_line.HasSwitch(extensions::switches::kLoadApps) && |
|
James Hawkins
2014/11/18 00:10:47
This method is ~300 lines long. Please break this
Zachary Kuznia
2014/11/18 01:17:52
Done.
|
| + !IncognitoModePrefs::ShouldLaunchIncognito( |
| + command_line, last_used_profile->GetPrefs())) { |
| + CommandLine::StringType path_list = |
| + command_line.GetSwitchValueNative(extensions::switches::kLoadApps); |
| + |
| + base::StringTokenizerT<CommandLine::StringType, |
| + CommandLine::StringType::const_iterator> |
| + tokenizer(path_list, FILE_PATH_LITERAL(",")); |
| + |
| + bool first_app = true; |
| + while (tokenizer.GetNext()) { |
| + base::FilePath app_absolute_dir = |
| + base::MakeAbsoluteFilePath(base::FilePath(tokenizer.token())); |
| + |
| + if (first_app) { |
| + first_app = false; |
| + if (!apps::AppLoadService::Get(last_used_profile)->LoadAndLaunch( |
| + app_absolute_dir, command_line, cur_dir)) { |
| + return false; |
| + } |
| + } else { |
| + if (!apps::AppLoadService::Get(last_used_profile)->Load( |
| + app_absolute_dir)) { |
| + return false; |
| + } |
| + } |
| + } |
| + |
| + // Return early here since we don't want to open a browser window. |
| + // The exception is when there are no browser windows, since we don't want |
| + // chrome to shut down. |
| + // TODO(jackhou): Do this properly once keep-alive is handled by the |
| + // background page of apps. Tracked at http://crbug.com/175381 |
| + if (chrome::GetTotalBrowserCountForProfile(last_used_profile) != 0) |
| + return true; |
| + } |
| + |
| + VLOG(2) << "ProcessCmdLineImpl: PLACE 4.B"; |
| // Check for --load-and-launch-app. |
| if (command_line.HasSwitch(apps::kLoadAndLaunchApp) && |
| !IncognitoModePrefs::ShouldLaunchIncognito( |