OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/parallel_authenticator.h" | 5 #include "chrome/browser/chromeos/login/parallel_authenticator.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 !CommandLine::ForCurrentProcess()->HasSwitch( | 98 !CommandLine::ForCurrentProcess()->HasSwitch( |
99 switches::kSkipOAuthLogin)) { | 99 switches::kSkipOAuthLogin)) { |
100 CHECK(chromeos::CrosLibrary::Get()->EnsureLoaded()); | 100 CHECK(chromeos::CrosLibrary::Get()->EnsureLoaded()); |
101 // If not already owned, this is a no-op. If it is, this loads the owner's | 101 // If not already owned, this is a no-op. If it is, this loads the owner's |
102 // public key off of disk. | 102 // public key off of disk. |
103 OwnershipService::GetSharedInstance()->StartLoadOwnerKeyAttempt(); | 103 OwnershipService::GetSharedInstance()->StartLoadOwnerKeyAttempt(); |
104 } | 104 } |
105 | 105 |
106 ParallelAuthenticator::~ParallelAuthenticator() {} | 106 ParallelAuthenticator::~ParallelAuthenticator() {} |
107 | 107 |
108 bool ParallelAuthenticator::AuthenticateToLogin( | 108 void ParallelAuthenticator::AuthenticateToLogin( |
109 Profile* profile, | 109 Profile* profile, |
110 const std::string& username, | 110 const std::string& username, |
111 const std::string& password, | 111 const std::string& password, |
112 const std::string& login_token, | 112 const std::string& login_token, |
113 const std::string& login_captcha) { | 113 const std::string& login_captcha) { |
114 std::string canonicalized = Authenticator::Canonicalize(username); | 114 std::string canonicalized = Authenticator::Canonicalize(username); |
115 authentication_profile_ = profile; | 115 authentication_profile_ = profile; |
116 current_state_.reset( | 116 current_state_.reset( |
117 new AuthAttemptState(canonicalized, | 117 new AuthAttemptState(canonicalized, |
118 password, | 118 password, |
(...skipping 17 matching lines...) Expand all Loading... |
136 current_state_.get(), | 136 current_state_.get(), |
137 this); | 137 this); |
138 current_online_->Initiate(profile); | 138 current_online_->Initiate(profile); |
139 } | 139 } |
140 | 140 |
141 BrowserThread::PostTask( | 141 BrowserThread::PostTask( |
142 BrowserThread::FILE, FROM_HERE, | 142 BrowserThread::FILE, FROM_HERE, |
143 NewRunnableMethod(this, | 143 NewRunnableMethod(this, |
144 &ParallelAuthenticator::LoadLocalaccount, | 144 &ParallelAuthenticator::LoadLocalaccount, |
145 std::string(kLocalaccountFile))); | 145 std::string(kLocalaccountFile))); |
146 return true; | |
147 } | 146 } |
148 | 147 |
149 bool ParallelAuthenticator::CompleteLogin(Profile* profile, | 148 void ParallelAuthenticator::CompleteLogin(Profile* profile, |
150 const std::string& username, | 149 const std::string& username, |
151 const std::string& password) { | 150 const std::string& password) { |
152 std::string canonicalized = Authenticator::Canonicalize(username); | 151 std::string canonicalized = Authenticator::Canonicalize(username); |
153 authentication_profile_ = profile; | 152 authentication_profile_ = profile; |
154 current_state_.reset( | 153 current_state_.reset( |
155 new AuthAttemptState(canonicalized, | 154 new AuthAttemptState(canonicalized, |
156 password, | 155 password, |
157 HashPassword(password), | 156 HashPassword(password), |
158 !UserManager::Get()->IsKnownUser(canonicalized))); | 157 !UserManager::Get()->IsKnownUser(canonicalized))); |
159 mounter_ = CryptohomeOp::CreateMountAttempt(current_state_.get(), | 158 mounter_ = CryptohomeOp::CreateMountAttempt(current_state_.get(), |
(...skipping 21 matching lines...) Expand all Loading... |
181 BrowserThread::IO, FROM_HERE, | 180 BrowserThread::IO, FROM_HERE, |
182 NewRunnableMethod(this, | 181 NewRunnableMethod(this, |
183 &ParallelAuthenticator::ResolveLoginCompletionStatus)); | 182 &ParallelAuthenticator::ResolveLoginCompletionStatus)); |
184 } | 183 } |
185 | 184 |
186 BrowserThread::PostTask( | 185 BrowserThread::PostTask( |
187 BrowserThread::FILE, FROM_HERE, | 186 BrowserThread::FILE, FROM_HERE, |
188 NewRunnableMethod(this, | 187 NewRunnableMethod(this, |
189 &ParallelAuthenticator::LoadLocalaccount, | 188 &ParallelAuthenticator::LoadLocalaccount, |
190 std::string(kLocalaccountFile))); | 189 std::string(kLocalaccountFile))); |
191 return true; | |
192 } | 190 } |
193 | 191 |
194 bool ParallelAuthenticator::AuthenticateToUnlock(const std::string& username, | 192 void ParallelAuthenticator::AuthenticateToUnlock(const std::string& username, |
195 const std::string& password) { | 193 const std::string& password) { |
196 current_state_.reset( | 194 current_state_.reset( |
197 new AuthAttemptState(Authenticator::Canonicalize(username), | 195 new AuthAttemptState(Authenticator::Canonicalize(username), |
198 HashPassword(password))); | 196 HashPassword(password))); |
199 BrowserThread::PostTask( | 197 BrowserThread::PostTask( |
200 BrowserThread::FILE, FROM_HERE, | 198 BrowserThread::FILE, FROM_HERE, |
201 NewRunnableMethod(this, | 199 NewRunnableMethod(this, |
202 &ParallelAuthenticator::LoadLocalaccount, | 200 &ParallelAuthenticator::LoadLocalaccount, |
203 std::string(kLocalaccountFile))); | 201 std::string(kLocalaccountFile))); |
204 key_checker_ = CryptohomeOp::CreateCheckKeyAttempt(current_state_.get(), | 202 key_checker_ = CryptohomeOp::CreateCheckKeyAttempt(current_state_.get(), |
205 this); | 203 this); |
206 // Sadly, this MUST be on the UI thread due to sending DBus traffic :-/ | 204 // Sadly, this MUST be on the UI thread due to sending DBus traffic :-/ |
207 BrowserThread::PostTask( | 205 BrowserThread::PostTask( |
208 BrowserThread::UI, FROM_HERE, | 206 BrowserThread::UI, FROM_HERE, |
209 NewRunnableMethod(key_checker_.get(), &CryptohomeOp::Initiate)); | 207 NewRunnableMethod(key_checker_.get(), &CryptohomeOp::Initiate)); |
210 return true; | |
211 } | 208 } |
212 | 209 |
213 void ParallelAuthenticator::LoginOffTheRecord() { | 210 void ParallelAuthenticator::LoginOffTheRecord() { |
214 current_state_.reset(new AuthAttemptState("", "", "", "", "", false)); | 211 current_state_.reset(new AuthAttemptState("", "", "", "", "", false)); |
215 guest_mounter_ = | 212 guest_mounter_ = |
216 CryptohomeOp::CreateMountGuestAttempt(current_state_.get(), this); | 213 CryptohomeOp::CreateMountGuestAttempt(current_state_.get(), this); |
217 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 214 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
218 guest_mounter_->Initiate(); | 215 guest_mounter_->Initiate(); |
219 } | 216 } |
220 | 217 |
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 } | 803 } |
807 | 804 |
808 void ParallelAuthenticator::ResolveLoginCompletionStatus() { | 805 void ParallelAuthenticator::ResolveLoginCompletionStatus() { |
809 // Shortcut online state resolution process. | 806 // Shortcut online state resolution process. |
810 current_state_->RecordOnlineLoginStatus(GaiaAuthConsumer::ClientLoginResult(), | 807 current_state_->RecordOnlineLoginStatus(GaiaAuthConsumer::ClientLoginResult(), |
811 LoginFailure::None()); | 808 LoginFailure::None()); |
812 Resolve(); | 809 Resolve(); |
813 } | 810 } |
814 | 811 |
815 } // namespace chromeos | 812 } // namespace chromeos |
OLD | NEW |