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
This commit is contained in:
Jim Miller
2012-09-21 19:55:27 -07:00
parent 6eeff850b2
commit 3fd47af32d

View File

@@ -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);