summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorcmasone@chromium.org <cmasone@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-30 05:35:52 +0000
committercmasone@chromium.org <cmasone@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-30 05:35:52 +0000
commit604751e54dbb67963c7f1c4d3b56fa47cca2bce0 (patch)
tree1f1b04874706a3679d3d4eab6a660771c1a3691e /chrome
parentb29701b9022025d44532bed78e46b53e44e0048b (diff)
downloadchromium_src-604751e54dbb67963c7f1c4d3b56fa47cca2bce0.zip
chromium_src-604751e54dbb67963c7f1c4d3b56fa47cca2bce0.tar.gz
chromium_src-604751e54dbb67963c7f1c4d3b56fa47cca2bce0.tar.bz2
[cros] Screen locker should try to auth on the UI thread, not the FILE thread.
LoadLocalaccount can be called asynchronously in AuthenticateToUnlock. Doing a CheckOffline() will fail over to a localaccount check anyway, and it will appropriately ensure that the localaccount file has been loaded before trying to check. This means that AuthenticateToUnlock can be called on the UI thread, as it should be. BUG=chromium-os:8271 TEST=unit tests, browser tests, install on device and try to lock/unlock with real account and localaccount Review URL: http://codereview.chromium.org/4106008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64538 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/chromeos/login/google_authenticator.cc24
-rw-r--r--chrome/browser/chromeos/login/screen_locker.cc2
2 files changed, 11 insertions, 15 deletions
diff --git a/chrome/browser/chromeos/login/google_authenticator.cc b/chrome/browser/chromeos/login/google_authenticator.cc
index 3ab5640..a4daccd 100644
--- a/chrome/browser/chromeos/login/google_authenticator.cc
+++ b/chrome/browser/chromeos/login/google_authenticator.cc
@@ -145,23 +145,19 @@ bool GoogleAuthenticator::AuthenticateToLogin(
bool GoogleAuthenticator::AuthenticateToUnlock(const std::string& username,
const std::string& password) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
username_.assign(Canonicalize(username));
ascii_hash_.assign(HashPassword(password));
unlock_ = true;
- LoadLocalaccount(kLocalaccountFile);
- if (!localaccount_.empty() && localaccount_ == username) {
- VLOG(1) << "Unlocking localaccount";
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- NewRunnableMethod(this,
- &GoogleAuthenticator::OnLoginSuccess,
- GaiaAuthConsumer::ClientLoginResult(), false));
- } else {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- NewRunnableMethod(this, &GoogleAuthenticator::CheckOffline,
- LoginFailure(LoginFailure::UNLOCK_FAILED)));
- }
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
+ NewRunnableMethod(this,
+ &GoogleAuthenticator::LoadLocalaccount,
+ std::string(kLocalaccountFile)));
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ NewRunnableMethod(this, &GoogleAuthenticator::CheckOffline,
+ LoginFailure(LoginFailure::UNLOCK_FAILED)));
return true;
}
diff --git a/chrome/browser/chromeos/login/screen_locker.cc b/chrome/browser/chromeos/login/screen_locker.cc
index 19c2059..92bafc8 100644
--- a/chrome/browser/chromeos/login/screen_locker.cc
+++ b/chrome/browser/chromeos/login/screen_locker.cc
@@ -694,7 +694,7 @@ void ScreenLocker::Authenticate(const string16& password) {
screen_lock_view_->SetEnabled(false);
screen_lock_view_->SetSignoutEnabled(false);
BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
+ BrowserThread::UI, FROM_HERE,
NewRunnableMethod(authenticator_.get(),
&Authenticator::AuthenticateToUnlock,
user_.email(),