summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2012-04-10 15:13:39 -0700
committerAmith Yamasani <yamasani@google.com>2012-04-10 15:13:39 -0700
commitf882f1ad4edd790483924e7bf485fd7c7240d110 (patch)
treeccaf4e7c6197d220e3f65db7f2a8f0d8f28ae74c
parentd3ce6f50c114f58a3f50e44764e9b315ac41f637 (diff)
downloadframeworks_base-f882f1ad4edd790483924e7bf485fd7c7240d110.zip
frameworks_base-f882f1ad4edd790483924e7bf485fd7c7240d110.tar.gz
frameworks_base-f882f1ad4edd790483924e7bf485fd7c7240d110.tar.bz2
Bind to the correct face lock service.
When switching users, bind to the correct instance of FaceLock. Tried to get the facelock screen to show up when switching users, but it doesn't. Power off/on works, but not switching between users on the lockscreen. Maybe a timing issue? Or not calling some function to make the overlay visible? Change-Id: I9300971331c7f0ed93ae7da28170342629426b20
-rw-r--r--core/java/com/android/internal/widget/LockPatternUtils.java8
-rw-r--r--policy/src/com/android/internal/policy/impl/FaceUnlock.java3
-rw-r--r--policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java5
3 files changed, 14 insertions, 2 deletions
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index 4d308dd..f77e8f3 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -223,6 +223,14 @@ public class LockPatternUtils {
}
}
+ public int getCurrentUser() {
+ if (Process.myUid() == Process.SYSTEM_UID) {
+ return mCurrentUserId;
+ } else {
+ throw new SecurityException("Only the system process can get the current user");
+ }
+ }
+
public void removeUser(int userId) {
if (Process.myUid() == Process.SYSTEM_UID) {
try {
diff --git a/policy/src/com/android/internal/policy/impl/FaceUnlock.java b/policy/src/com/android/internal/policy/impl/FaceUnlock.java
index 985dcd3..31fbaaf 100644
--- a/policy/src/com/android/internal/policy/impl/FaceUnlock.java
+++ b/policy/src/com/android/internal/policy/impl/FaceUnlock.java
@@ -213,7 +213,8 @@ public class FaceUnlock implements Handler.Callback {
if (DEBUG) Log.d(TAG, "before bind to FaceLock service");
mContext.bindService(new Intent(IFaceLockInterface.class.getName()),
mConnection,
- Context.BIND_AUTO_CREATE);
+ Context.BIND_AUTO_CREATE,
+ mLockPatternUtils.getCurrentUser());
if (DEBUG) Log.d(TAG, "after bind to FaceLock service");
mBoundToService = true;
} else {
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
index 596040c..d42f96a 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java
@@ -703,6 +703,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase {
@Override
public void onUserChanged(int userId) {
+ mFaceUnlock.stopAndUnbind();
mLockPatternUtils.setCurrentUser(userId);
updateScreen(getInitialMode(), true);
}
@@ -817,7 +818,9 @@ public class LockPatternKeyguardView extends KeyguardViewBase {
if (force || mUnlockScreen == null || unlockMode != mUnlockScreenMode) {
boolean restartFaceLock = mFaceUnlock.stopIfRunning();
recreateUnlockScreen(unlockMode);
- if (restartFaceLock) mFaceUnlock.activateIfAble(mHasOverlay);
+ if (restartFaceLock || force) {
+ mFaceUnlock.activateIfAble(mHasOverlay);
+ }
}
}