From 3fd47af32d6be8971445f4da8deba0fadae688d3 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Fri, 21 Sep 2012 19:55:27 -0700 Subject: Send USER_PRESENT for keyguard choice "None" This enables sending ACTION_USER_PRESENT when the user has selected "None" for their keyguard screen. When this happens, we delegate sending the event to onScreenTurnedOn(). Tested: - None -> sends broadcast in onSystemReady() the first time after boot and in onScreenTurnedOn() there after. - Slide -> sends broadcast only once when screen is dismissed - Pattern -> sends broadcast only once when screen is dismissed Fixes bug 7029707 Change-Id: I785c3255b15e2ee598a10d7d3580ba5c03dd0068 --- .../policy/impl/keyguard/KeyguardViewMediator.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java index 416a0bbe110d..212a6bb72f27 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java @@ -339,7 +339,7 @@ public class KeyguardViewMediator { @Override public void onDeviceProvisioned() { - mContext.sendBroadcast(mUserPresentIntent); + sendUserPresentBroadcast(); } @Override @@ -511,6 +511,9 @@ public class KeyguardViewMediator { mUpdateMonitor.registerCallback(mUpdateCallback); doKeyguardLocked(); } + // Most services aren't available until the system reaches the ready state, so we + // send it here when the device first boots. + maybeSendUserPresentBroadcast(); } /** @@ -606,6 +609,17 @@ public class KeyguardViewMediator { notifyScreenOnLocked(showListener); } } + maybeSendUserPresentBroadcast(); + } + + private void maybeSendUserPresentBroadcast() { + if (mSystemReady && mLockPatternUtils.isLockScreenDisabled() + && mUserManager.getUsers(true).size() == 1) { + // Lock screen is disabled because the user has set the preference to "None". + // In this case, send out ACTION_USER_PRESENT here instead of in + // handleKeyguardDone() + sendUserPresentBroadcast(); + } } /** @@ -1093,6 +1107,10 @@ public class KeyguardViewMediator { } mWakeLock.release(); + sendUserPresentBroadcast(); + } + + private void sendUserPresentBroadcast() { if (!(mContext instanceof Activity)) { final UserHandle currentUser = new UserHandle(mLockPatternUtils.getCurrentUser()); mContext.sendBroadcastAsUser(mUserPresentIntent, currentUser); -- cgit v1.2.3-59-g8ed1b