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(); |