Chromium Code Reviews| Index: chrome/browser/extensions/extension_system_impl.cc |
| diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc |
| index ab1c01436412fd8ab89ee83eb0409d2ba6c7548a..a1be6d3ee7e5a386aad16456672fa4f8adfcaa15 100644 |
| --- a/chrome/browser/extensions/extension_system_impl.cc |
| +++ b/chrome/browser/extensions/extension_system_impl.cc |
| @@ -66,7 +66,9 @@ |
| #include "chrome/browser/app_mode/app_mode_utils.h" |
| #include "chrome/browser/chromeos/app_mode/kiosk_app_update_install_gate.h" |
| #include "chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.h" |
| +#include "chrome/browser/chromeos/extensions/signin_screen_policy_provider.h" |
| #include "chrome/browser/chromeos/policy/device_local_account.h" |
| +#include "chrome/browser/chromeos/profiles/profile_helper.h" |
| #include "chromeos/chromeos_switches.h" |
| #include "chromeos/login/login_state.h" |
| #include "components/user_manager/user.h" |
| @@ -128,7 +130,10 @@ void ExtensionSystemImpl::Shared::InitPrefs() { |
| new chromeos::DeviceLocalAccountManagementPolicyProvider( |
| device_local_account_type)); |
| } |
| -#endif // defined(OS_CHROMEOS) |
| +// We can not perform check for Signin Profile here, as it would result in |
| +// recursive call upon creation of Signin Profile, so we will create |
| +// SigninScreenPolicyProvider lazily in RegisterManagementPolicyProviders. |
| +#endif |
| } |
| void ExtensionSystemImpl::Shared::RegisterManagementPolicyProviders() { |
| @@ -137,10 +142,21 @@ void ExtensionSystemImpl::Shared::RegisterManagementPolicyProviders() { |
| ->GetProviders()); |
| #if defined(OS_CHROMEOS) |
| + // Lazy creation of SigninScreenPolicyProvider. |
| + if (!signin_screen_policy_provider_) { |
| + if (profile_ == |
| + chromeos::ProfileHelper::GetSigninProfile()->GetOriginalProfile()) { |
|
Devlin
2016/11/11 16:35:08
nit: prefer Profile::IsSameProfile()
Denis Kuznetsov (DE-MUC)
2016/11/11 21:26:34
Acknowledged.
|
| + signin_screen_policy_provider_.reset( |
| + new chromeos::SigninScreenPolicyProvider()); |
| + } |
| + } |
| + |
| if (device_local_account_management_policy_provider_) { |
| management_policy_->RegisterProvider( |
| device_local_account_management_policy_provider_.get()); |
| } |
| + if (signin_screen_policy_provider_) |
| + management_policy_->RegisterProvider(signin_screen_policy_provider_.get()); |
| #endif // defined(OS_CHROMEOS) |
| management_policy_->RegisterProvider(InstallVerifier::Get(profile_)); |