diff options
author | Jim Miller <jaggies@google.com> | 2010-05-06 16:31:34 -0700 |
---|---|---|
committer | Jim Miller <jaggies@google.com> | 2010-05-06 16:31:34 -0700 |
commit | 1d587e3d5d91fab1cf3048bbeeafa86445cbd08c (patch) | |
tree | 85fb56a18bd34550932a7bd260ea38f9d8f8617f /policy | |
parent | ebad36db56017000ce8b1eb813537d90248e3ad0 (diff) | |
download | frameworks_base-1d587e3d5d91fab1cf3048bbeeafa86445cbd08c.zip frameworks_base-1d587e3d5d91fab1cf3048bbeeafa86445cbd08c.tar.gz frameworks_base-1d587e3d5d91fab1cf3048bbeeafa86445cbd08c.tar.bz2 |
Manual integration of I32a7b5 from froyo
Fix 2662816: Move UI update from async callback to ui thread.
This fixes a bug where the view hierarchy in AccountUnlockScreen was being
modified by the async callback thread from AccountManager.
Change-Id: I5f1b4e04a7e4af68a5705545765f294cdbd0f17b
Diffstat (limited to 'policy')
-rw-r--r-- | policy/com/android/internal/policy/impl/AccountUnlockScreen.java | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/policy/com/android/internal/policy/impl/AccountUnlockScreen.java b/policy/com/android/internal/policy/impl/AccountUnlockScreen.java index cb88916..840c5e1 100644 --- a/policy/com/android/internal/policy/impl/AccountUnlockScreen.java +++ b/policy/com/android/internal/policy/impl/AccountUnlockScreen.java @@ -174,28 +174,33 @@ public class AccountUnlockScreen extends RelativeLayout implements KeyguardScree } } - private void onCheckPasswordResult(boolean success) { - if (success) { - // clear out forgotten password - mLockPatternUtils.setPermanentlyLocked(false); - mLockPatternUtils.setLockPatternEnabled(false); - mLockPatternUtils.saveLockPattern(null); - - // launch the 'choose lock pattern' activity so - // the user can pick a new one if they want to - Intent intent = new Intent(); - intent.setClassName(LOCK_PATTERN_PACKAGE, LOCK_PATTERN_CLASS); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivity(intent); - mCallback.reportSuccessfulUnlockAttempt(); - - // close the keyguard - mCallback.keyguardDone(true); - } else { - mInstructions.setText(R.string.lockscreen_glogin_invalid_input); - mPassword.setText(""); - mCallback.reportFailedUnlockAttempt(); - } + private void postOnCheckPasswordResult(final boolean success) { + // ensure this runs on UI thread + mLogin.post(new Runnable() { + public void run() { + if (success) { + // clear out forgotten password + mLockPatternUtils.setPermanentlyLocked(false); + mLockPatternUtils.setLockPatternEnabled(false); + mLockPatternUtils.saveLockPattern(null); + + // launch the 'choose lock pattern' activity so + // the user can pick a new one if they want to + Intent intent = new Intent(); + intent.setClassName(LOCK_PATTERN_PACKAGE, LOCK_PATTERN_CLASS); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + mCallback.reportSuccessfulUnlockAttempt(); + + // close the keyguard + mCallback.keyguardDone(true); + } else { + mInstructions.setText(R.string.lockscreen_glogin_invalid_input); + mPassword.setText(""); + mCallback.reportFailedUnlockAttempt(); + } + } + }); } @Override @@ -270,7 +275,7 @@ public class AccountUnlockScreen extends RelativeLayout implements KeyguardScree final String password = mPassword.getText().toString(); Account account = findIntendedAccount(login); if (account == null) { - onCheckPasswordResult(false); + postOnCheckPasswordResult(false); return; } getProgressDialog().show(); @@ -283,18 +288,13 @@ public class AccountUnlockScreen extends RelativeLayout implements KeyguardScree mCallback.pokeWakelock(AWAKE_POKE_MILLIS); final Bundle result = future.getResult(); final boolean verified = result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT); - // ensure on UI thread - mLogin.post(new Runnable() { - public void run() { - onCheckPasswordResult(verified); - } - }); + postOnCheckPasswordResult(verified); } catch (OperationCanceledException e) { - onCheckPasswordResult(false); + postOnCheckPasswordResult(false); } catch (IOException e) { - onCheckPasswordResult(false); + postOnCheckPasswordResult(false); } catch (AuthenticatorException e) { - onCheckPasswordResult(false); + postOnCheckPasswordResult(false); } finally { mLogin.post(new Runnable() { public void run() { |