Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4569)

Unified Diff: chrome/browser/ui/startup/startup_browser_creator.cc

Issue 412043003: Make --install-chrome-app use extensions::WebstoreInstallWithPrompt. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..bedbfcb55411b88d3b47a79eb4ef00c71cac106b 100644
--- a/chrome/browser/ui/startup/startup_browser_creator.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator.cc
@@ -25,6 +25,7 @@
#include "base/prefs/pref_service.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
+#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread_restrictions.h"
#include "chrome/browser/app_mode/app_mode_utils.h"
@@ -101,6 +102,10 @@ using content::ChildProcessSecurityPolicy;
namespace {
+// The URL to the webstore page for a specific app.
+const char kWebstoreUrlFormat[] =
tapted 2014/07/24 07:52:50 I don't think this constant belongs here..
jackhou1 2014/07/25 01:47:33 Kept this part in install_chrome_app.
+ "https://chrome.google.com/webstore/detail/%s";
+
// Keeps track on which profiles have been launched.
class ProfileLaunchObserver : public content::NotificationObserver {
public:
@@ -245,6 +250,10 @@ void DumpBrowserHistograms(const base::FilePath& output_file) {
static_cast<int>(output_string.size()));
}
+GURL GetAppInstallUrl(const std::string& app_id) {
+ return GURL(base::StringPrintf(kWebstoreUrlFormat, app_id.c_str()));
+}
+
} // namespace
StartupBrowserCreator::StartupBrowserCreator()
@@ -301,6 +310,7 @@ bool StartupBrowserCreator::LaunchBrowser(
StartupBrowserCreatorImpl lwp(cur_dir, command_line, this, is_first_run);
const std::vector<GURL> urls_to_launch =
GetURLsFromCommandLine(command_line, cur_dir, profile);
+
chrome::HostDesktopType host_desktop_type =
chrome::HOST_DESKTOP_TYPE_NATIVE;
@@ -507,6 +517,14 @@ bool StartupBrowserCreator::ProcessCmdLineImpl(
return false;
}
+ std::vector<GURL> extra_urls_to_launch;
+ if (command_line.HasSwitch(switches::kInstallChromeApp)) {
+ extensions::StartupHelper helper;
+ helper.InstallChromeApp(command_line, last_used_profile);
+ extra_urls_to_launch.push_back(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 +627,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 +656,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 +691,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;
« no previous file with comments | « chrome/browser/extensions/startup_helper.cc ('k') | chrome/browser/ui/startup/startup_browser_creator_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698