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

Side by Side Diff: components/signin/core/browser/account_reconcilor.cc

Issue 896723006: Avoid double registration with content settings in account reconcilor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « components/signin/core/browser/account_reconcilor.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/account_reconcilor.h" 5 #include "components/signin/core/browser/account_reconcilor.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 SigninClient* client) 58 SigninClient* client)
59 : token_service_(token_service), 59 : token_service_(token_service),
60 signin_manager_(signin_manager), 60 signin_manager_(signin_manager),
61 client_(client), 61 client_(client),
62 merge_session_helper_(token_service_, 62 merge_session_helper_(token_service_,
63 GaiaConstants::kReconcilorSource, 63 GaiaConstants::kReconcilorSource,
64 client->GetURLRequestContext(), 64 client->GetURLRequestContext(),
65 NULL), 65 NULL),
66 registered_with_token_service_(false), 66 registered_with_token_service_(false),
67 registered_with_merge_session_helper_(false), 67 registered_with_merge_session_helper_(false),
68 registered_with_content_settings_(false),
68 is_reconcile_started_(false), 69 is_reconcile_started_(false),
69 first_execution_(true), 70 first_execution_(true),
70 are_gaia_accounts_set_(false), 71 are_gaia_accounts_set_(false),
71 chrome_accounts_changed_(false) { 72 chrome_accounts_changed_(false) {
72 VLOG(1) << "AccountReconcilor::AccountReconcilor"; 73 VLOG(1) << "AccountReconcilor::AccountReconcilor";
73 } 74 }
74 75
75 AccountReconcilor::~AccountReconcilor() { 76 AccountReconcilor::~AccountReconcilor() {
76 VLOG(1) << "AccountReconcilor::~AccountReconcilor"; 77 VLOG(1) << "AccountReconcilor::~AccountReconcilor";
77 // Make sure shutdown was called first. 78 // Make sure shutdown was called first.
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 138
138 void AccountReconcilor::RegisterWithSigninManager() { 139 void AccountReconcilor::RegisterWithSigninManager() {
139 signin_manager_->AddObserver(this); 140 signin_manager_->AddObserver(this);
140 } 141 }
141 142
142 void AccountReconcilor::UnregisterWithSigninManager() { 143 void AccountReconcilor::UnregisterWithSigninManager() {
143 signin_manager_->RemoveObserver(this); 144 signin_manager_->RemoveObserver(this);
144 } 145 }
145 146
146 void AccountReconcilor::RegisterWithContentSettings() { 147 void AccountReconcilor::RegisterWithContentSettings() {
148 VLOG(1) << "AccountReconcilor::RegisterWithContentSettings";
149 // During re-auth, the reconcilor will get a callback about successful signin
150 // even when the profile is already connected. Avoid re-registering
151 // with the token service since this will DCHECK.
152 if (registered_with_content_settings_)
153 return;
154
147 client_->AddContentSettingsObserver(this); 155 client_->AddContentSettingsObserver(this);
156 registered_with_content_settings_ = true;
148 } 157 }
149 158
150 void AccountReconcilor::UnregisterWithContentSettings() { 159 void AccountReconcilor::UnregisterWithContentSettings() {
160 VLOG(1) << "AccountReconcilor::UnregisterWithContentSettings";
161 if (!registered_with_content_settings_)
162 return;
163
151 client_->RemoveContentSettingsObserver(this); 164 client_->RemoveContentSettingsObserver(this);
165 registered_with_content_settings_ = false;
152 } 166 }
153 167
154 void AccountReconcilor::RegisterWithTokenService() { 168 void AccountReconcilor::RegisterWithTokenService() {
155 VLOG(1) << "AccountReconcilor::RegisterWithTokenService"; 169 VLOG(1) << "AccountReconcilor::RegisterWithTokenService";
156 // During re-auth, the reconcilor will get a callback about successful signin 170 // During re-auth, the reconcilor will get a callback about successful signin
157 // even when the profile is already connected. Avoid re-registering 171 // even when the profile is already connected. Avoid re-registering
158 // with the token service since this will DCHECK. 172 // with the token service since this will DCHECK.
159 if (registered_with_token_service_) 173 if (registered_with_token_service_)
160 return; 174 return;
161 175
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 556
543 void AccountReconcilor::GetCheckConnectionInfoCompleted(bool succeeded) { 557 void AccountReconcilor::GetCheckConnectionInfoCompleted(bool succeeded) {
544 base::TimeDelta time_to_check_connections = 558 base::TimeDelta time_to_check_connections =
545 base::Time::Now() - m_reconcile_start_time_; 559 base::Time::Now() - m_reconcile_start_time_;
546 signin_metrics::LogExternalCcResultFetches(succeeded, 560 signin_metrics::LogExternalCcResultFetches(succeeded,
547 time_to_check_connections); 561 time_to_check_connections);
548 GetAccountsFromCookie(base::Bind( 562 GetAccountsFromCookie(base::Bind(
549 &AccountReconcilor::ContinueReconcileActionAfterGetGaiaAccounts, 563 &AccountReconcilor::ContinueReconcileActionAfterGetGaiaAccounts,
550 base::Unretained(this))); 564 base::Unretained(this)));
551 } 565 }
OLDNEW
« no previous file with comments | « components/signin/core/browser/account_reconcilor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698