OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/existing_user_controller.h" | 5 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 #include "chrome/browser/browser_process.h" | 22 #include "chrome/browser/browser_process.h" |
23 #include "chrome/browser/browser_process_platform_part.h" | 23 #include "chrome/browser/browser_process_platform_part.h" |
24 #include "chrome/browser/chrome_notification_types.h" | 24 #include "chrome/browser/chrome_notification_types.h" |
25 #include "chrome/browser/chromeos/boot_times_recorder.h" | 25 #include "chrome/browser/chromeos/boot_times_recorder.h" |
26 #include "chrome/browser/chromeos/customization/customization_document.h" | 26 #include "chrome/browser/chromeos/customization/customization_document.h" |
27 #include "chrome/browser/chromeos/login/auth/chrome_login_performer.h" | 27 #include "chrome/browser/chromeos/login/auth/chrome_login_performer.h" |
28 #include "chrome/browser/chromeos/login/easy_unlock/bootstrap_user_context_initi
alizer.h" | 28 #include "chrome/browser/chromeos/login/easy_unlock/bootstrap_user_context_initi
alizer.h" |
29 #include "chrome/browser/chromeos/login/easy_unlock/bootstrap_user_flow.h" | 29 #include "chrome/browser/chromeos/login/easy_unlock/bootstrap_user_flow.h" |
30 #include "chrome/browser/chromeos/login/helper.h" | 30 #include "chrome/browser/chromeos/login/helper.h" |
31 #include "chrome/browser/chromeos/login/session/user_session_manager.h" | 31 #include "chrome/browser/chromeos/login/session/user_session_manager.h" |
32 #include "chrome/browser/chromeos/login/signin/oauth2_token_initializer.h" | |
33 #include "chrome/browser/chromeos/login/signin_specifics.h" | 32 #include "chrome/browser/chromeos/login/signin_specifics.h" |
34 #include "chrome/browser/chromeos/login/startup_utils.h" | 33 #include "chrome/browser/chromeos/login/startup_utils.h" |
35 #include "chrome/browser/chromeos/login/ui/login_display_host.h" | 34 #include "chrome/browser/chromeos/login/ui/login_display_host.h" |
36 #include "chrome/browser/chromeos/login/ui/user_adding_screen.h" | 35 #include "chrome/browser/chromeos/login/ui/user_adding_screen.h" |
37 #include "chrome/browser/chromeos/login/user_flow.h" | 36 #include "chrome/browser/chromeos/login/user_flow.h" |
38 #include "chrome/browser/chromeos/login/users/chrome_user_manager.h" | 37 #include "chrome/browser/chromeos/login/users/chrome_user_manager.h" |
39 #include "chrome/browser/chromeos/login/wizard_controller.h" | 38 #include "chrome/browser/chromeos/login/wizard_controller.h" |
40 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 39 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
41 #include "chrome/browser/chromeos/policy/device_local_account.h" | 40 #include "chrome/browser/chromeos/policy/device_local_account.h" |
42 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" | 41 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" |
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
590 | 589 |
591 StopPublicSessionAutoLoginTimer(); | 590 StopPublicSessionAutoLoginTimer(); |
592 | 591 |
593 // Truth table of |has_auth_cookies|: | 592 // Truth table of |has_auth_cookies|: |
594 // Regular SAML | 593 // Regular SAML |
595 // /ServiceLogin T T | 594 // /ServiceLogin T T |
596 // /ChromeOsEmbeddedSetup F T | 595 // /ChromeOsEmbeddedSetup F T |
597 // Bootstrap experiment F N/A | 596 // Bootstrap experiment F N/A |
598 const bool has_auth_cookies = | 597 const bool has_auth_cookies = |
599 login_performer_->auth_mode() == LoginPerformer::AUTH_MODE_EXTENSION && | 598 login_performer_->auth_mode() == LoginPerformer::AUTH_MODE_EXTENSION && |
600 (user_context.GetAccessToken().empty() || | 599 (user_context.GetAuthCode().empty() || |
601 user_context.GetAuthFlow() == UserContext::AUTH_FLOW_GAIA_WITH_SAML) && | 600 user_context.GetAuthFlow() == UserContext::AUTH_FLOW_GAIA_WITH_SAML) && |
602 user_context.GetAuthFlow() != UserContext::AUTH_FLOW_EASY_BOOTSTRAP; | 601 user_context.GetAuthFlow() != UserContext::AUTH_FLOW_EASY_BOOTSTRAP; |
603 | 602 |
604 // LoginPerformer instance will delete itself in case of successful auth. | 603 // LoginPerformer instance will delete itself in case of successful auth. |
605 login_performer_->set_delegate(NULL); | 604 login_performer_->set_delegate(NULL); |
606 ignore_result(login_performer_.release()); | 605 ignore_result(login_performer_.release()); |
607 | 606 |
608 UserSessionManager::StartSessionType start_session_type = | 607 UserSessionManager::StartSessionType start_session_type = |
609 UserAddingScreen::Get()->IsRunning() | 608 UserAddingScreen::Get()->IsRunning() |
610 ? UserSessionManager::SECONDARY_USER_SESSION | 609 ? UserSessionManager::SECONDARY_USER_SESSION |
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1116 if (user_context.GetAuthFlow() == UserContext::AUTH_FLOW_EASY_BOOTSTRAP) { | 1115 if (user_context.GetAuthFlow() == UserContext::AUTH_FLOW_EASY_BOOTSTRAP) { |
1117 bootstrap_user_context_initializer_.reset( | 1116 bootstrap_user_context_initializer_.reset( |
1118 new BootstrapUserContextInitializer()); | 1117 new BootstrapUserContextInitializer()); |
1119 bootstrap_user_context_initializer_->Start( | 1118 bootstrap_user_context_initializer_->Start( |
1120 user_context.GetAuthCode(), | 1119 user_context.GetAuthCode(), |
1121 base::Bind(&ExistingUserController::OnBootstrapUserContextInitialized, | 1120 base::Bind(&ExistingUserController::OnBootstrapUserContextInitialized, |
1122 weak_factory_.GetWeakPtr())); | 1121 weak_factory_.GetWeakPtr())); |
1123 return; | 1122 return; |
1124 } | 1123 } |
1125 | 1124 |
1126 // Fetch OAuth2 tokens if we have an auth code. | |
1127 if (!user_context.GetAuthCode().empty()) { | |
1128 oauth2_token_initializer_.reset(new OAuth2TokenInitializer); | |
1129 oauth2_token_initializer_->Start( | |
1130 user_context, base::Bind(&ExistingUserController::OnOAuth2TokensFetched, | |
1131 weak_factory_.GetWeakPtr())); | |
1132 return; | |
1133 } | |
1134 | |
1135 PerformLogin(user_context, LoginPerformer::AUTH_MODE_EXTENSION); | 1125 PerformLogin(user_context, LoginPerformer::AUTH_MODE_EXTENSION); |
1136 } | 1126 } |
1137 | 1127 |
1138 void ExistingUserController::DoLogin(const UserContext& user_context, | 1128 void ExistingUserController::DoLogin(const UserContext& user_context, |
1139 const SigninSpecifics& specifics) { | 1129 const SigninSpecifics& specifics) { |
1140 if (is_login_in_progress_) { | 1130 if (is_login_in_progress_) { |
1141 // If there is another login in progress, bail out. Do not re-enable | 1131 // If there is another login in progress, bail out. Do not re-enable |
1142 // clicking on other windows and the status area. Do not start the | 1132 // clicking on other windows and the status area. Do not start the |
1143 // auto-login timer. | 1133 // auto-login timer. |
1144 return; | 1134 return; |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1202 // for bootstrap after the user session is started. | 1192 // for bootstrap after the user session is started. |
1203 ChromeUserManager::Get()->SetUserFlow( | 1193 ChromeUserManager::Get()->SetUserFlow( |
1204 user_context.GetUserID(), | 1194 user_context.GetUserID(), |
1205 new BootstrapUserFlow( | 1195 new BootstrapUserFlow( |
1206 user_context, | 1196 user_context, |
1207 bootstrap_user_context_initializer_->random_key_used())); | 1197 bootstrap_user_context_initializer_->random_key_used())); |
1208 | 1198 |
1209 PerformLogin(user_context, LoginPerformer::AUTH_MODE_EXTENSION); | 1199 PerformLogin(user_context, LoginPerformer::AUTH_MODE_EXTENSION); |
1210 } | 1200 } |
1211 | 1201 |
1212 void ExistingUserController::OnOAuth2TokensFetched( | |
1213 bool success, | |
1214 const UserContext& user_context) { | |
1215 if (!success) { | |
1216 LOG(ERROR) << "OAuth2 token fetch failed."; | |
1217 OnAuthFailure(AuthFailure(AuthFailure::NETWORK_AUTH_FAILED)); | |
1218 return; | |
1219 } | |
1220 PerformLogin(user_context, LoginPerformer::AUTH_MODE_EXTENSION); | |
1221 } | |
1222 | |
1223 } // namespace chromeos | 1202 } // namespace chromeos |
OLD | NEW |