| OLD | NEW |
| 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/easy_unlock/bootstrap_user_context_initi
alizer.h" | 5 #include "chrome/browser/chromeos/login/easy_unlock/bootstrap_user_context_initi
alizer.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "chrome/browser/browser_process.h" | 10 #include "chrome/browser/browser_process.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 client_info.client_id = gaia_urls->oauth2_chrome_client_id(); | 61 client_info.client_id = gaia_urls->oauth2_chrome_client_id(); |
| 62 client_info.client_secret = gaia_urls->oauth2_chrome_client_secret(); | 62 client_info.client_secret = gaia_urls->oauth2_chrome_client_secret(); |
| 63 | 63 |
| 64 token_fetcher_.reset( | 64 token_fetcher_.reset( |
| 65 new gaia::GaiaOAuthClient(g_browser_process->system_request_context())); | 65 new gaia::GaiaOAuthClient(g_browser_process->system_request_context())); |
| 66 token_fetcher_->GetTokensFromAuthCode(client_info, auth_code, kMaxGaiaRetries, | 66 token_fetcher_->GetTokensFromAuthCode(client_info, auth_code, kMaxGaiaRetries, |
| 67 this); | 67 this); |
| 68 } | 68 } |
| 69 | 69 |
| 70 void BootstrapUserContextInitializer::StartCheckExistingKeys() { | 70 void BootstrapUserContextInitializer::StartCheckExistingKeys() { |
| 71 const std::string& user_id = user_context_.GetUserID(); |
| 72 |
| 71 // Use random key for the first time user. | 73 // Use random key for the first time user. |
| 72 if (!user_manager::UserManager::Get()->IsKnownUser( | 74 if (!user_manager::UserManager::Get()->IsKnownUser(user_id)) { |
| 73 user_context_.GetAccountId())) { | |
| 74 CreateRandomKey(); | 75 CreateRandomKey(); |
| 75 return; | 76 return; |
| 76 } | 77 } |
| 77 | 78 |
| 78 EasyUnlockKeyManager* key_manager = | 79 EasyUnlockKeyManager* key_manager = |
| 79 UserSessionManager::GetInstance()->GetEasyUnlockKeyManager(); | 80 UserSessionManager::GetInstance()->GetEasyUnlockKeyManager(); |
| 80 key_manager->GetDeviceDataList( | 81 key_manager->GetDeviceDataList( |
| 81 UserContext(user_context_.GetAccountId()), | 82 UserContext(user_id), |
| 82 base::Bind(&BootstrapUserContextInitializer::OnGetEasyUnlockData, | 83 base::Bind(&BootstrapUserContextInitializer::OnGetEasyUnlockData, |
| 83 weak_ptr_factory_.GetWeakPtr())); | 84 weak_ptr_factory_.GetWeakPtr())); |
| 84 } | 85 } |
| 85 | 86 |
| 86 void BootstrapUserContextInitializer::OnGetEasyUnlockData( | 87 void BootstrapUserContextInitializer::OnGetEasyUnlockData( |
| 87 bool success, | 88 bool success, |
| 88 const EasyUnlockDeviceKeyDataList& data_list) { | 89 const EasyUnlockDeviceKeyDataList& data_list) { |
| 89 // Existing user must have Smart lock keys to use bootstrap flow. | 90 // Existing user must have Smart lock keys to use bootstrap flow. |
| 90 if (!success || data_list.empty()) { | 91 if (!success || data_list.empty()) { |
| 91 LOG(ERROR) << "Unable to get Easy unlock key data."; | 92 LOG(ERROR) << "Unable to get Easy unlock key data."; |
| 92 Notify(false); | 93 Notify(false); |
| 93 return; | 94 return; |
| 94 } | 95 } |
| 95 | 96 |
| 96 EasyUnlockService* service = | 97 EasyUnlockService* service = |
| 97 EasyUnlockService::Get(ProfileHelper::GetSigninProfile()); | 98 EasyUnlockService::Get(ProfileHelper::GetSigninProfile()); |
| 98 service->AddObserver(this); | 99 service->AddObserver(this); |
| 99 | 100 |
| 100 static_cast<EasyUnlockServiceSignin*>(service) | 101 static_cast<EasyUnlockServiceSignin*>(service) |
| 101 ->SetCurrentUser(user_context_.GetAccountId().GetUserEmail()); | 102 ->SetCurrentUser(user_context_.GetUserID()); |
| 102 OnScreenlockStateChanged(service->GetScreenlockState()); | 103 OnScreenlockStateChanged(service->GetScreenlockState()); |
| 103 } | 104 } |
| 104 | 105 |
| 105 void BootstrapUserContextInitializer::OnEasyUnlockAuthenticated( | 106 void BootstrapUserContextInitializer::OnEasyUnlockAuthenticated( |
| 106 EasyUnlockAuthAttempt::Type auth_attempt_type, | 107 EasyUnlockAuthAttempt::Type auth_attempt_type, |
| 107 bool success, | 108 bool success, |
| 108 const std::string& user_id, | 109 const std::string& user_id, |
| 109 const std::string& key_secret, | 110 const std::string& key_secret, |
| 110 const std::string& key_label) { | 111 const std::string& key_label) { |
| 111 DCHECK_EQ(EasyUnlockAuthAttempt::TYPE_SIGNIN, auth_attempt_type); | 112 DCHECK_EQ(EasyUnlockAuthAttempt::TYPE_SIGNIN, auth_attempt_type); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 // TODO(xiyuan): Add timeout and hook up with error UI after | 196 // TODO(xiyuan): Add timeout and hook up with error UI after |
| 196 // http://crbug.com/471067. | 197 // http://crbug.com/471067. |
| 197 if (state != proximity_auth::ScreenlockState::AUTHENTICATED) | 198 if (state != proximity_auth::ScreenlockState::AUTHENTICATED) |
| 198 return; | 199 return; |
| 199 | 200 |
| 200 EasyUnlockService* service = | 201 EasyUnlockService* service = |
| 201 EasyUnlockService::Get(ProfileHelper::GetSigninProfile()); | 202 EasyUnlockService::Get(ProfileHelper::GetSigninProfile()); |
| 202 service->RemoveObserver(this); | 203 service->RemoveObserver(this); |
| 203 | 204 |
| 204 service->AttemptAuth( | 205 service->AttemptAuth( |
| 205 user_context_.GetAccountId().GetUserEmail(), | 206 user_context_.GetUserID(), |
| 206 base::Bind(&BootstrapUserContextInitializer::OnEasyUnlockAuthenticated, | 207 base::Bind(&BootstrapUserContextInitializer::OnEasyUnlockAuthenticated, |
| 207 weak_ptr_factory_.GetWeakPtr())); | 208 weak_ptr_factory_.GetWeakPtr())); |
| 208 } | 209 } |
| 209 | 210 |
| 210 } // namespace chromeos | 211 } // namespace chromeos |
| OLD | NEW |