Chromium Code Reviews| Index: chrome/browser/extensions/external_provider_impl.cc |
| diff --git a/chrome/browser/extensions/external_provider_impl.cc b/chrome/browser/extensions/external_provider_impl.cc |
| index f3122881c0af2f3125e81b935d67ddd48c7b4fc1..7502de34f78a7c974e5008b0fab7acb784dc1b58 100644 |
| --- a/chrome/browser/extensions/external_provider_impl.cc |
| +++ b/chrome/browser/extensions/external_provider_impl.cc |
| @@ -35,6 +35,7 @@ |
| #include "ui/base/l10n/l10n_util.h" |
| #if defined(OS_CHROMEOS) |
| +#include "base/prefs/pref_service.h" |
| #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" |
| #include "chrome/browser/chromeos/customization/customization_document.h" |
| #include "chrome/browser/chromeos/extensions/device_local_account_external_policy_loader.h" |
| @@ -42,6 +43,7 @@ |
| #include "chrome/browser/chromeos/policy/device_local_account.h" |
| #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" |
| #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| +#include "chrome/common/pref_names.h" |
| #include "components/user_manager/user.h" |
| #else |
| #include "chrome/browser/extensions/default_apps.h" |
| @@ -66,6 +68,8 @@ const char ExternalProviderImpl::kKeepIfPresent[] = "keep_if_present"; |
| const char ExternalProviderImpl::kWasInstalledByOem[] = "was_installed_by_oem"; |
| const char ExternalProviderImpl::kSupportedLocales[] = "supported_locales"; |
| const char ExternalProviderImpl::kMayBeUntrusted[] = "may_be_untrusted"; |
| +const char ExternalProviderImpl::kMinProfileCreatedByVersion[] = |
| + "min_profile_created_by_version"; |
| ExternalProviderImpl::ExternalProviderImpl( |
| VisitorInterface* service, |
| @@ -218,6 +222,7 @@ void ExternalProviderImpl::SetPrefs(base::DictionaryValue* prefs) { |
| const Extension* extension = extension_service ? |
| extension_service->GetExtensionById(extension_id, true) : NULL; |
| if (!extension) { |
| + unsupported_extensions.insert(extension_id); |
| VLOG(1) << "Skip installing (or uninstall) external extension: " |
| << extension_id << " because the extension should be kept " |
| << "only if it is already installed."; |
| @@ -235,6 +240,26 @@ void ExternalProviderImpl::SetPrefs(base::DictionaryValue* prefs) { |
| creation_flags |= Extension::MAY_BE_UNTRUSTED; |
| } |
| +#if defined(OS_CHROMEOS) |
| + std::string min_profile_created_by_version; |
| + if (profile_ && |
| + extension->GetString(kMinProfileCreatedByVersion, |
| + &min_profile_created_by_version)) { |
| + Version profile_version( |
| + profile_->GetPrefs()->GetString(prefs::kProfileCreatedByVersion)); |
| + Version min_version(min_profile_created_by_version); |
| + if (min_version.IsValid() && profile_version.CompareTo(min_version) < 0) { |
| + unsupported_extensions.insert(extension_id); |
| + VLOG(1) << "Skip installing (or uninstall) external extension: " |
| + << extension_id << " profile.created_by_version: " |
| + << profile_version.GetString() |
| + << " min_profile_created_by_version:" |
| + << min_profile_created_by_version; |
| + continue; |
| + } |
| + } |
| +#endif // OS_CHROMEOS |
| + |
|
asargent_no_longer_on_chrome
2015/05/08 20:53:25
This method is getting really long, so it would be
Dmitry Polukhin
2015/05/09 07:36:50
Done. I just removed #ifdef there is nothing reall
|
| std::string install_parameter; |
| extension->GetString(kInstallParam, &install_parameter); |