X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fextensions%2Fcrx_installer.cc;h=e269ead5f0ead39ee677998844b8c92f1e4c6735;hb=1afa4dd80ef85af7c90efaea6959db1d92330844;hp=ddbf8f1e693e514b9ebc4a2768135c4320c2278f;hpb=90762837333c13ccf56f2ad88e4481fc71e8d281;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/extensions/crx_installer.cc b/src/chrome/browser/extensions/crx_installer.cc index ddbf8f1..e269ead 100644 --- a/src/chrome/browser/extensions/crx_installer.cc +++ b/src/chrome/browser/extensions/crx_installer.cc @@ -12,7 +12,6 @@ #include "base/files/scoped_temp_dir.h" #include "base/lazy_instance.h" #include "base/metrics/histogram.h" -#include "base/path_service.h" #include "base/sequenced_task_runner.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -23,10 +22,8 @@ #include "base/version.h" #include "chrome/browser/extensions/convert_user_script.h" #include "chrome/browser/extensions/convert_web_app.h" -#include "chrome/browser/extensions/crx_installer_error.h" #include "chrome/browser/extensions/extension_assets_manager.h" #include "chrome/browser/extensions/extension_error_reporter.h" -#include "chrome/browser/extensions/extension_install_ui.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/install_tracker.h" #include "chrome/browser/extensions/install_tracker_factory.h" @@ -36,7 +33,6 @@ #include "chrome/browser/web_applications/web_app.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension_constants.h" -#include "chrome/common/extensions/manifest_url_handler.h" #include "chrome/grit/generated_resources.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/notification_service.h" @@ -44,6 +40,8 @@ #include "content/public/browser/user_metrics.h" #include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_system.h" +#include "extensions/browser/install/crx_installer_error.h" +#include "extensions/browser/install/extension_install_ui.h" #include "extensions/browser/install_flag.h" #include "extensions/browser/notification_types.h" #include "extensions/common/extension_icon_set.h" @@ -52,6 +50,7 @@ #include "extensions/common/manifest.h" #include "extensions/common/manifest_handlers/kiosk_mode_info.h" #include "extensions/common/manifest_handlers/shared_module_info.h" +#include "extensions/common/manifest_url_handlers.h" #include "extensions/common/permissions/permission_message_provider.h" #include "extensions/common/permissions/permission_set.h" #include "extensions/common/permissions/permissions_data.h" @@ -139,8 +138,7 @@ CrxInstaller::CrxInstaller(base::WeakPtr service_weak, if (client_) { client_->install_ui()->SetUseAppInstalledBubble( approval->use_app_installed_bubble); - client_->install_ui()->set_skip_post_install_ui( - approval->skip_post_install_ui); + client_->install_ui()->SetSkipPostInstallUI(approval->skip_post_install_ui); } if (approval->skip_install_dialog) { @@ -331,7 +329,7 @@ CrxInstallerError CrxInstaller::AllowInstall(const Extension* extension) { if (install_cause_ == extension_misc::INSTALL_CAUSE_USER_DOWNLOAD) { if (FeatureSwitch::easy_off_store_install()->IsEnabled()) { - const char* kHistogramName = "Extensions.OffStoreInstallDecisionEasy"; + const char kHistogramName[] = "Extensions.OffStoreInstallDecisionEasy"; if (is_gallery_install()) { UMA_HISTOGRAM_ENUMERATION(kHistogramName, OnStoreInstall, NumOffStoreInstallDecision); @@ -340,7 +338,7 @@ CrxInstallerError CrxInstaller::AllowInstall(const Extension* extension) { NumOffStoreInstallDecision); } } else { - const char* kHistogramName = "Extensions.OffStoreInstallDecisionHard"; + const char kHistogramName[] = "Extensions.OffStoreInstallDecisionHard"; if (is_gallery_install()) { UMA_HISTOGRAM_ENUMERATION(kHistogramName, OnStoreInstall, NumOffStoreInstallDecision); @@ -477,23 +475,34 @@ void CrxInstaller::CheckInstall() { if (!service || service->browser_terminating()) return; + // TODO(crbug.com/420147): Move this code to a utility class to avoid + // duplication of SharedModuleService::CheckImports code. if (SharedModuleInfo::ImportsModules(extension())) { const std::vector& imports = SharedModuleInfo::GetImports(extension()); std::vector::const_iterator i; for (i = imports.begin(); i != imports.end(); ++i) { + Version version_required(i->minimum_version); const Extension* imported_module = service->GetExtensionById(i->extension_id, true); if (imported_module && !SharedModuleInfo::IsSharedModule(imported_module)) { - ReportFailureFromUIThread( - CrxInstallerError(l10n_util::GetStringFUTF16( - IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_SHARED_MODULE, - base::ASCIIToUTF16(i->extension_id)))); + ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16( + IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_SHARED_MODULE, + base::UTF8ToUTF16(imported_module->name())))); + return; + } else if (imported_module && (version_required.IsValid() && + imported_module->version()->CompareTo( + version_required) < 0)) { + ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16( + IDS_EXTENSION_INSTALL_DEPENDENCY_OLD_VERSION, + base::UTF8ToUTF16(imported_module->name()), + base::ASCIIToUTF16(i->minimum_version), + base::ASCIIToUTF16(imported_module->version()->GetString())))); return; } else if (imported_module && - !SharedModuleInfo::IsExportAllowedByWhitelist(imported_module, - extension()->id())) { + !SharedModuleInfo::IsExportAllowedByWhitelist( + imported_module, extension()->id())) { ReportFailureFromUIThread(CrxInstallerError(l10n_util::GetStringFUTF16( IDS_EXTENSION_INSTALL_DEPENDENCY_NOT_WHITELISTED, base::UTF8ToUTF16(extension()->name()), @@ -554,7 +563,7 @@ void CrxInstaller::OnInstallChecksComplete(int failed_checks) { // because the WebStore already shows an error dialog itself. // Note: |client_| can be NULL in unit_tests! if (extension()->from_webstore() && client_) - client_->install_ui()->set_skip_post_install_ui(true); + client_->install_ui()->SetSkipPostInstallUI(true); ReportFailureFromUIThread( CrxInstallerError(base::UTF8ToUTF16(install_checker_.policy_error()))); return;