| Index: chrome/browser/extensions/crx_installer.cc
|
| diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
|
| index 53a9677c6eee1b2956629a77663dc52d4fbce80a..bab5ac73d5b0fbab0af0f34042e8f51ab1d5c4e9 100644
|
| --- a/chrome/browser/extensions/crx_installer.cc
|
| +++ b/chrome/browser/extensions/crx_installer.cc
|
| @@ -27,7 +27,6 @@
|
| #include "chrome/browser/extensions/convert_web_app.h"
|
| #include "chrome/browser/extensions/extension_assets_manager.h"
|
| #include "chrome/browser/extensions/extension_error_reporter.h"
|
| -#include "chrome/browser/extensions/extension_install_checker.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/extensions/install_tracker.h"
|
| #include "chrome/browser/extensions/install_tracker_factory.h"
|
| @@ -109,8 +108,7 @@
|
| CrxInstaller::CrxInstaller(base::WeakPtr<ExtensionService> service_weak,
|
| std::unique_ptr<ExtensionInstallPrompt> client,
|
| const WebstoreInstaller::Approval* approval)
|
| - : profile_(service_weak->profile()),
|
| - install_directory_(service_weak->install_directory()),
|
| + : install_directory_(service_weak->install_directory()),
|
| install_source_(Manifest::INTERNAL),
|
| approved_(false),
|
| hash_check_failed_(false),
|
| @@ -132,7 +130,8 @@
|
| did_handle_successfully_(true),
|
| error_on_unsupported_requirements_(false),
|
| update_from_settings_page_(false),
|
| - install_flags_(kInstallFlagNone) {
|
| + install_flags_(kInstallFlagNone),
|
| + install_checker_(service_weak->profile()) {
|
| installer_task_runner_ = service_weak->GetFileTaskRunner();
|
| if (!approval)
|
| return;
|
| @@ -356,7 +355,7 @@
|
| }
|
| }
|
|
|
| - if (extension_->is_app()) {
|
| + if (install_checker_.extension()->is_app()) {
|
| // If the app was downloaded, apps_require_extension_mime_type_
|
| // will be set. In this case, check that it was served with the
|
| // right mime type. Make an exception for file URLs, which come
|
| @@ -389,7 +388,7 @@
|
| pattern.SetHost(download_url_.host());
|
| pattern.SetMatchSubdomains(true);
|
|
|
| - URLPatternSet patterns = extension_->web_extent();
|
| + URLPatternSet patterns = install_checker_.extension()->web_extent();
|
| for (URLPatternSet::const_iterator i = patterns.begin();
|
| i != patterns.end(); ++i) {
|
| if (!pattern.MatchesHost(i->host())) {
|
| @@ -432,7 +431,7 @@
|
| install_cause(),
|
| extension_misc::NUM_INSTALL_CAUSES);
|
|
|
| - extension_ = extension;
|
| + install_checker_.set_extension(extension);
|
| temp_dir_ = temp_dir;
|
| if (!install_icon.empty())
|
| install_icon_.reset(new SkBitmap(install_icon));
|
| @@ -511,12 +510,11 @@
|
| // Run the policy, requirements and blacklist checks in parallel. Skip the
|
| // checks if the extension is a bookmark app.
|
| if (extension()->from_bookmark()) {
|
| - ConfirmInstall();
|
| + CrxInstaller::OnInstallChecksComplete(0);
|
| } else {
|
| - install_checker_ = base::MakeUnique<ExtensionInstallChecker>(
|
| - profile_, extension_, ExtensionInstallChecker::CHECK_ALL,
|
| - false /* fail fast */);
|
| - install_checker_->Start(
|
| + install_checker_.Start(
|
| + ExtensionInstallChecker::CHECK_ALL,
|
| + false /* fail fast */,
|
| base::Bind(&CrxInstaller::OnInstallChecksComplete, this));
|
| }
|
| }
|
| @@ -527,24 +525,24 @@
|
| return;
|
|
|
| // Check for requirement errors.
|
| - if (!install_checker_->requirement_errors().empty()) {
|
| + if (!install_checker_.requirement_errors().empty()) {
|
| if (error_on_unsupported_requirements_) {
|
| ReportFailureFromUIThread(
|
| CrxInstallError(CrxInstallError::ERROR_DECLINED,
|
| base::UTF8ToUTF16(base::JoinString(
|
| - install_checker_->requirement_errors(), " "))));
|
| + install_checker_.requirement_errors(), " "))));
|
| return;
|
| }
|
| install_flags_ |= kInstallFlagHasRequirementErrors;
|
| }
|
|
|
| // Check the blacklist state.
|
| - if (install_checker_->blacklist_state() == BLACKLISTED_MALWARE) {
|
| + if (install_checker_.blacklist_state() == BLACKLISTED_MALWARE) {
|
| install_flags_ |= kInstallFlagIsBlacklistedForMalware;
|
| }
|
|
|
| - if ((install_checker_->blacklist_state() == BLACKLISTED_MALWARE ||
|
| - install_checker_->blacklist_state() == BLACKLISTED_UNKNOWN) &&
|
| + if ((install_checker_.blacklist_state() == BLACKLISTED_MALWARE ||
|
| + install_checker_.blacklist_state() == BLACKLISTED_UNKNOWN) &&
|
| !allow_silent_install_) {
|
| // User tried to install a blacklisted extension. Show an error and
|
| // refuse to install it.
|
| @@ -563,7 +561,7 @@
|
| // deal with it.
|
|
|
| // Check for policy errors.
|
| - if (!install_checker_->policy_error().empty()) {
|
| + if (!install_checker_.policy_error().empty()) {
|
| // We don't want to show the error infobar for installs from the WebStore,
|
| // because the WebStore already shows an error dialog itself.
|
| // Note: |client_| can be NULL in unit_tests!
|
| @@ -571,7 +569,7 @@
|
| client_->install_ui()->SetSkipPostInstallUI(true);
|
| ReportFailureFromUIThread(
|
| CrxInstallError(CrxInstallError::ERROR_DECLINED,
|
| - base::UTF8ToUTF16(install_checker_->policy_error())));
|
| + base::UTF8ToUTF16(install_checker_.policy_error())));
|
| return;
|
| }
|
|
|
| @@ -584,7 +582,7 @@
|
| if (!service || service->browser_terminating())
|
| return;
|
|
|
| - if (KioskModeInfo::IsKioskOnly(extension())) {
|
| + if (KioskModeInfo::IsKioskOnly(install_checker_.extension().get())) {
|
| bool in_kiosk_mode = false;
|
| #if defined(OS_CHROMEOS)
|
| user_manager::UserManager* user_manager = user_manager::UserManager::Get();
|
| @@ -723,10 +721,13 @@
|
| // with base::string16
|
| std::string extension_id = extension()->id();
|
| std::string error;
|
| - extension_ = file_util::LoadExtension(
|
| - version_dir, install_source_,
|
| - // Note: modified by UpdateCreationFlagsAndCompleteInstall.
|
| - creation_flags_, &error);
|
| + install_checker_.set_extension(
|
| + file_util::LoadExtension(
|
| + version_dir,
|
| + install_source_,
|
| + // Note: modified by UpdateCreationFlagsAndCompleteInstall.
|
| + creation_flags_,
|
| + &error).get());
|
|
|
| if (extension()) {
|
| ReportSuccessFromFileThread();
|
|
|