Merge "Try to dismiss Keyguard bypassing bouncer only for active users" into nyc-dev
This commit is contained in:
@@ -16,7 +16,10 @@
|
||||
|
||||
package com.android.systemui.statusbar.phone;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.content.Context;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Slog;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -42,6 +45,8 @@ import static com.android.keyguard.KeyguardSecurityModel.SecurityMode;
|
||||
*/
|
||||
public class KeyguardBouncer {
|
||||
|
||||
final static private String TAG = "KeyguardBouncer";
|
||||
|
||||
protected Context mContext;
|
||||
protected ViewMediatorCallback mCallback;
|
||||
protected LockPatternUtils mLockPatternUtils;
|
||||
@@ -84,14 +89,25 @@ public class KeyguardBouncer {
|
||||
return;
|
||||
}
|
||||
|
||||
// Try to dismiss the Keyguard. If no security pattern is set, this will dismiss the whole
|
||||
// Keyguard. If we need to authenticate, show the bouncer.
|
||||
if (!mKeyguardView.dismiss()) {
|
||||
mShowingSoon = true;
|
||||
|
||||
// Split up the work over multiple frames.
|
||||
DejankUtils.postAfterTraversal(mShowRunnable);
|
||||
final int activeUserId = ActivityManager.getCurrentUser();
|
||||
final int keyguardUserId = KeyguardUpdateMonitor.getCurrentUser();
|
||||
final boolean allowDismissKeyguard = activeUserId != UserHandle.USER_SYSTEM
|
||||
&& activeUserId == keyguardUserId;
|
||||
// If allowed, try to dismiss the Keyguard. If no security auth (password/pin/pattern) is
|
||||
// set, this will dismiss the whole Keyguard. Otherwise, show the bouncer.
|
||||
if (allowDismissKeyguard && mKeyguardView.dismiss()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// This condition may indicate an error on Android, so log it.
|
||||
if (!allowDismissKeyguard) {
|
||||
Slog.w(TAG, "User can't dismiss keyguard: " + activeUserId + " != " + keyguardUserId);
|
||||
}
|
||||
|
||||
mShowingSoon = true;
|
||||
|
||||
// Split up the work over multiple frames.
|
||||
DejankUtils.postAfterTraversal(mShowRunnable);
|
||||
}
|
||||
|
||||
private final Runnable mShowRunnable = new Runnable() {
|
||||
|
||||
Reference in New Issue
Block a user