Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(560)

Unified Diff: components/signin/core/browser/signin_manager.cc

Issue 936503002: SigninManager owns ObserverList for the MergeSessionHelper. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Override! Override! (toro! toro!) Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/signin/core/browser/signin_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/signin/core/browser/signin_manager.cc
diff --git a/components/signin/core/browser/signin_manager.cc b/components/signin/core/browser/signin_manager.cc
index 0875b9a3461b2b96009f5d1cf367f9c8fc289f71..c59c76cf9226c3ebca3b4d46dca347af1a977fbe 100644
--- a/components/signin/core/browser/signin_manager.cc
+++ b/components/signin/core/browser/signin_manager.cc
@@ -74,14 +74,23 @@ SigninManager::SigninManager(SigninClient* client,
void SigninManager::AddMergeSessionObserver(
MergeSessionHelper::Observer* observer) {
- if (merge_session_helper_)
- merge_session_helper_->AddObserver(observer);
+ merge_session_observer_list_.AddObserver(observer);
}
void SigninManager::RemoveMergeSessionObserver(
MergeSessionHelper::Observer* observer) {
- if (merge_session_helper_)
- merge_session_helper_->RemoveObserver(observer);
+ merge_session_observer_list_.RemoveObserver(observer);
+}
+
+void SigninManager::MergeSessionCompleted(const std::string& account_id,
+ const GoogleServiceAuthError& error) {
+ FOR_EACH_OBSERVER(MergeSessionHelper::Observer, merge_session_observer_list_,
+ MergeSessionCompleted(account_id, error));
+}
+
+void SigninManager::GetCheckConnectionInfoCompleted(bool succeeded) {
+ FOR_EACH_OBSERVER(MergeSessionHelper::Observer, merge_session_observer_list_,
+ GetCheckConnectionInfoCompleted(succeeded));
}
SigninManager::~SigninManager() {}
@@ -275,8 +284,10 @@ void SigninManager::Initialize(PrefService* local_state) {
void SigninManager::Shutdown() {
account_tracker_service_->RemoveObserver(this);
- if (merge_session_helper_)
+ if (merge_session_helper_) {
merge_session_helper_->CancelAll();
+ merge_session_helper_->RemoveObserver(this);
+ }
local_state_pref_registrar_.RemoveAll();
account_id_helper_.reset();
@@ -363,13 +374,16 @@ void SigninManager::MergeSigninCredentialIntoCookieJar() {
if (!IsAuthenticated())
return;
- // Don't execute 2 MergeSessionHelpers. New account takes priority.
- if (merge_session_helper_.get() && merge_session_helper_->is_running())
- merge_session_helper_->CancelAll();
+ // Don't execute two MergeSessionHelpers. New account takes priority.
+ if (merge_session_helper_) {
+ if (merge_session_helper_->is_running())
+ merge_session_helper_->CancelAll();
+ merge_session_helper_->RemoveObserver(this);
+ }
merge_session_helper_.reset(new MergeSessionHelper(
token_service_, GaiaConstants::kChromeSource,
- client_->GetURLRequestContext(), NULL));
+ client_->GetURLRequestContext(), this));
merge_session_helper_->LogIn(GetAuthenticatedAccountId());
}
« no previous file with comments | « components/signin/core/browser/signin_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698