summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adrian Roos <roosa@google.com> 2016-07-12 15:31:55 -0700
committer Adrian Roos <roosa@google.com> 2016-07-12 15:32:04 -0700
commit7a3bf7c46e54cf226f86e3eeedb100a159f08d00 (patch)
tree1f37ab12340495be546bc30ff8a12e7f016030d0
parenta8b4e7320a2b6f6f6e234b5b195441e0fb5e3a47 (diff)
Allow LockPatternUtils usage on non-looper threads
Fixes an issue where LPU could no longer be used on a non-looper thread even though the looper is only used for a certain callback. Now only using that callback mechanism is fatal on a non-looper thread. Change-Id: I2d766bd6c913e345ed6a3500b486263c8bc12b07 Fixes: 30076804
-rw-r--r--core/java/com/android/internal/widget/LockPatternUtils.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index eff116b7570c..0059d4df79f7 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -149,7 +149,7 @@ public class LockPatternUtils {
private DevicePolicyManager mDevicePolicyManager;
private ILockSettings mLockSettingsService;
private UserManager mUserManager;
- private final Handler mHandler = new Handler();
+ private final Handler mHandler;
/**
* Use {@link TrustManager#isTrustUsuallyManaged(int)}.
@@ -231,6 +231,9 @@ public class LockPatternUtils {
public LockPatternUtils(Context context) {
mContext = context;
mContentResolver = context.getContentResolver();
+
+ Looper looper = Looper.myLooper();
+ mHandler = looper != null ? new Handler(looper) : null;
}
private ILockSettings getLockSettings() {
@@ -1506,6 +1509,10 @@ public class LockPatternUtils {
if (callback == null) {
return null;
} else {
+ if (mHandler == null) {
+ throw new IllegalStateException("Must construct LockPatternUtils on a looper thread"
+ + " to use progress callbacks.");
+ }
return new ICheckCredentialProgressCallback.Stub() {
@Override