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 |