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

Side by Side Diff: chrome/browser/chromeos/login/session/user_session_manager.cc

Issue 1097663003: Fetch OAuth2 tokens prior to profile creation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove logging Created 5 years, 8 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 "chrome/browser/chromeos/login/session/user_session_manager.h" 5 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base_paths.h" 9 #include "base/base_paths.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 } else { 395 } else {
396 authenticator_ = new ChromeCryptohomeAuthenticator(consumer); 396 authenticator_ = new ChromeCryptohomeAuthenticator(consumer);
397 } 397 }
398 } else { 398 } else {
399 // TODO(nkostylev): Fix this hack by improving Authenticator dependencies. 399 // TODO(nkostylev): Fix this hack by improving Authenticator dependencies.
400 authenticator_->SetConsumer(consumer); 400 authenticator_->SetConsumer(consumer);
401 } 401 }
402 return authenticator_; 402 return authenticator_;
403 } 403 }
404 404
405 void UserSessionManager::FetchOAuth2Tokens(
406 const UserContext& user_context,
407 const FetchOAuth2TokensCallback& callback) {
408 DCHECK(!user_context.GetAuthCode().empty());
409 login_callback_ = callback;
410 user_context_ = user_context;
411 oauth2_token_fetcher_.reset(new OAuth2TokenFetcher(
412 this, g_browser_process->system_request_context()));
413 oauth2_token_fetcher_->StartExchangeFromAuthCode(user_context.GetAuthCode());
414 }
415
416 void UserSessionManager::OnOAuth2TokensAvailable(
417 const GaiaAuthConsumer::ClientOAuthResult& oauth2_tokens) {
418 VLOG(1) << "OAuth2 tokens fetched";
419
420 refresh_token_ = oauth2_tokens.refresh_token;
421 oauthlogin_access_token_ = oauth2_tokens.access_token;
422 login_callback_.Run(user_context_, LoginPerformer::AUTH_MODE_EXTENSION);
423 }
424
425 void UserSessionManager::OnOAuth2TokensFetchFailed() {
426 LOG(WARNING) << "UserSessionManager::OnOAuth2TokensFetchFailed";
xiyuan 2015/04/20 22:02:41 Should we still call login_callback_.Run()? Otherw
achuithb 2015/04/21 07:10:21 Done.
427 }
428
405 void UserSessionManager::StartSession( 429 void UserSessionManager::StartSession(
406 const UserContext& user_context, 430 const UserContext& user_context,
407 StartSessionType start_session_type, 431 StartSessionType start_session_type,
408 bool has_auth_cookies, 432 bool has_auth_cookies,
409 bool has_active_session, 433 bool has_active_session,
410 UserSessionManagerDelegate* delegate) { 434 UserSessionManagerDelegate* delegate) {
411 delegate_ = delegate; 435 delegate_ = delegate;
412 start_session_type_ = start_session_type; 436 start_session_type_ = start_session_type;
413 437
414 VLOG(1) << "Starting session for " << user_context.GetUserID(); 438 VLOG(1) << "Starting session for " << user_context.GetUserID();
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 void UserSessionManager::StopChildStatusObserving() { 819 void UserSessionManager::StopChildStatusObserving() {
796 if (!waiting_for_child_account_status_) { 820 if (!waiting_for_child_account_status_) {
797 InitializeStartUrls(); 821 InitializeStartUrls();
798 waiting_for_child_account_status_ = false; 822 waiting_for_child_account_status_ = false;
799 } 823 }
800 } 824 }
801 825
802 void UserSessionManager::CreateUserSession(const UserContext& user_context, 826 void UserSessionManager::CreateUserSession(const UserContext& user_context,
803 bool has_auth_cookies) { 827 bool has_auth_cookies) {
804 user_context_ = user_context; 828 user_context_ = user_context;
829
830 // If we have already fetched OAuth2 tokens, set them here.
831 if (!refresh_token_.empty())
832 user_context_.SetRefreshToken(refresh_token_);
833 if (!oauthlogin_access_token_.empty())
834 user_context_.SetAuthCode(std::string());
xiyuan 2015/04/20 22:02:41 Move 831-834 to OnOAuth2TokensAvailable.
achuithb 2015/04/21 07:10:21 Done.
835
805 has_auth_cookies_ = has_auth_cookies; 836 has_auth_cookies_ = has_auth_cookies;
806 InitSessionRestoreStrategy(); 837 InitSessionRestoreStrategy();
807 StoreUserContextDataBeforeProfileIsCreated(); 838 StoreUserContextDataBeforeProfileIsCreated();
808 } 839 }
809 840
810 void UserSessionManager::PreStartSession() { 841 void UserSessionManager::PreStartSession() {
811 // Switch log file as soon as possible. 842 // Switch log file as soon as possible.
812 if (base::SysInfo::IsRunningOnChromeOS()) 843 if (base::SysInfo::IsRunningOnChromeOS())
813 logging::RedirectChromeLogging(*(base::CommandLine::ForCurrentProcess())); 844 logging::RedirectChromeLogging(*(base::CommandLine::ForCurrentProcess()));
814 } 845 }
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 if (command_line->HasSwitch(::switches::kAppModeAuthCode)) { 1238 if (command_line->HasSwitch(::switches::kAppModeAuthCode)) {
1208 user_context_.SetAuthCode(command_line->GetSwitchValueASCII( 1239 user_context_.SetAuthCode(command_line->GetSwitchValueASCII(
1209 ::switches::kAppModeAuthCode)); 1240 ::switches::kAppModeAuthCode));
1210 } 1241 }
1211 1242
1212 DCHECK(!has_auth_cookies_); 1243 DCHECK(!has_auth_cookies_);
1213 } 1244 }
1214 1245
1215 if (has_auth_cookies_) { 1246 if (has_auth_cookies_) {
1216 session_restore_strategy_ = OAuth2LoginManager::RESTORE_FROM_COOKIE_JAR; 1247 session_restore_strategy_ = OAuth2LoginManager::RESTORE_FROM_COOKIE_JAR;
1217 } else if (!user_context_.GetAuthCode().empty()) { 1248 } else if (!oauthlogin_access_token_.empty()) {
1218 session_restore_strategy_ = OAuth2LoginManager::RESTORE_FROM_AUTH_CODE; 1249 session_restore_strategy_ =
1250 OAuth2LoginManager::RESTORE_FROM_PASSED_OAUTH2_ACCESS_TOKEN;
xiyuan 2015/04/20 22:02:41 We probably don't need a new strategy. After we ge
achuithb 2015/04/21 07:10:21 So RESTORE_FROM_PASSED_OAUTH2_REFRESH_TOKEN doesn'
xiyuan 2015/04/22 00:37:17 Yes, it should as long as refresh token is involve
achuithb 2015/04/22 22:58:14 Done.
1219 } else if (!user_context_.GetRefreshToken().empty()) { 1251 } else if (!user_context_.GetRefreshToken().empty()) {
1220 session_restore_strategy_ = 1252 session_restore_strategy_ =
1221 OAuth2LoginManager::RESTORE_FROM_PASSED_OAUTH2_REFRESH_TOKEN; 1253 OAuth2LoginManager::RESTORE_FROM_PASSED_OAUTH2_REFRESH_TOKEN;
1222 } else { 1254 } else {
1223 session_restore_strategy_ = 1255 session_restore_strategy_ =
1224 OAuth2LoginManager::RESTORE_FROM_SAVED_OAUTH2_REFRESH_TOKEN; 1256 OAuth2LoginManager::RESTORE_FROM_SAVED_OAUTH2_REFRESH_TOKEN;
1225 } 1257 }
1226 } 1258 }
1227 1259
1228 void UserSessionManager::RestoreAuthSessionImpl( 1260 void UserSessionManager::RestoreAuthSessionImpl(
(...skipping 21 matching lines...) Expand all
1250 1282
1251 // Authentication request context may not be available if user was not 1283 // Authentication request context may not be available if user was not
1252 // signing in with GAIA webview (i.e. webview instance hasn't been 1284 // signing in with GAIA webview (i.e. webview instance hasn't been
1253 // initialized at all). Use fallback request context. 1285 // initialized at all). Use fallback request context.
1254 if (!auth_request_context) { 1286 if (!auth_request_context) {
1255 auth_request_context = 1287 auth_request_context =
1256 authenticator_->authentication_context()->GetRequestContext(); 1288 authenticator_->authentication_context()->GetRequestContext();
1257 } 1289 }
1258 login_manager->RestoreSession(auth_request_context, session_restore_strategy_, 1290 login_manager->RestoreSession(auth_request_context, session_restore_strategy_,
1259 user_context_.GetRefreshToken(), 1291 user_context_.GetRefreshToken(),
1260 user_context_.GetAuthCode()); 1292 oauthlogin_access_token_);
1261 } 1293 }
1262 1294
1263 void UserSessionManager::InitRlzImpl(Profile* profile, bool disabled) { 1295 void UserSessionManager::InitRlzImpl(Profile* profile, bool disabled) {
1264 #if defined(ENABLE_RLZ) 1296 #if defined(ENABLE_RLZ)
1265 PrefService* local_state = g_browser_process->local_state(); 1297 PrefService* local_state = g_browser_process->local_state();
1266 if (disabled) { 1298 if (disabled) {
1267 // Empty brand code means an organic install (no RLZ pings are sent). 1299 // Empty brand code means an organic install (no RLZ pings are sent).
1268 google_brand::chromeos::ClearBrandForCurrentSession(); 1300 google_brand::chromeos::ClearBrandForCurrentSession();
1269 } 1301 }
1270 if (disabled != local_state->GetBoolean(prefs::kRLZDisabled)) { 1302 if (disabled != local_state->GetBoolean(prefs::kRLZDisabled)) {
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
1649 if (is_enterprise_managed) 1681 if (is_enterprise_managed)
1650 display = USER_PODS_DISPLAY_DISABLED_MANAGED; 1682 display = USER_PODS_DISPLAY_DISABLED_MANAGED;
1651 else 1683 else
1652 display = USER_PODS_DISPLAY_DISABLED_REGULAR; 1684 display = USER_PODS_DISPLAY_DISABLED_REGULAR;
1653 } 1685 }
1654 UMA_HISTOGRAM_ENUMERATION("UserSessionManager.UserPodsDisplay", display, 1686 UMA_HISTOGRAM_ENUMERATION("UserSessionManager.UserPodsDisplay", display,
1655 NUM_USER_PODS_DISPLAY); 1687 NUM_USER_PODS_DISPLAY);
1656 } 1688 }
1657 1689
1658 } // namespace chromeos 1690 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698