Merge "StrongAuthTracker: Don\'t rely on USER_PRESENT" into nyc-dev

am: c142a8c

* commit 'c142a8c43fa7d1b6c9d797e044060755d9ecfcd6':
  StrongAuthTracker: Don't rely on USER_PRESENT

Change-Id: Id81115f8311e797f0b7d8a435226ea5862a9550a
This commit is contained in:
Adrian Roos
2016-04-14 00:08:08 +00:00
committed by android-build-merger
5 changed files with 18 additions and 5 deletions

View File

@@ -43,4 +43,5 @@ interface ILockSettings {
void unregisterStrongAuthTracker(in IStrongAuthTracker tracker); void unregisterStrongAuthTracker(in IStrongAuthTracker tracker);
void requireStrongAuth(int strongAuthReason, int userId); void requireStrongAuth(int strongAuthReason, int userId);
void systemReady(); void systemReady();
void userPresent(int userId);
} }

View File

@@ -172,6 +172,14 @@ public class LockPatternUtils {
} }
} }
public void userPresent(int userId) {
try {
getLockSettings().userPresent(userId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
public static final class RequestThrottledException extends Exception { public static final class RequestThrottledException extends Exception {
private int mTimeoutMs; private int mTimeoutMs;
public RequestThrottledException(int timeoutMs) { public RequestThrottledException(int timeoutMs) {

View File

@@ -1477,12 +1477,14 @@ public class KeyguardViewMediator extends SystemUI {
private void sendUserPresentBroadcast() { private void sendUserPresentBroadcast() {
synchronized (this) { synchronized (this) {
if (mBootCompleted) { if (mBootCompleted) {
final UserHandle currentUser = new UserHandle(KeyguardUpdateMonitor.getCurrentUser()); int currentUserId = KeyguardUpdateMonitor.getCurrentUser();
final UserHandle currentUser = new UserHandle(currentUserId);
final UserManager um = (UserManager) mContext.getSystemService( final UserManager um = (UserManager) mContext.getSystemService(
Context.USER_SERVICE); Context.USER_SERVICE);
for (int profileId : um.getProfileIdsWithDisabled(currentUser.getIdentifier())) { for (int profileId : um.getProfileIdsWithDisabled(currentUser.getIdentifier())) {
mContext.sendBroadcastAsUser(USER_PRESENT_INTENT, UserHandle.of(profileId)); mContext.sendBroadcastAsUser(USER_PRESENT_INTENT, UserHandle.of(profileId));
} }
getLockPatternUtils().userPresent(currentUserId);
} else { } else {
mBootSendUserPresent = true; mBootSendUserPresent = true;
} }

View File

@@ -229,7 +229,6 @@ public class LockSettingsService extends ILockSettings.Stub {
filter.addAction(Intent.ACTION_USER_ADDED); filter.addAction(Intent.ACTION_USER_ADDED);
filter.addAction(Intent.ACTION_USER_STARTING); filter.addAction(Intent.ACTION_USER_STARTING);
filter.addAction(Intent.ACTION_USER_REMOVED); filter.addAction(Intent.ACTION_USER_REMOVED);
filter.addAction(Intent.ACTION_USER_PRESENT);
mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null); mContext.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
mStorage = new LockSettingsStorage(context, new LockSettingsStorage.Callback() { mStorage = new LockSettingsStorage(context, new LockSettingsStorage.Callback() {
@@ -369,8 +368,6 @@ public class LockSettingsService extends ILockSettings.Stub {
} else if (Intent.ACTION_USER_STARTING.equals(intent.getAction())) { } else if (Intent.ACTION_USER_STARTING.equals(intent.getAction())) {
final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0); final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
mStorage.prefetchUser(userHandle); mStorage.prefetchUser(userHandle);
} else if (Intent.ACTION_USER_PRESENT.equals(intent.getAction())) {
mStrongAuth.reportUnlock(getSendingUserId());
} else if (Intent.ACTION_USER_REMOVED.equals(intent.getAction())) { } else if (Intent.ACTION_USER_REMOVED.equals(intent.getAction())) {
final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0); final int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
if (userHandle > 0) { if (userHandle > 0) {
@@ -1347,6 +1344,12 @@ public class LockSettingsService extends ILockSettings.Stub {
mStrongAuth.requireStrongAuth(strongAuthReason, userId); mStrongAuth.requireStrongAuth(strongAuthReason, userId);
} }
@Override
public void userPresent(int userId) {
checkWritePermission(userId);
mStrongAuth.reportUnlock(userId);
}
private static final String[] VALID_SETTINGS = new String[] { private static final String[] VALID_SETTINGS = new String[] {
LockPatternUtils.LOCKOUT_PERMANENT_KEY, LockPatternUtils.LOCKOUT_PERMANENT_KEY,
LockPatternUtils.LOCKOUT_ATTEMPT_DEADLINE, LockPatternUtils.LOCKOUT_ATTEMPT_DEADLINE,

View File

@@ -974,7 +974,6 @@ public class TrustManagerService extends SystemService {
public void register(Context context) { public void register(Context context) {
IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter();
filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED); filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
filter.addAction(Intent.ACTION_USER_PRESENT);
filter.addAction(Intent.ACTION_USER_ADDED); filter.addAction(Intent.ACTION_USER_ADDED);
filter.addAction(Intent.ACTION_USER_REMOVED); filter.addAction(Intent.ACTION_USER_REMOVED);
context.registerReceiverAsUser(this, context.registerReceiverAsUser(this,