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 811adc26222e3dbce98fda7b82fd5ced301ef86b..9f78b2b5966ec49aa6f323ff55b711aa3b079822 100644 |
--- a/chrome/browser/extensions/external_provider_impl.cc |
+++ b/chrome/browser/extensions/external_provider_impl.cc |
@@ -371,6 +371,7 @@ void ExternalProviderImpl::CreateExternalProviders( |
bool is_chromeos_demo_session = false; |
int bundled_extension_creation_flags = Extension::NO_FLAGS; |
#if defined(OS_CHROMEOS) |
+ typedef chromeos::ExternalPrefCacheLoader PrefLoader; |
chromeos::UserManager* user_manager = chromeos::UserManager::Get(); |
is_chromeos_demo_session = |
user_manager && user_manager->IsLoggedInAsDemoUser() && |
@@ -378,33 +379,58 @@ void ExternalProviderImpl::CreateExternalProviders( |
policy::DEVICE_MODE_RETAIL_KIOSK; |
bundled_extension_creation_flags = Extension::FROM_WEBSTORE | |
Extension::WAS_INSTALLED_BY_DEFAULT; |
-#endif |
- |
- bool is_managed_profile = profile->IsManaged(); |
- int external_apps_path_id = chrome::DIR_EXTERNAL_EXTENSIONS; |
- if (is_managed_profile) |
- external_apps_path_id = chrome::DIR_MANAGED_USERS_DEFAULT_APPS; |
- |
-#if defined(OS_CHROMEOS) |
- typedef chromeos::ExternalPrefCacheLoader PrefLoader; |
#else |
typedef ExternalPrefLoader PrefLoader; |
#endif |
+#if defined(OS_LINUX) |
if (!is_chromeos_demo_session) { |
+ int external_apps_path_id = profile->IsManaged() ? |
+ chrome::DIR_MANAGED_USERS_DEFAULT_APPS : |
+ chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS; |
+ |
provider_list->push_back( |
linked_ptr<ExternalProviderInterface>( |
new ExternalProviderImpl( |
service, |
new PrefLoader(external_apps_path_id, |
- check_admin_permissions_on_mac), |
+ ExternalPrefLoader::NONE), |
profile, |
Manifest::EXTERNAL_PREF, |
Manifest::EXTERNAL_PREF_DOWNLOAD, |
bundled_extension_creation_flags))); |
} |
+#endif |
+ |
+#if defined(OS_CHROMEOS) |
+ policy::AppPackUpdater* app_pack_updater = |
+ g_browser_process->browser_policy_connector()->GetAppPackUpdater(); |
+ if (is_chromeos_demo_session && app_pack_updater && |
+ !app_pack_updater->created_external_loader()) { |
+ provider_list->push_back( |
+ linked_ptr<ExternalProviderInterface>( |
+ new ExternalProviderImpl( |
+ service, |
+ app_pack_updater->CreateExternalLoader(), |
+ profile, |
+ Manifest::EXTERNAL_PREF, |
+ Manifest::INVALID_LOCATION, |
+ Extension::NO_FLAGS))); |
+ } |
+#endif |
+ |
+ if (!profile->IsManaged() && !is_chromeos_demo_session) { |
+ provider_list->push_back( |
+ linked_ptr<ExternalProviderInterface>( |
+ new ExternalProviderImpl( |
+ service, |
+ new ExternalPrefLoader(chrome::DIR_EXTERNAL_EXTENSIONS, |
+ check_admin_permissions_on_mac), |
+ profile, |
+ Manifest::EXTERNAL_PREF, |
+ Manifest::EXTERNAL_PREF_DOWNLOAD, |
+ bundled_extension_creation_flags))); |
- if (!is_managed_profile) { |
#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. |
@@ -413,7 +439,7 @@ void ExternalProviderImpl::CreateExternalProviders( |
new ExternalProviderImpl( |
service, |
new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS, |
- ExternalPrefLoader::NONE), |
+ ExternalPrefLoader::NONE), |
profile, |
Manifest::EXTERNAL_PREF, |
Manifest::EXTERNAL_PREF_DOWNLOAD, |
@@ -432,20 +458,6 @@ void ExternalProviderImpl::CreateExternalProviders( |
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), |
- profile, |
- 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. |
@@ -462,25 +474,7 @@ void ExternalProviderImpl::CreateExternalProviders( |
Extension::WAS_INSTALLED_BY_DEFAULT))); |
#endif |
-#if defined(OS_CHROMEOS) |
- policy::AppPackUpdater* app_pack_updater = |
- g_browser_process->browser_policy_connector()->GetAppPackUpdater(); |
- if (is_chromeos_demo_session && app_pack_updater && |
- !app_pack_updater->created_external_loader()) { |
- provider_list->push_back( |
- linked_ptr<ExternalProviderInterface>( |
- new ExternalProviderImpl( |
- service, |
- app_pack_updater->CreateExternalLoader(), |
- profile, |
- Manifest::EXTERNAL_PREF, |
- Manifest::INVALID_LOCATION, |
- Extension::NO_FLAGS))); |
- } |
-#endif |
- } |
- |
- provider_list->push_back( |
+ provider_list->push_back( |
linked_ptr<ExternalProviderInterface>( |
new ExternalProviderImpl( |
service, |
@@ -489,6 +483,7 @@ void ExternalProviderImpl::CreateExternalProviders( |
Manifest::INVALID_LOCATION, |
Manifest::EXTERNAL_POLICY_DOWNLOAD, |
Extension::FROM_WEBSTORE | Extension::WAS_INSTALLED_BY_DEFAULT))); |
+ } |
} |
} // namespace extensions |