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 cc9a84beee35e5910e4388176ba4a622c49fae66..d89bbe8e5684b73e57d8b6ec50e7a516ea77df53 100644 |
--- a/chrome/browser/ui/startup/startup_browser_creator.cc |
+++ b/chrome/browser/ui/startup/startup_browser_creator.cc |
@@ -28,6 +28,7 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "base/threading/thread_restrictions.h" |
#include "chrome/browser/app_mode/app_mode_utils.h" |
+#include "chrome/browser/apps/install_chrome_app.h" |
#include "chrome/browser/auto_launch_trial.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chrome_notification_types.h" |
@@ -507,6 +508,14 @@ bool StartupBrowserCreator::ProcessCmdLineImpl( |
return false; |
} |
+ std::vector<GURL> extra_urls_to_launch; |
tapted
2014/07/25 03:49:12
URLs are already added in StartupBrowserCreator::L
jackhou1
2014/07/28 02:58:15
I open up the webstore page because WebstoreStartu
|
+ if (command_line.HasSwitch(switches::kInstallChromeApp)) { |
+ extensions::StartupHelper helper; |
+ helper.InstallChromeApp(command_line, last_used_profile); |
+ extra_urls_to_launch.push_back(install_chrome_app::GetAppInstallUrl( |
+ command_line.GetSwitchValueASCII(switches::kInstallChromeApp))); |
+ } |
+ |
if (command_line.HasSwitch(switches::kValidateCrx)) { |
if (!process_startup) { |
LOG(ERROR) << "chrome is already running; you must close all running " |
@@ -609,6 +618,13 @@ bool StartupBrowserCreator::ProcessCmdLineImpl( |
chrome::startup::IS_NOT_PROCESS_STARTUP; |
chrome::startup::IsFirstRun is_first_run = first_run::IsChromeFirstRun() ? |
chrome::startup::IS_FIRST_RUN : chrome::startup::IS_NOT_FIRST_RUN; |
+ CommandLine command_line_with_extra_urls(command_line); |
+ for (std::vector<GURL>::const_iterator it = extra_urls_to_launch.begin(); |
+ it != extra_urls_to_launch.end(); |
+ ++it) { |
+ if (it->is_valid()) |
+ command_line_with_extra_urls.AppendArg(it->spec()); |
+ } |
// |last_opened_profiles| will be empty in the following circumstances: |
// - This is the first launch. |last_used_profile| is the initial profile. |
// - The user exited the browser by closing all windows for all |
@@ -631,7 +647,8 @@ bool StartupBrowserCreator::ProcessCmdLineImpl( |
return true; |
} |
} |
- if (!browser_creator->LaunchBrowser(command_line, last_used_profile, |
+ if (!browser_creator->LaunchBrowser(command_line_with_extra_urls, |
+ last_used_profile, |
cur_dir, is_process_startup, |
is_first_run, return_code)) { |
return false; |
@@ -665,8 +682,8 @@ bool StartupBrowserCreator::ProcessCmdLineImpl( |
continue; |
if (!browser_creator->LaunchBrowser((*it == last_used_profile) ? |
- command_line : command_line_without_urls, *it, cur_dir, |
- is_process_startup, is_first_run, return_code)) |
+ command_line_with_extra_urls : command_line_without_urls, *it, |
+ cur_dir, is_process_startup, is_first_run, return_code)) |
return false; |
// We've launched at least one browser. |
is_process_startup = chrome::startup::IS_NOT_PROCESS_STARTUP; |