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

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

Issue 956363002: Add account id/gaia id to sign-in internals page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 5 years, 9 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
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/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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 void SigninManager::InitTokenService() { 98 void SigninManager::InitTokenService() {
99 if (token_service_ && IsAuthenticated()) 99 if (token_service_ && IsAuthenticated())
100 token_service_->LoadCredentials(GetAuthenticatedAccountId()); 100 token_service_->LoadCredentials(GetAuthenticatedAccountId());
101 } 101 }
102 102
103 std::string SigninManager::SigninTypeToString(SigninManager::SigninType type) { 103 std::string SigninManager::SigninTypeToString(SigninManager::SigninType type) {
104 switch (type) { 104 switch (type) {
105 case SIGNIN_TYPE_NONE: 105 case SIGNIN_TYPE_NONE:
106 return "No Signin"; 106 return "No Signin";
107 case SIGNIN_TYPE_WITH_REFRESH_TOKEN: 107 case SIGNIN_TYPE_WITH_REFRESH_TOKEN:
108 return "Signin with refresh token"; 108 return "With refresh token";
109 } 109 }
110 110
111 NOTREACHED(); 111 NOTREACHED();
112 return std::string(); 112 return std::string();
113 } 113 }
114 114
115 bool SigninManager::PrepareForSignin(SigninType type, 115 bool SigninManager::PrepareForSignin(SigninType type,
116 const std::string& username, 116 const std::string& username,
117 const std::string& password) { 117 const std::string& password) {
118 DCHECK(possibly_invalid_username_.empty() || 118 DCHECK(possibly_invalid_username_.empty() ||
(...skipping 11 matching lines...) Expand all
130 // 2) trying to refresh credentials for an existing username. If it is 2, we 130 // 2) trying to refresh credentials for an existing username. If it is 2, we
131 // need to try again, but take care to leave state around tracking that the 131 // need to try again, but take care to leave state around tracking that the
132 // user has successfully signed in once before with this username, so that on 132 // user has successfully signed in once before with this username, so that on
133 // restart we don't think sync setup has never completed. 133 // restart we don't think sync setup has never completed.
134 ClearTransientSigninData(); 134 ClearTransientSigninData();
135 type_ = type; 135 type_ = type;
136 possibly_invalid_username_.assign(username); 136 possibly_invalid_username_.assign(username);
137 password_.assign(password); 137 password_.assign(password);
138 signin_manager_signed_in_ = false; 138 signin_manager_signed_in_ = false;
139 user_info_fetched_by_account_tracker_ = false; 139 user_info_fetched_by_account_tracker_ = false;
140 NotifyDiagnosticsObservers(SIGNIN_TYPE, SigninTypeToString(type)); 140 NotifyDiagnosticsObservers(SIGNIN_STARTED, SigninTypeToString(type));
141 return true; 141 return true;
142 } 142 }
143 143
144 void SigninManager::StartSignInWithRefreshToken( 144 void SigninManager::StartSignInWithRefreshToken(
145 const std::string& refresh_token, 145 const std::string& refresh_token,
146 const std::string& username, 146 const std::string& username,
147 const std::string& password, 147 const std::string& password,
148 const OAuthTokenFetchedCallback& callback) { 148 const OAuthTokenFetchedCallback& callback) {
149 DCHECK(!IsAuthenticated() || 149 DCHECK(!IsAuthenticated() ||
150 gaia::AreEmailsSame(username, GetAuthenticatedUsername())); 150 gaia::AreEmailsSame(username, GetAuthenticatedUsername()));
151 151
152 if (!PrepareForSignin(SIGNIN_TYPE_WITH_REFRESH_TOKEN, username, password)) 152 if (!PrepareForSignin(SIGNIN_TYPE_WITH_REFRESH_TOKEN, username, password))
153 return; 153 return;
154 154
155 // Store our callback and token. 155 // Store our callback and token.
156 temp_refresh_token_ = refresh_token; 156 temp_refresh_token_ = refresh_token;
157 possibly_invalid_username_ = username; 157 possibly_invalid_username_ = username;
158 158
159 NotifyDiagnosticsObservers(GET_USER_INFO_STATUS, "Successful");
160
161 if (!callback.is_null() && !temp_refresh_token_.empty()) { 159 if (!callback.is_null() && !temp_refresh_token_.empty()) {
162 callback.Run(temp_refresh_token_); 160 callback.Run(temp_refresh_token_);
163 } else { 161 } else {
164 // No oauth token or callback, so just complete our pending signin. 162 // No oauth token or callback, so just complete our pending signin.
165 CompletePendingSignin(); 163 CompletePendingSignin();
166 } 164 }
167 } 165 }
168 166
169 void SigninManager::CopyCredentialsFrom(const SigninManager& source) { 167 void SigninManager::CopyCredentialsFrom(const SigninManager& source) {
170 DCHECK_NE(this, &source); 168 DCHECK_NE(this, &source);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 const std::string username = GetAuthenticatedUsername(); 220 const std::string username = GetAuthenticatedUsername();
223 const base::Time signin_time = 221 const base::Time signin_time =
224 base::Time::FromInternalValue( 222 base::Time::FromInternalValue(
225 client_->GetPrefs()->GetInt64(prefs::kSignedInTime)); 223 client_->GetPrefs()->GetInt64(prefs::kSignedInTime));
226 ClearAuthenticatedUsername(); 224 ClearAuthenticatedUsername();
227 client_->GetPrefs()->ClearPref(prefs::kGoogleServicesHostedDomain); 225 client_->GetPrefs()->ClearPref(prefs::kGoogleServicesHostedDomain);
228 client_->GetPrefs()->ClearPref(prefs::kGoogleServicesUsername); 226 client_->GetPrefs()->ClearPref(prefs::kGoogleServicesUsername);
229 client_->GetPrefs()->ClearPref(prefs::kSignedInTime); 227 client_->GetPrefs()->ClearPref(prefs::kSignedInTime);
230 client_->OnSignedOut(); 228 client_->OnSignedOut();
231 229
232 // Erase (now) stale information from AboutSigninInternals.
233 NotifyDiagnosticsObservers(USERNAME, "");
234
235 // Determine the duration the user was logged in and log that to UMA. 230 // Determine the duration the user was logged in and log that to UMA.
236 if (!signin_time.is_null()) { 231 if (!signin_time.is_null()) {
237 base::TimeDelta signed_in_duration = base::Time::Now() - signin_time; 232 base::TimeDelta signed_in_duration = base::Time::Now() - signin_time;
238 UMA_HISTOGRAM_COUNTS("Signin.SignedInDurationBeforeSignout", 233 UMA_HISTOGRAM_COUNTS("Signin.SignedInDurationBeforeSignout",
239 signed_in_duration.InMinutes()); 234 signed_in_duration.InMinutes());
240 } 235 }
241 236
242 // Revoke all tokens before sending signed_out notification, because there 237 // Revoke all tokens before sending signed_out notification, because there
243 // may be components that don't listen for token service events when the 238 // may be components that don't listen for token service events when the
244 // profile is not connected to an account. 239 // profile is not connected to an account.
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 } 377 }
383 378
384 merge_session_helper_.reset(new MergeSessionHelper( 379 merge_session_helper_.reset(new MergeSessionHelper(
385 token_service_, GaiaConstants::kChromeSource, 380 token_service_, GaiaConstants::kChromeSource,
386 client_->GetURLRequestContext(), this)); 381 client_->GetURLRequestContext(), this));
387 382
388 merge_session_helper_->LogIn(GetAuthenticatedAccountId()); 383 merge_session_helper_->LogIn(GetAuthenticatedAccountId());
389 } 384 }
390 385
391 void SigninManager::CompletePendingSignin() { 386 void SigninManager::CompletePendingSignin() {
387 NotifyDiagnosticsObservers(SIGNIN_COMPLETED, "Successful");
388
392 DCHECK(!possibly_invalid_username_.empty()); 389 DCHECK(!possibly_invalid_username_.empty());
393 OnSignedIn(possibly_invalid_username_); 390 OnSignedIn(possibly_invalid_username_);
394 391
395 DCHECK(!temp_refresh_token_.empty()); 392 DCHECK(!temp_refresh_token_.empty());
396 DCHECK(IsAuthenticated()); 393 DCHECK(IsAuthenticated());
397 token_service_->UpdateCredentials(GetAuthenticatedAccountId(), 394 token_service_->UpdateCredentials(GetAuthenticatedAccountId(),
398 temp_refresh_token_); 395 temp_refresh_token_);
399 temp_refresh_token_.clear(); 396 temp_refresh_token_.clear();
400 397
401 MergeSigninCredentialIntoCookieJar(); 398 MergeSigninCredentialIntoCookieJar();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 void SigninManager::OnAccountUpdateFailed(const std::string& account_id) { 447 void SigninManager::OnAccountUpdateFailed(const std::string& account_id) {
451 user_info_fetched_by_account_tracker_ = true; 448 user_info_fetched_by_account_tracker_ = true;
452 PostSignedIn(); 449 PostSignedIn();
453 } 450 }
454 451
455 void SigninManager::ProhibitSignout(bool prohibit_signout) { 452 void SigninManager::ProhibitSignout(bool prohibit_signout) {
456 prohibit_signout_ = prohibit_signout; 453 prohibit_signout_ = prohibit_signout;
457 } 454 }
458 455
459 bool SigninManager::IsSignoutProhibited() const { return prohibit_signout_; } 456 bool SigninManager::IsSignoutProhibited() const { return prohibit_signout_; }
OLDNEW
« no previous file with comments | « components/signin/core/browser/signin_internals_util.cc ('k') | components/signin/core/browser/signin_manager_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698