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 cef7903ba20cfcd20b99de9ef4a9d757d5cba2d6..0973df239918d7625810aa814fd79711ed3173f9 100644 |
| --- a/chrome/browser/extensions/external_provider_impl.cc |
| +++ b/chrome/browser/extensions/external_provider_impl.cc |
| @@ -27,6 +27,11 @@ |
| #include "content/public/browser/browser_thread.h" |
| #include "ui/base/l10n/l10n_util.h" |
| +#if defined(ENABLE_MANAGED_USERS) |
| +#include "chrome/browser/managed_mode/managed_user_service.h" |
| +#include "chrome/browser/managed_mode/managed_user_service_factory.h" |
| +#endif |
| + |
| #if defined(OS_CHROMEOS) |
| #include "chrome/browser/chromeos/login/user_manager.h" |
| #include "chrome/browser/policy/app_pack_updater.h" |
| @@ -356,7 +361,26 @@ void ExternalProviderImpl::CreateExternalProviders( |
| Extension::WAS_INSTALLED_BY_DEFAULT; |
| #endif |
| - if (!is_chromeos_demo_session) { |
| + bool is_managed_profile = false; |
| +#if defined(ENABLE_MANAGED_USERS) |
| + ManagedUserService* managed_user_service = |
| + ManagedUserServiceFactory::GetForProfile(profile); |
| + is_managed_profile = managed_user_service->ProfileIsManaged(); |
| + |
| + if (is_managed_profile) { |
| + provider_list->push_back( |
| + linked_ptr<ExternalProviderInterface>( |
| + new ExternalProviderImpl( |
| + service, |
| + new ExternalPrefLoader(chrome::DIR_MANAGED_USERS_DEFAULT_APPS, |
| + check_admin_permissions_on_mac), |
| + Manifest::EXTERNAL_PREF, |
| + Manifest::EXTERNAL_PREF_DOWNLOAD, |
| + bundled_extension_creation_flags))); |
| + } |
| +#endif |
| + |
| + if (!is_chromeos_demo_session && !is_managed_profile) { |
|
Gaurav
2013/02/11 19:06:14
lines 383-470 can be moved to a block
if (!is_man
Dmitry Polukhin
2013/02/13 14:41:02
Done.
|
| provider_list->push_back( |
| linked_ptr<ExternalProviderInterface>( |
| new ExternalProviderImpl( |
| @@ -369,61 +393,72 @@ void ExternalProviderImpl::CreateExternalProviders( |
| } |
| #if defined(OS_CHROMEOS) || defined (OS_MACOSX) |
| - // Define a per-user source of external extensions. |
| - // On Chrome OS, this serves as a source for OEM customization. |
| - provider_list->push_back( |
| - linked_ptr<ExternalProviderInterface>( |
| - new ExternalProviderImpl( |
| - service, |
| - new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS, |
| - ExternalPrefLoader::NONE), |
| - Manifest::EXTERNAL_PREF, |
| - Manifest::EXTERNAL_PREF_DOWNLOAD, |
| - Extension::NO_FLAGS))); |
| + if (!is_managed_profile) { |
| + // Define a per-user source of external extensions. |
| + // On Chrome OS, this serves as a source for OEM customization. |
| + provider_list->push_back( |
| + linked_ptr<ExternalProviderInterface>( |
| + new ExternalProviderImpl( |
| + service, |
| + new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS, |
| + ExternalPrefLoader::NONE), |
| + Manifest::EXTERNAL_PREF, |
| + Manifest::EXTERNAL_PREF_DOWNLOAD, |
| + Extension::NO_FLAGS))); |
| + } |
| #endif |
| + |
| #if defined(OS_WIN) |
| - provider_list->push_back( |
| - linked_ptr<ExternalProviderInterface>( |
| - new ExternalProviderImpl( |
| - service, |
| - new ExternalRegistryLoader, |
| - Manifest::EXTERNAL_REGISTRY, |
| - Manifest::INVALID_LOCATION, |
| - Extension::NO_FLAGS))); |
| + if (!is_managed_profile) { |
| + provider_list->push_back( |
| + linked_ptr<ExternalProviderInterface>( |
| + new ExternalProviderImpl( |
| + service, |
| + new ExternalRegistryLoader, |
| + Manifest::EXTERNAL_REGISTRY, |
| + Manifest::INVALID_LOCATION, |
| + Extension::NO_FLAGS))); |
| + } |
| #endif |
| #if defined(OS_LINUX) |
| - provider_list->push_back( |
| - linked_ptr<ExternalProviderInterface>( |
| - new ExternalProviderImpl( |
| - service, |
| - new ExternalPrefLoader(chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS, |
| - ExternalPrefLoader::NONE), |
| - Manifest::EXTERNAL_PREF, |
| - Manifest::EXTERNAL_PREF_DOWNLOAD, |
| - bundled_extension_creation_flags))); |
| + if (!is_managed_profile) { |
| + provider_list->push_back( |
| + linked_ptr<ExternalProviderInterface>( |
| + new ExternalProviderImpl( |
| + service, |
| + new ExternalPrefLoader( |
| + chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS, |
| + ExternalPrefLoader::NONE), |
| + Manifest::EXTERNAL_PREF, |
| + Manifest::EXTERNAL_PREF_DOWNLOAD, |
| + bundled_extension_creation_flags))); |
| + } |
| #endif |
| #if !defined(OS_CHROMEOS) |
| - // The default apps are installed as INTERNAL but use the external |
| - // extension installer codeflow. |
| - provider_list->push_back( |
| - linked_ptr<ExternalProviderInterface>( |
| - new default_apps::Provider( |
| - profile, |
| - service, |
| - new ExternalPrefLoader(chrome::DIR_DEFAULT_APPS, |
| - ExternalPrefLoader::NONE), |
| - Manifest::INTERNAL, |
| - Manifest::INVALID_LOCATION, |
| - Extension::FROM_WEBSTORE | |
| - Extension::WAS_INSTALLED_BY_DEFAULT))); |
| + if (!is_managed_profile) { |
| + // The default apps are installed as INTERNAL but use the external |
| + // extension installer codeflow. |
| + provider_list->push_back( |
| + linked_ptr<ExternalProviderInterface>( |
| + new default_apps::Provider( |
| + profile, |
| + service, |
| + new ExternalPrefLoader(chrome::DIR_DEFAULT_APPS, |
| + ExternalPrefLoader::NONE), |
| + Manifest::INTERNAL, |
| + Manifest::INVALID_LOCATION, |
| + Extension::FROM_WEBSTORE | |
| + Extension::WAS_INSTALLED_BY_DEFAULT))); |
| + } |
| #endif |
| #if defined(OS_CHROMEOS) |
| policy::BrowserPolicyConnector* connector = |
| g_browser_process->browser_policy_connector(); |
| - if (is_chromeos_demo_session && connector->GetAppPackUpdater()) { |
| + if (!is_managed_profile && |
| + is_chromeos_demo_session && connector->GetAppPackUpdater()) { |
| provider_list->push_back( |
| linked_ptr<ExternalProviderInterface>( |
| new ExternalProviderImpl( |