| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/signin/core/browser/signin_manager.h" | 5 #include "components/signin/core/browser/signin_manager.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 type_(SIGNIN_TYPE_NONE), | 67 type_(SIGNIN_TYPE_NONE), |
| 68 client_(client), | 68 client_(client), |
| 69 token_service_(token_service), | 69 token_service_(token_service), |
| 70 account_tracker_service_(account_tracker_service), | 70 account_tracker_service_(account_tracker_service), |
| 71 signin_manager_signed_in_(false), | 71 signin_manager_signed_in_(false), |
| 72 user_info_fetched_by_account_tracker_(false), | 72 user_info_fetched_by_account_tracker_(false), |
| 73 weak_pointer_factory_(this) {} | 73 weak_pointer_factory_(this) {} |
| 74 | 74 |
| 75 void SigninManager::AddMergeSessionObserver( | 75 void SigninManager::AddMergeSessionObserver( |
| 76 MergeSessionHelper::Observer* observer) { | 76 MergeSessionHelper::Observer* observer) { |
| 77 if (merge_session_helper_) | 77 merge_session_observer_list_.AddObserver(observer); |
| 78 merge_session_helper_->AddObserver(observer); | |
| 79 } | 78 } |
| 80 | 79 |
| 81 void SigninManager::RemoveMergeSessionObserver( | 80 void SigninManager::RemoveMergeSessionObserver( |
| 82 MergeSessionHelper::Observer* observer) { | 81 MergeSessionHelper::Observer* observer) { |
| 83 if (merge_session_helper_) | 82 merge_session_observer_list_.RemoveObserver(observer); |
| 84 merge_session_helper_->RemoveObserver(observer); | 83 } |
| 84 |
| 85 void SigninManager::MergeSessionCompleted(const std::string& account_id, |
| 86 const GoogleServiceAuthError& error) { |
| 87 FOR_EACH_OBSERVER(MergeSessionHelper::Observer, merge_session_observer_list_, |
| 88 MergeSessionCompleted(account_id, error)); |
| 89 } |
| 90 |
| 91 void SigninManager::GetCheckConnectionInfoCompleted(bool succeeded) { |
| 92 FOR_EACH_OBSERVER(MergeSessionHelper::Observer, merge_session_observer_list_, |
| 93 GetCheckConnectionInfoCompleted(succeeded)); |
| 85 } | 94 } |
| 86 | 95 |
| 87 SigninManager::~SigninManager() {} | 96 SigninManager::~SigninManager() {} |
| 88 | 97 |
| 89 void SigninManager::InitTokenService() { | 98 void SigninManager::InitTokenService() { |
| 90 if (token_service_ && IsAuthenticated()) | 99 if (token_service_ && IsAuthenticated()) |
| 91 token_service_->LoadCredentials(GetAuthenticatedAccountId()); | 100 token_service_->LoadCredentials(GetAuthenticatedAccountId()); |
| 92 } | 101 } |
| 93 | 102 |
| 94 std::string SigninManager::SigninTypeToString(SigninManager::SigninType type) { | 103 std::string SigninManager::SigninTypeToString(SigninManager::SigninType type) { |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 | 277 |
| 269 InitTokenService(); | 278 InitTokenService(); |
| 270 account_id_helper_.reset( | 279 account_id_helper_.reset( |
| 271 new SigninAccountIdHelper(client_, token_service_, this)); | 280 new SigninAccountIdHelper(client_, token_service_, this)); |
| 272 | 281 |
| 273 account_tracker_service_->AddObserver(this); | 282 account_tracker_service_->AddObserver(this); |
| 274 } | 283 } |
| 275 | 284 |
| 276 void SigninManager::Shutdown() { | 285 void SigninManager::Shutdown() { |
| 277 account_tracker_service_->RemoveObserver(this); | 286 account_tracker_service_->RemoveObserver(this); |
| 278 if (merge_session_helper_) | 287 if (merge_session_helper_) { |
| 279 merge_session_helper_->CancelAll(); | 288 merge_session_helper_->CancelAll(); |
| 289 merge_session_helper_->RemoveObserver(this); |
| 290 } |
| 280 | 291 |
| 281 local_state_pref_registrar_.RemoveAll(); | 292 local_state_pref_registrar_.RemoveAll(); |
| 282 account_id_helper_.reset(); | 293 account_id_helper_.reset(); |
| 283 SigninManagerBase::Shutdown(); | 294 SigninManagerBase::Shutdown(); |
| 284 } | 295 } |
| 285 | 296 |
| 286 void SigninManager::OnGoogleServicesUsernamePatternChanged() { | 297 void SigninManager::OnGoogleServicesUsernamePatternChanged() { |
| 287 if (IsAuthenticated() && | 298 if (IsAuthenticated() && |
| 288 !IsAllowedUsername(GetAuthenticatedUsername())) { | 299 !IsAllowedUsername(GetAuthenticatedUsername())) { |
| 289 // Signed in user is invalid according to the current policy so sign | 300 // Signed in user is invalid according to the current policy so sign |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 prefs->SetBoolean(prefs::kReverseAutologinEnabled, false); | 367 prefs->SetBoolean(prefs::kReverseAutologinEnabled, false); |
| 357 } | 368 } |
| 358 | 369 |
| 359 void SigninManager::MergeSigninCredentialIntoCookieJar() { | 370 void SigninManager::MergeSigninCredentialIntoCookieJar() { |
| 360 if (!client_->ShouldMergeSigninCredentialsIntoCookieJar()) | 371 if (!client_->ShouldMergeSigninCredentialsIntoCookieJar()) |
| 361 return; | 372 return; |
| 362 | 373 |
| 363 if (!IsAuthenticated()) | 374 if (!IsAuthenticated()) |
| 364 return; | 375 return; |
| 365 | 376 |
| 366 // Don't execute 2 MergeSessionHelpers. New account takes priority. | 377 // Don't execute two MergeSessionHelpers. New account takes priority. |
| 367 if (merge_session_helper_.get() && merge_session_helper_->is_running()) | 378 if (merge_session_helper_) { |
| 368 merge_session_helper_->CancelAll(); | 379 if (merge_session_helper_->is_running()) |
| 380 merge_session_helper_->CancelAll(); |
| 381 merge_session_helper_->RemoveObserver(this); |
| 382 } |
| 369 | 383 |
| 370 merge_session_helper_.reset(new MergeSessionHelper( | 384 merge_session_helper_.reset(new MergeSessionHelper( |
| 371 token_service_, GaiaConstants::kChromeSource, | 385 token_service_, GaiaConstants::kChromeSource, |
| 372 client_->GetURLRequestContext(), NULL)); | 386 client_->GetURLRequestContext(), this)); |
| 373 | 387 |
| 374 merge_session_helper_->LogIn(GetAuthenticatedAccountId()); | 388 merge_session_helper_->LogIn(GetAuthenticatedAccountId()); |
| 375 } | 389 } |
| 376 | 390 |
| 377 void SigninManager::CompletePendingSignin() { | 391 void SigninManager::CompletePendingSignin() { |
| 378 DCHECK(!possibly_invalid_username_.empty()); | 392 DCHECK(!possibly_invalid_username_.empty()); |
| 379 OnSignedIn(possibly_invalid_username_); | 393 OnSignedIn(possibly_invalid_username_); |
| 380 | 394 |
| 381 DCHECK(!temp_refresh_token_.empty()); | 395 DCHECK(!temp_refresh_token_.empty()); |
| 382 DCHECK(IsAuthenticated()); | 396 DCHECK(IsAuthenticated()); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 void SigninManager::OnAccountUpdateFailed(const std::string& account_id) { | 450 void SigninManager::OnAccountUpdateFailed(const std::string& account_id) { |
| 437 user_info_fetched_by_account_tracker_ = true; | 451 user_info_fetched_by_account_tracker_ = true; |
| 438 PostSignedIn(); | 452 PostSignedIn(); |
| 439 } | 453 } |
| 440 | 454 |
| 441 void SigninManager::ProhibitSignout(bool prohibit_signout) { | 455 void SigninManager::ProhibitSignout(bool prohibit_signout) { |
| 442 prohibit_signout_ = prohibit_signout; | 456 prohibit_signout_ = prohibit_signout; |
| 443 } | 457 } |
| 444 | 458 |
| 445 bool SigninManager::IsSignoutProhibited() const { return prohibit_signout_; } | 459 bool SigninManager::IsSignoutProhibited() const { return prohibit_signout_; } |
| OLD | NEW |