Index: chrome/browser/extensions/unpacked_installer.cc |
diff --git a/chrome/browser/extensions/unpacked_installer.cc b/chrome/browser/extensions/unpacked_installer.cc |
index cb7966f8908b27b491430611cfdbff67953ee48d..52dd01a162e61fc6dcf50205686b1e762251e5b2 100644 |
--- a/chrome/browser/extensions/unpacked_installer.cc |
+++ b/chrome/browser/extensions/unpacked_installer.cc |
@@ -9,7 +9,6 @@ |
#include "base/command_line.h" |
#include "base/file_util.h" |
#include "base/strings/string_util.h" |
-#include "base/strings/utf_string_conversions.h" |
#include "base/threading/thread_restrictions.h" |
#include "chrome/browser/extensions/extension_error_reporter.h" |
#include "chrome/browser/extensions/extension_install_prompt.h" |
@@ -115,7 +114,7 @@ UnpackedInstaller::UnpackedInstaller(ExtensionService* extension_service) |
prompt_for_plugins_(true), |
require_modern_manifest_version_(true), |
be_noisy_on_failure_(true), |
- installer_(extension_service->profile()) { |
+ install_checker_(extension_service->profile()) { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
} |
@@ -152,22 +151,20 @@ bool UnpackedInstaller::LoadFromCommandLine(const base::FilePath& path_in, |
} |
std::string error; |
- installer_.set_extension( |
+ install_checker_.set_extension( |
file_util::LoadExtension( |
extension_path_, Manifest::COMMAND_LINE, GetFlags(), &error).get()); |
- if (!installer_.extension().get() || |
+ if (!extension() || |
!extension_l10n_util::ValidateExtensionLocales( |
- extension_path_, |
- installer_.extension()->manifest()->value(), |
- &error)) { |
+ extension_path_, extension()->manifest()->value(), &error)) { |
ReportExtensionLoadError(error); |
return false; |
} |
ShowInstallPrompt(); |
- *extension_id = installer_.extension()->id(); |
+ *extension_id = extension()->id(); |
return true; |
} |
@@ -179,33 +176,41 @@ void UnpackedInstaller::ShowInstallPrompt() { |
const ExtensionSet& disabled_extensions = |
ExtensionRegistry::Get(service_weak_->profile())->disabled_extensions(); |
if (service_weak_->show_extensions_prompts() && prompt_for_plugins_ && |
- PluginInfo::HasPlugins(installer_.extension().get()) && |
- !disabled_extensions.Contains(installer_.extension()->id())) { |
+ PluginInfo::HasPlugins(extension()) && |
+ !disabled_extensions.Contains(extension()->id())) { |
SimpleExtensionLoadPrompt* prompt = new SimpleExtensionLoadPrompt( |
- installer_.extension().get(), |
- installer_.profile(), |
- base::Bind(&UnpackedInstaller::CallCheckRequirements, this)); |
+ extension(), |
+ install_checker_.profile(), |
+ base::Bind(&UnpackedInstaller::StartInstallChecks, this)); |
prompt->ShowPrompt(); |
return; |
} |
- CallCheckRequirements(); |
+ StartInstallChecks(); |
} |
-void UnpackedInstaller::CallCheckRequirements() { |
- installer_.CheckRequirements( |
- base::Bind(&UnpackedInstaller::OnRequirementsChecked, this)); |
+void UnpackedInstaller::StartInstallChecks() { |
+ install_checker_.Start( |
+ ExtensionInstallChecker::CHECK_REQUIREMENTS | |
+ ExtensionInstallChecker::CHECK_MANAGEMENT_POLICY, |
+ true /* fail fast */, |
+ base::Bind(&UnpackedInstaller::OnInstallChecksComplete, this)); |
} |
-void UnpackedInstaller::OnRequirementsChecked( |
- std::vector<std::string> requirement_errors) { |
+void UnpackedInstaller::OnInstallChecksComplete(int failed_checks) { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- if (!requirement_errors.empty()) { |
- ReportExtensionLoadError(JoinString(requirement_errors, ' ')); |
+ if (!install_checker_.policy_error().empty()) { |
+ ReportExtensionLoadError(install_checker_.policy_error()); |
return; |
} |
- ConfirmInstall(); |
+ if (!install_checker_.requirement_errors().empty()) { |
+ ReportExtensionLoadError( |
+ JoinString(install_checker_.requirement_errors(), ' ')); |
+ return; |
+ } |
+ |
+ InstallExtension(); |
} |
int UnpackedInstaller::GetFlags() { |
@@ -272,15 +277,13 @@ void UnpackedInstaller::LoadWithFileAccess(int flags) { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
std::string error; |
- installer_.set_extension( |
+ install_checker_.set_extension( |
file_util::LoadExtension( |
extension_path_, Manifest::UNPACKED, flags, &error).get()); |
- if (!installer_.extension().get() || |
+ if (!extension() || |
!extension_l10n_util::ValidateExtensionLocales( |
- extension_path_, |
- installer_.extension()->manifest()->value(), |
- &error)) { |
+ extension_path_, extension()->manifest()->value(), &error)) { |
BrowserThread::PostTask( |
BrowserThread::UI, |
FROM_HERE, |
@@ -308,20 +311,14 @@ void UnpackedInstaller::ReportExtensionLoadError(const std::string &error) { |
} |
} |
-void UnpackedInstaller::ConfirmInstall() { |
+void UnpackedInstaller::InstallExtension() { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
- base::string16 error = installer_.CheckManagementPolicy(); |
- if (!error.empty()) { |
- ReportExtensionLoadError(base::UTF16ToUTF8(error)); |
- return; |
- } |
PermissionsUpdater perms_updater(service_weak_->profile()); |
- perms_updater.GrantActivePermissions(installer_.extension().get()); |
+ perms_updater.GrantActivePermissions(extension()); |
- service_weak_->OnExtensionInstalled(installer_.extension().get(), |
- syncer::StringOrdinal(), |
- kInstallFlagInstallImmediately); |
+ service_weak_->OnExtensionInstalled( |
+ extension(), syncer::StringOrdinal(), kInstallFlagInstallImmediately); |
} |
} // namespace extensions |