| Index: chrome/browser/extensions/startup_helper.cc
|
| diff --git a/chrome/browser/extensions/startup_helper.cc b/chrome/browser/extensions/startup_helper.cc
|
| index c435799a1973f1b9fea0afe0f7a4f28736e343e8..49068c4aa4ebbf7571802f50a3cfc37f95ad7aea 100644
|
| --- a/chrome/browser/extensions/startup_helper.cc
|
| +++ b/chrome/browser/extensions/startup_helper.cc
|
| @@ -11,27 +11,13 @@
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| #include "base/single_thread_task_runner.h"
|
| -#include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/browser/extensions/extension_service.h"
|
| -#include "chrome/browser/extensions/webstore_startup_installer.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/extensions/chrome_extensions_client.h"
|
| -#include "components/crx_file/id_util.h"
|
| #include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/web_contents.h"
|
| #include "extensions/browser/sandboxed_unpacker.h"
|
| #include "extensions/common/extension.h"
|
| -#include "ipc/ipc_message.h"
|
| -
|
| -#if defined(OS_WIN)
|
| -#include "extensions/browser/app_window/app_window.h"
|
| -#include "extensions/browser/app_window/app_window_registry.h"
|
| -#include "extensions/browser/extension_registry.h"
|
| -#include "extensions/browser/extension_util.h"
|
| -#endif
|
|
|
| using content::BrowserThread;
|
|
|
| @@ -43,37 +29,6 @@ void PrintPackExtensionMessage(const std::string& message) {
|
| VLOG(1) << message;
|
| }
|
|
|
| -// On Windows, the jumplist action for installing an ephemeral app has to use
|
| -// the --install-ephemeral-app-from-webstore command line arg to initiate an
|
| -// install.
|
| -scoped_refptr<WebstoreStandaloneInstaller> CreateEphemeralAppInstaller(
|
| - Profile* profile,
|
| - const std::string& app_id,
|
| - WebstoreStandaloneInstaller::Callback callback) {
|
| - scoped_refptr<WebstoreStandaloneInstaller> installer;
|
| -
|
| -#if defined(OS_WIN)
|
| - ExtensionRegistry* registry = ExtensionRegistry::Get(profile);
|
| - DCHECK(registry);
|
| - if (!registry->GetExtensionById(app_id, ExtensionRegistry::EVERYTHING) ||
|
| - !util::IsEphemeralApp(app_id, profile)) {
|
| - return installer;
|
| - }
|
| -
|
| - AppWindowRegistry* app_window_registry = AppWindowRegistry::Get(profile);
|
| - DCHECK(app_window_registry);
|
| - AppWindow* app_window =
|
| - app_window_registry->GetCurrentAppWindowForApp(app_id);
|
| - if (!app_window)
|
| - return installer;
|
| -
|
| - installer = new WebstoreInstallWithPrompt(
|
| - app_id, profile, app_window->GetNativeWindow(), callback);
|
| -#endif
|
| -
|
| - return installer;
|
| -}
|
| -
|
| } // namespace
|
|
|
| StartupHelper::StartupHelper() : pack_job_succeeded_(false) {
|
| @@ -239,96 +194,6 @@ bool StartupHelper::ValidateCrx(const base::CommandLine& cmd_line,
|
| return success;
|
| }
|
|
|
| -namespace {
|
| -
|
| -class AppInstallHelper {
|
| - public:
|
| - // A callback for when the install process is done.
|
| - typedef base::Callback<void()> DoneCallback;
|
| -
|
| - AppInstallHelper();
|
| - virtual ~AppInstallHelper();
|
| - bool success() { return success_; }
|
| - const std::string& error() { return error_; }
|
| - void BeginInstall(Profile* profile,
|
| - const std::string& id,
|
| - bool show_prompt,
|
| - DoneCallback callback);
|
| -
|
| - private:
|
| - WebstoreStandaloneInstaller::Callback Callback();
|
| - void OnAppInstallComplete(bool success,
|
| - const std::string& error,
|
| - webstore_install::Result result);
|
| -
|
| - DoneCallback done_callback_;
|
| -
|
| - // These hold on to the result of the app install when it is complete.
|
| - bool success_;
|
| - std::string error_;
|
| -
|
| - scoped_refptr<WebstoreStandaloneInstaller> installer_;
|
| -};
|
| -
|
| -AppInstallHelper::AppInstallHelper() : success_(false) {}
|
| -
|
| -AppInstallHelper::~AppInstallHelper() {}
|
| -
|
| -WebstoreStandaloneInstaller::Callback AppInstallHelper::Callback() {
|
| - return base::Bind(&AppInstallHelper::OnAppInstallComplete,
|
| - base::Unretained(this));
|
| -}
|
| -
|
| -void AppInstallHelper::BeginInstall(
|
| - Profile* profile,
|
| - const std::string& id,
|
| - bool show_prompt,
|
| - DoneCallback done_callback) {
|
| - done_callback_ = done_callback;
|
| -
|
| - WebstoreStandaloneInstaller::Callback callback =
|
| - base::Bind(&AppInstallHelper::OnAppInstallComplete,
|
| - base::Unretained(this));
|
| -
|
| - installer_ = CreateEphemeralAppInstaller(profile, id, callback);
|
| - if (installer_.get()) {
|
| - installer_->BeginInstall();
|
| - } else {
|
| - error_ = "Not a supported ephemeral app installation.";
|
| - done_callback_.Run();
|
| - }
|
| -}
|
| -
|
| -void AppInstallHelper::OnAppInstallComplete(bool success,
|
| - const std::string& error,
|
| - webstore_install::Result result) {
|
| - success_ = success;
|
| - error_ = error;
|
| - done_callback_.Run();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -bool StartupHelper::InstallEphemeralApp(const base::CommandLine& cmd_line,
|
| - Profile* profile) {
|
| - std::string id =
|
| - cmd_line.GetSwitchValueASCII(switches::kInstallEphemeralAppFromWebstore);
|
| - if (!crx_file::id_util::IdIsValid(id)) {
|
| - LOG(ERROR) << "Invalid id for "
|
| - << switches::kInstallEphemeralAppFromWebstore << " : '" << id << "'";
|
| - return false;
|
| - }
|
| -
|
| - AppInstallHelper helper;
|
| - base::RunLoop run_loop;
|
| - helper.BeginInstall(profile, id, true, run_loop.QuitClosure());
|
| - run_loop.Run();
|
| -
|
| - if (!helper.success())
|
| - LOG(ERROR) << "InstallFromWebstore failed with error: " << helper.error();
|
| - return helper.success();
|
| -}
|
| -
|
| StartupHelper::~StartupHelper() {
|
| if (pack_job_.get())
|
| pack_job_->ClearClient();
|
|
|