Index: chrome/browser/chromeos/login/parallel_authenticator.cc |
diff --git a/chrome/browser/chromeos/login/parallel_authenticator.cc b/chrome/browser/chromeos/login/parallel_authenticator.cc |
index 29ffe01df4da276ab7900e54bca1ab2e094bd509..82ac885b6e2b3520d8802abbf468463380f09b1c 100644 |
--- a/chrome/browser/chromeos/login/parallel_authenticator.cc |
+++ b/chrome/browser/chromeos/login/parallel_authenticator.cc |
@@ -110,6 +110,23 @@ void MountGuest(AuthAttemptState* attempt, |
resolver)); |
} |
+// Calls cryptohome's mount method for guest and also get the user hash from |
+// cryptohome. |
+void MountGuestAndGetHash(AuthAttemptState* attempt, |
+ scoped_refptr<ParallelAuthenticator> resolver) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ cryptohome::AsyncMethodCaller::GetInstance()->AsyncMountGuest( |
bartfab (slow)
2014/03/27 14:13:29
The AuthAttemptState constructor sets username_has
rkc
2014/03/27 21:43:10
Done.
|
+ base::Bind(&TriggerResolveWithLoginTimeMarker, |
+ "CryptohomeMount-End", |
+ attempt, |
+ resolver)); |
+ cryptohome::AsyncMethodCaller::GetInstance()->AsyncGetSanitizedUsername( |
+ attempt->user_context.username, |
+ base::Bind(&TriggerResolveHash, |
+ attempt, |
+ resolver)); |
+} |
+ |
// Calls cryptohome's MountPublic method |
void MountPublic(AuthAttemptState* attempt, |
scoped_refptr<ParallelAuthenticator> resolver, |
@@ -346,11 +363,12 @@ void ParallelAuthenticator::LoginAsPublicAccount(const std::string& username) { |
} |
void ParallelAuthenticator::LoginAsKioskAccount( |
- const std::string& app_user_id, bool force_ephemeral) { |
+ const std::string& app_user_id, |
+ bool use_guest_mount) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- std::string user_id = |
- force_ephemeral ? UserManager::kGuestUserName : app_user_id; |
+ const std::string user_id = |
+ use_guest_mount ? UserManager::kGuestUserName : app_user_id; |
current_state_.reset(new AuthAttemptState( |
UserContext(user_id, |
std::string(), // password |
@@ -361,14 +379,14 @@ void ParallelAuthenticator::LoginAsKioskAccount( |
false)); |
remove_user_data_on_failure_ = true; |
- if (!force_ephemeral) { |
+ if (!use_guest_mount) { |
MountPublic(current_state_.get(), |
scoped_refptr<ParallelAuthenticator>(this), |
cryptohome::CREATE_IF_MISSING); |
} else { |
ephemeral_mount_attempted_ = true; |
- MountGuest(current_state_.get(), |
- scoped_refptr<ParallelAuthenticator>(this)); |
+ MountGuestAndGetHash(current_state_.get(), |
+ scoped_refptr<ParallelAuthenticator>(this)); |
} |
} |