| Index: chrome/browser/policy/cloud/user_policy_signin_service_base.cc
|
| diff --git a/chrome/browser/policy/cloud/user_policy_signin_service_base.cc b/chrome/browser/policy/cloud/user_policy_signin_service_base.cc
|
| index d50902ec6c83f497fd86330fd241741ae53bfb1c..a6aac588ae2cad2d16bb18a24f7231ead18bc247 100644
|
| --- a/chrome/browser/policy/cloud/user_policy_signin_service_base.cc
|
| +++ b/chrome/browser/policy/cloud/user_policy_signin_service_base.cc
|
| @@ -25,10 +25,12 @@ namespace policy {
|
| UserPolicySigninServiceBase::UserPolicySigninServiceBase(
|
| Profile* profile,
|
| PrefService* local_state,
|
| - DeviceManagementService* device_management_service)
|
| + DeviceManagementService* device_management_service,
|
| + SigninManager* signin)
|
| : profile_(profile),
|
| local_state_(local_state),
|
| device_management_service_(device_management_service),
|
| + signin_manager_(signin),
|
| weak_factory_(this) {
|
| if (profile_->GetPrefs()->GetBoolean(prefs::kDisableCloudPolicyOnSignin))
|
| return;
|
| @@ -72,7 +74,7 @@ void UserPolicySigninServiceBase::Observe(
|
| const content::NotificationDetails& details) {
|
| // If using a TestingProfile with no SigninManager or UserCloudPolicyManager,
|
| // skip initialization.
|
| - if (!GetManager() || !SigninManagerFactory::GetForProfile(profile_)) {
|
| + if (!GetManager() || !signin_manager()) {
|
| DVLOG(1) << "Skipping initialization for tests due to missing components.";
|
| return;
|
| }
|
| @@ -133,6 +135,10 @@ void UserPolicySigninServiceBase::OnClientError(CloudPolicyClient* client) {
|
| }
|
|
|
| void UserPolicySigninServiceBase::Shutdown() {
|
| + PrepareForUserCloudPolicyManagerShutdown();
|
| +}
|
| +
|
| +void UserPolicySigninServiceBase::PrepareForUserCloudPolicyManagerShutdown() {
|
| UserCloudPolicyManager* manager = GetManager();
|
| if (manager && manager->core()->client())
|
| manager->core()->client()->RemoveObserver(this);
|
| @@ -181,9 +187,7 @@ bool UserPolicySigninServiceBase::ShouldLoadPolicyForUser(
|
| }
|
|
|
| void UserPolicySigninServiceBase::InitializeOnProfileReady() {
|
| - SigninManager* signin_manager =
|
| - SigninManagerFactory::GetForProfile(profile_);
|
| - std::string username = signin_manager->GetAuthenticatedUsername();
|
| + std::string username = signin_manager()->GetAuthenticatedUsername();
|
| if (username.empty())
|
| ShutdownUserCloudPolicyManager();
|
| else
|
| @@ -230,7 +234,7 @@ void UserPolicySigninServiceBase::InitializeUserCloudPolicyManager(
|
| }
|
|
|
| void UserPolicySigninServiceBase::ShutdownUserCloudPolicyManager() {
|
| - Shutdown();
|
| + PrepareForUserCloudPolicyManagerShutdown();
|
| UserCloudPolicyManager* manager = GetManager();
|
| if (manager)
|
| manager->DisconnectAndRemovePolicy();
|
|
|