Convert all Log.* messages in KeyguardUpdateMonitor to use LogBuffer
Create a new helper class for logging. Current messages being logged to Logcat won't be logged anymore, the LogBuffer logs can be accessed by a dumpsys. For debugging, LogBuffer can configured to echo to Logcat as well using the following command: ``` adb shell settings put global systemui/buffer/KeyguardUpdateMonitorLog <LogLevel> ``` Test: atest SystemUI passes Fixes: 239819049 Change-Id: I8f234f930d1aab92ae3535d8f850d26c2eab6729
This commit is contained in:
@@ -66,7 +66,6 @@ import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback;
|
|||||||
import android.hardware.fingerprint.FingerprintManager.AuthenticationResult;
|
import android.hardware.fingerprint.FingerprintManager.AuthenticationResult;
|
||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||||
import android.nfc.NfcAdapter;
|
import android.nfc.NfcAdapter;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.CancellationSignal;
|
import android.os.CancellationSignal;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IRemoteCallback;
|
import android.os.IRemoteCallback;
|
||||||
@@ -96,6 +95,7 @@ import com.android.internal.annotations.VisibleForTesting;
|
|||||||
import com.android.internal.jank.InteractionJankMonitor;
|
import com.android.internal.jank.InteractionJankMonitor;
|
||||||
import com.android.internal.util.LatencyTracker;
|
import com.android.internal.util.LatencyTracker;
|
||||||
import com.android.internal.widget.LockPatternUtils;
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
|
import com.android.keyguard.logging.KeyguardUpdateMonitorLogger;
|
||||||
import com.android.settingslib.WirelessUtils;
|
import com.android.settingslib.WirelessUtils;
|
||||||
import com.android.settingslib.fuelgauge.BatteryStatus;
|
import com.android.settingslib.fuelgauge.BatteryStatus;
|
||||||
import com.android.systemui.Dumpable;
|
import com.android.systemui.Dumpable;
|
||||||
@@ -141,12 +141,6 @@ import javax.inject.Inject;
|
|||||||
public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpable {
|
public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpable {
|
||||||
|
|
||||||
private static final String TAG = "KeyguardUpdateMonitor";
|
private static final String TAG = "KeyguardUpdateMonitor";
|
||||||
private static final boolean DEBUG = KeyguardConstants.DEBUG;
|
|
||||||
private static final boolean DEBUG_SIM_STATES = KeyguardConstants.DEBUG_SIM_STATES;
|
|
||||||
private static final boolean DEBUG_FACE = Build.IS_DEBUGGABLE;
|
|
||||||
private static final boolean DEBUG_FINGERPRINT = Build.IS_DEBUGGABLE;
|
|
||||||
private static final boolean DEBUG_ACTIVE_UNLOCK = Build.IS_DEBUGGABLE;
|
|
||||||
private static final boolean DEBUG_SPEW = false;
|
|
||||||
private static final int BIOMETRIC_LOCKOUT_RESET_DELAY_MS = 600;
|
private static final int BIOMETRIC_LOCKOUT_RESET_DELAY_MS = 600;
|
||||||
|
|
||||||
// Callback messages
|
// Callback messages
|
||||||
@@ -241,6 +235,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
|
private final KeyguardUpdateMonitorLogger mLogger;
|
||||||
private final boolean mIsPrimaryUser;
|
private final boolean mIsPrimaryUser;
|
||||||
private final AuthController mAuthController;
|
private final AuthController mAuthController;
|
||||||
private final StatusBarStateController mStatusBarStateController;
|
private final StatusBarStateController mStatusBarStateController;
|
||||||
@@ -337,17 +332,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
private static final int HAL_ERROR_RETRY_TIMEOUT = 500; // ms
|
private static final int HAL_ERROR_RETRY_TIMEOUT = 500; // ms
|
||||||
private static final int HAL_ERROR_RETRY_MAX = 20;
|
private static final int HAL_ERROR_RETRY_MAX = 20;
|
||||||
|
|
||||||
private final Runnable mFpCancelNotReceived = () -> {
|
private final Runnable mFpCancelNotReceived = this::onFingerprintCancelNotReceived;
|
||||||
Log.e(TAG, "Fp cancellation not received, transitioning to STOPPED");
|
|
||||||
mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
|
|
||||||
updateFingerprintListeningState(BIOMETRIC_ACTION_STOP);
|
|
||||||
};
|
|
||||||
|
|
||||||
private final Runnable mFaceCancelNotReceived = () -> {
|
private final Runnable mFaceCancelNotReceived = this::onFaceCancelNotReceived;
|
||||||
Log.e(TAG, "Face cancellation not received, transitioning to STOPPED");
|
|
||||||
mFaceRunningState = BIOMETRIC_STATE_STOPPED;
|
|
||||||
updateFaceListeningState(BIOMETRIC_ACTION_STOP);
|
|
||||||
};
|
|
||||||
|
|
||||||
private final Handler mHandler;
|
private final Handler mHandler;
|
||||||
|
|
||||||
@@ -470,17 +457,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
|
|
||||||
private void handleSimSubscriptionInfoChanged() {
|
private void handleSimSubscriptionInfoChanged() {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG_SIM_STATES) {
|
mLogger.v("onSubscriptionInfoChanged()");
|
||||||
Log.v(TAG, "onSubscriptionInfoChanged()");
|
List<SubscriptionInfo> sil = mSubscriptionManager
|
||||||
List<SubscriptionInfo> sil = mSubscriptionManager
|
.getCompleteActiveSubscriptionInfoList();
|
||||||
.getCompleteActiveSubscriptionInfoList();
|
if (sil != null) {
|
||||||
if (sil != null) {
|
for (SubscriptionInfo subInfo : sil) {
|
||||||
for (SubscriptionInfo subInfo : sil) {
|
mLogger.logSubInfo(subInfo);
|
||||||
Log.v(TAG, "SubInfo:" + subInfo);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Log.v(TAG, "onSubscriptionInfoChanged: list is null");
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
mLogger.v("onSubscriptionInfoChanged: list is null");
|
||||||
}
|
}
|
||||||
List<SubscriptionInfo> subscriptionInfos = getSubscriptionInfo(true /* forceReload */);
|
List<SubscriptionInfo> subscriptionInfos = getSubscriptionInfo(true /* forceReload */);
|
||||||
|
|
||||||
@@ -504,8 +489,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
Map.Entry<Integer, SimData> simData = iter.next();
|
Map.Entry<Integer, SimData> simData = iter.next();
|
||||||
if (!activeSubIds.contains(simData.getKey())) {
|
if (!activeSubIds.contains(simData.getKey())) {
|
||||||
Log.i(TAG, "Previously active sub id " + simData.getKey() + " is now invalid, "
|
mLogger.logInvalidSubId(simData.getKey());
|
||||||
+ "will remove");
|
|
||||||
iter.remove();
|
iter.remove();
|
||||||
|
|
||||||
SimData data = simData.getValue();
|
SimData data = simData.getValue();
|
||||||
@@ -690,7 +674,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
try {
|
try {
|
||||||
mDreamManager.awaken();
|
mDreamManager.awaken();
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.e(TAG, "Unable to awaken from dream");
|
mLogger.logException(e, "Unable to awaken from dream");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -774,15 +758,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
try {
|
try {
|
||||||
userId = ActivityManager.getService().getCurrentUser().id;
|
userId = ActivityManager.getService().getCurrentUser().id;
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.e(TAG, "Failed to get current user id: ", e);
|
mLogger.logException(e, "Failed to get current user id");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (userId != authUserId) {
|
if (userId != authUserId) {
|
||||||
Log.d(TAG, "Fingerprint authenticated for wrong user: " + authUserId);
|
mLogger.logFingerprintAuthForWrongUser(authUserId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isFingerprintDisabled(userId)) {
|
if (isFingerprintDisabled(userId)) {
|
||||||
Log.d(TAG, "Fingerprint disabled by DPM for userId: " + userId);
|
mLogger.logFingerprintDisabledForUser(userId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
onFingerprintAuthenticated(userId, isStrongBiometric);
|
onFingerprintAuthenticated(userId, isStrongBiometric);
|
||||||
@@ -805,8 +789,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
private Runnable mRetryFingerprintAuthentication = new Runnable() {
|
private Runnable mRetryFingerprintAuthentication = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Log.w(TAG,
|
mLogger.logRetryAfterFpHwUnavailable(mHardwareFingerprintUnavailableRetryCount);
|
||||||
"Retrying fingerprint attempt: " + mHardwareFingerprintUnavailableRetryCount);
|
|
||||||
if (mFpm.isHardwareDetected()) {
|
if (mFpm.isHardwareDetected()) {
|
||||||
updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE);
|
updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE);
|
||||||
} else if (mHardwareFingerprintUnavailableRetryCount < HAL_ERROR_RETRY_MAX) {
|
} else if (mHardwareFingerprintUnavailableRetryCount < HAL_ERROR_RETRY_MAX) {
|
||||||
@@ -816,6 +799,12 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private void onFingerprintCancelNotReceived() {
|
||||||
|
mLogger.e("Fp cancellation not received, transitioning to STOPPED");
|
||||||
|
mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
|
||||||
|
KeyguardUpdateMonitor.this.updateFingerprintListeningState(BIOMETRIC_ACTION_STOP);
|
||||||
|
}
|
||||||
|
|
||||||
private void handleFingerprintError(int msgId, String errString) {
|
private void handleFingerprintError(int msgId, String errString) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (mHandler.hasCallbacks(mFpCancelNotReceived)) {
|
if (mHandler.hasCallbacks(mFpCancelNotReceived)) {
|
||||||
@@ -843,7 +832,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
if (msgId == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT_PERMANENT) {
|
if (msgId == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT_PERMANENT) {
|
||||||
lockedOutStateChanged |= !mFingerprintLockedOutPermanent;
|
lockedOutStateChanged |= !mFingerprintLockedOutPermanent;
|
||||||
mFingerprintLockedOutPermanent = true;
|
mFingerprintLockedOutPermanent = true;
|
||||||
Log.d(TAG, "Fingerprint locked out - requiring strong auth");
|
mLogger.d("Fingerprint locked out - requiring strong auth");
|
||||||
mLockPatternUtils.requireStrongAuth(
|
mLockPatternUtils.requireStrongAuth(
|
||||||
STRONG_AUTH_REQUIRED_AFTER_LOCKOUT, getCurrentUser());
|
STRONG_AUTH_REQUIRED_AFTER_LOCKOUT, getCurrentUser());
|
||||||
}
|
}
|
||||||
@@ -871,7 +860,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handleFingerprintLockoutReset(@LockoutMode int mode) {
|
private void handleFingerprintLockoutReset(@LockoutMode int mode) {
|
||||||
Log.d(TAG, "handleFingerprintLockoutReset: " + mode);
|
mLogger.logFingerprintLockoutReset(mode);
|
||||||
final boolean wasLockout = mFingerprintLockedOut;
|
final boolean wasLockout = mFingerprintLockedOut;
|
||||||
final boolean wasLockoutPermanent = mFingerprintLockedOutPermanent;
|
final boolean wasLockoutPermanent = mFingerprintLockedOutPermanent;
|
||||||
mFingerprintLockedOut = (mode == BIOMETRIC_LOCKOUT_TIMED)
|
mFingerprintLockedOut = (mode == BIOMETRIC_LOCKOUT_TIMED)
|
||||||
@@ -902,7 +891,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
boolean wasRunning = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING;
|
boolean wasRunning = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING;
|
||||||
boolean isRunning = fingerprintRunningState == BIOMETRIC_STATE_RUNNING;
|
boolean isRunning = fingerprintRunningState == BIOMETRIC_STATE_RUNNING;
|
||||||
mFingerprintRunningState = fingerprintRunningState;
|
mFingerprintRunningState = fingerprintRunningState;
|
||||||
Log.d(TAG, "fingerprintRunningState: " + mFingerprintRunningState);
|
mLogger.logFingerprintRunningState(mFingerprintRunningState);
|
||||||
// Clients of KeyguardUpdateMonitor don't care about the internal state about the
|
// Clients of KeyguardUpdateMonitor don't care about the internal state about the
|
||||||
// asynchronousness of the cancel cycle. So only notify them if the actually running state
|
// asynchronousness of the cancel cycle. So only notify them if the actually running state
|
||||||
// has changed.
|
// has changed.
|
||||||
@@ -969,7 +958,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
|
|
||||||
private void handleFaceAcquired(int acquireInfo) {
|
private void handleFaceAcquired(int acquireInfo) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG_FACE) Log.d(TAG, "Face acquired acquireInfo=" + acquireInfo);
|
mLogger.logFaceAcquired(acquireInfo);
|
||||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||||
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
||||||
if (cb != null) {
|
if (cb != null) {
|
||||||
@@ -982,25 +971,25 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
Trace.beginSection("KeyGuardUpdateMonitor#handlerFaceAuthenticated");
|
Trace.beginSection("KeyGuardUpdateMonitor#handlerFaceAuthenticated");
|
||||||
try {
|
try {
|
||||||
if (mGoingToSleep) {
|
if (mGoingToSleep) {
|
||||||
Log.d(TAG, "Aborted successful auth because device is going to sleep.");
|
mLogger.d("Aborted successful auth because device is going to sleep.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final int userId;
|
final int userId;
|
||||||
try {
|
try {
|
||||||
userId = ActivityManager.getService().getCurrentUser().id;
|
userId = ActivityManager.getService().getCurrentUser().id;
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.e(TAG, "Failed to get current user id: ", e);
|
mLogger.logException(e, "Failed to get current user id");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (userId != authUserId) {
|
if (userId != authUserId) {
|
||||||
Log.d(TAG, "Face authenticated for wrong user: " + authUserId);
|
mLogger.logFaceAuthForWrongUser(authUserId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isFaceDisabled(userId)) {
|
if (isFaceDisabled(userId)) {
|
||||||
Log.d(TAG, "Face authentication disabled by DPM for userId: " + userId);
|
mLogger.logFaceAuthDisabledForUser(userId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (DEBUG_FACE) Log.d(TAG, "Face auth succeeded for user " + userId);
|
mLogger.logFaceAuthSuccess(userId);
|
||||||
onFaceAuthenticated(userId, isStrongBiometric);
|
onFaceAuthenticated(userId, isStrongBiometric);
|
||||||
} finally {
|
} finally {
|
||||||
setFaceRunningState(BIOMETRIC_STATE_STOPPED);
|
setFaceRunningState(BIOMETRIC_STATE_STOPPED);
|
||||||
@@ -1010,7 +999,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
|
|
||||||
private void handleFaceHelp(int msgId, String helpString) {
|
private void handleFaceHelp(int msgId, String helpString) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG_FACE) Log.d(TAG, "Face help received: " + helpString);
|
mLogger.logFaceAuthHelpMsg(msgId, helpString);
|
||||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||||
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
||||||
if (cb != null) {
|
if (cb != null) {
|
||||||
@@ -1022,15 +1011,21 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
private Runnable mRetryFaceAuthentication = new Runnable() {
|
private Runnable mRetryFaceAuthentication = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Log.w(TAG, "Retrying face after HW unavailable, attempt " +
|
mLogger.logRetryingAfterFaceHwUnavailable(mHardwareFaceUnavailableRetryCount);
|
||||||
mHardwareFaceUnavailableRetryCount);
|
|
||||||
updateFaceListeningState(BIOMETRIC_ACTION_UPDATE);
|
updateFaceListeningState(BIOMETRIC_ACTION_UPDATE);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private void handleFaceError(int msgId, String errString) {
|
private void onFaceCancelNotReceived() {
|
||||||
|
mLogger.e("Face cancellation not received, transitioning to STOPPED");
|
||||||
|
mFaceRunningState = BIOMETRIC_STATE_STOPPED;
|
||||||
|
KeyguardUpdateMonitor.this.updateFaceListeningState(BIOMETRIC_ACTION_STOP);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleFaceError(int msgId, final String originalErrMsg) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG_FACE) Log.d(TAG, "Face error received: " + errString + " msgId=" + msgId);
|
String errString = originalErrMsg;
|
||||||
|
mLogger.logFaceAuthError(msgId, originalErrMsg);
|
||||||
if (mHandler.hasCallbacks(mFaceCancelNotReceived)) {
|
if (mHandler.hasCallbacks(mFaceCancelNotReceived)) {
|
||||||
mHandler.removeCallbacks(mFaceCancelNotReceived);
|
mHandler.removeCallbacks(mFaceCancelNotReceived);
|
||||||
}
|
}
|
||||||
@@ -1087,7 +1082,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handleFaceLockoutReset(@LockoutMode int mode) {
|
private void handleFaceLockoutReset(@LockoutMode int mode) {
|
||||||
Log.d(TAG, "handleFaceLockoutReset: " + mode);
|
mLogger.logFaceLockoutReset(mode);
|
||||||
final boolean wasLockoutPermanent = mFaceLockedOutPermanent;
|
final boolean wasLockoutPermanent = mFaceLockedOutPermanent;
|
||||||
mFaceLockedOutPermanent = (mode == BIOMETRIC_LOCKOUT_PERMANENT);
|
mFaceLockedOutPermanent = (mode == BIOMETRIC_LOCKOUT_PERMANENT);
|
||||||
final boolean changed = (mFaceLockedOutPermanent != wasLockoutPermanent);
|
final boolean changed = (mFaceLockedOutPermanent != wasLockoutPermanent);
|
||||||
@@ -1105,7 +1100,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
boolean wasRunning = mFaceRunningState == BIOMETRIC_STATE_RUNNING;
|
boolean wasRunning = mFaceRunningState == BIOMETRIC_STATE_RUNNING;
|
||||||
boolean isRunning = faceRunningState == BIOMETRIC_STATE_RUNNING;
|
boolean isRunning = faceRunningState == BIOMETRIC_STATE_RUNNING;
|
||||||
mFaceRunningState = faceRunningState;
|
mFaceRunningState = faceRunningState;
|
||||||
Log.d(TAG, "faceRunningState: " + mFaceRunningState);
|
mLogger.logFaceRunningState(mFaceRunningState);
|
||||||
// Clients of KeyguardUpdateMonitor don't care about the internal state or about the
|
// Clients of KeyguardUpdateMonitor don't care about the internal state or about the
|
||||||
// asynchronousness of the cancel cycle. So only notify them if the actually running state
|
// asynchronousness of the cancel cycle. So only notify them if the actually running state
|
||||||
// has changed.
|
// has changed.
|
||||||
@@ -1221,8 +1216,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
mDevicePolicyManager.getProfileOwnerOrDeviceOwnerSupervisionComponent(
|
mDevicePolicyManager.getProfileOwnerOrDeviceOwnerSupervisionComponent(
|
||||||
UserHandle.of(userId));
|
UserHandle.of(userId));
|
||||||
if (supervisorComponent == null) {
|
if (supervisorComponent == null) {
|
||||||
Log.e(TAG, "No Profile Owner or Device Owner supervision app found for User "
|
mLogger.logMissingSupervisorAppError(userId);
|
||||||
+ userId);
|
|
||||||
} else {
|
} else {
|
||||||
Intent intent =
|
Intent intent =
|
||||||
new Intent(DevicePolicyManager.ACTION_BIND_SECONDARY_LOCKSCREEN_SERVICE)
|
new Intent(DevicePolicyManager.ACTION_BIND_SECONDARY_LOCKSCREEN_SERVICE)
|
||||||
@@ -1354,7 +1348,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
final String action = intent.getAction();
|
final String action = intent.getAction();
|
||||||
if (DEBUG) Log.d(TAG, "received broadcast " + action);
|
mLogger.logBroadcastReceived(action);
|
||||||
|
|
||||||
if (Intent.ACTION_TIME_TICK.equals(action)
|
if (Intent.ACTION_TIME_TICK.equals(action)
|
||||||
|| Intent.ACTION_TIME_CHANGED.equals(action)) {
|
|| Intent.ACTION_TIME_CHANGED.equals(action)) {
|
||||||
@@ -1381,12 +1375,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (DEBUG_SIM_STATES) {
|
mLogger.logSimStateFromIntent(action,
|
||||||
Log.v(TAG, "action " + action
|
intent.getStringExtra(Intent.EXTRA_SIM_STATE),
|
||||||
+ " state: " + intent.getStringExtra(
|
args.slotId,
|
||||||
Intent.EXTRA_SIM_STATE)
|
args.subId);
|
||||||
+ " slotId: " + args.slotId + " subid: " + args.subId);
|
|
||||||
}
|
|
||||||
mHandler.obtainMessage(MSG_SIM_STATE_CHANGE, args.subId, args.slotId, args.simState)
|
mHandler.obtainMessage(MSG_SIM_STATE_CHANGE, args.subId, args.slotId, args.simState)
|
||||||
.sendToTarget();
|
.sendToTarget();
|
||||||
} else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) {
|
} else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) {
|
||||||
@@ -1398,10 +1390,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
ServiceState serviceState = ServiceState.newFromBundle(intent.getExtras());
|
ServiceState serviceState = ServiceState.newFromBundle(intent.getExtras());
|
||||||
int subId = intent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
|
int subId = intent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
|
||||||
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||||
if (DEBUG) {
|
mLogger.logServiceStateIntent(action, serviceState, subId);
|
||||||
Log.v(TAG, "action " + action + " serviceState=" + serviceState + " subId="
|
|
||||||
+ subId);
|
|
||||||
}
|
|
||||||
mHandler.sendMessage(
|
mHandler.sendMessage(
|
||||||
mHandler.obtainMessage(MSG_SERVICE_STATE_CHANGE, subId, 0, serviceState));
|
mHandler.obtainMessage(MSG_SERVICE_STATE_CHANGE, subId, 0, serviceState));
|
||||||
} else if (TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED.equals(action)) {
|
} else if (TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED.equals(action)) {
|
||||||
@@ -1521,7 +1510,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onUdfpsPointerDown(int sensorId) {
|
public void onUdfpsPointerDown(int sensorId) {
|
||||||
Log.d(TAG, "onUdfpsPointerDown, sensorId: " + sensorId);
|
mLogger.logUdfpsPointerDown(sensorId);
|
||||||
requestFaceAuth(true);
|
requestFaceAuth(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1530,7 +1519,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onUdfpsPointerUp(int sensorId) {
|
public void onUdfpsPointerUp(int sensorId) {
|
||||||
Log.d(TAG, "onUdfpsPointerUp, sensorId: " + sensorId);
|
mLogger.logUdfpsPointerUp(sensorId);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1826,7 +1815,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
TelephonyListenerManager telephonyListenerManager,
|
TelephonyListenerManager telephonyListenerManager,
|
||||||
InteractionJankMonitor interactionJankMonitor,
|
InteractionJankMonitor interactionJankMonitor,
|
||||||
LatencyTracker latencyTracker,
|
LatencyTracker latencyTracker,
|
||||||
ActiveUnlockConfig activeUnlockConfiguration) {
|
ActiveUnlockConfig activeUnlockConfiguration,
|
||||||
|
KeyguardUpdateMonitorLogger logger) {
|
||||||
|
mLogger = logger;
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mSubscriptionManager = SubscriptionManager.from(context);
|
mSubscriptionManager = SubscriptionManager.from(context);
|
||||||
mTelephonyListenerManager = telephonyListenerManager;
|
mTelephonyListenerManager = telephonyListenerManager;
|
||||||
@@ -2170,13 +2161,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
|| mFingerprintRunningState == BIOMETRIC_STATE_CANCELLING_RESTARTING;
|
|| mFingerprintRunningState == BIOMETRIC_STATE_CANCELLING_RESTARTING;
|
||||||
if (runningOrRestarting && !shouldListenForFingerprint) {
|
if (runningOrRestarting && !shouldListenForFingerprint) {
|
||||||
if (action == BIOMETRIC_ACTION_START) {
|
if (action == BIOMETRIC_ACTION_START) {
|
||||||
Log.v(TAG, "Ignoring stopListeningForFingerprint()");
|
mLogger.v("Ignoring stopListeningForFingerprint()");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
stopListeningForFingerprint();
|
stopListeningForFingerprint();
|
||||||
} else if (!runningOrRestarting && shouldListenForFingerprint) {
|
} else if (!runningOrRestarting && shouldListenForFingerprint) {
|
||||||
if (action == BIOMETRIC_ACTION_STOP) {
|
if (action == BIOMETRIC_ACTION_STOP) {
|
||||||
Log.v(TAG, "Ignoring startListeningForFingerprint()");
|
mLogger.v("Ignoring startListeningForFingerprint()");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
startListeningForFingerprint();
|
startListeningForFingerprint();
|
||||||
@@ -2202,7 +2193,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
* @param active If the interrupt started or ended.
|
* @param active If the interrupt started or ended.
|
||||||
*/
|
*/
|
||||||
public void onAuthInterruptDetected(boolean active) {
|
public void onAuthInterruptDetected(boolean active) {
|
||||||
if (DEBUG) Log.d(TAG, "onAuthInterruptDetected(" + active + ")");
|
mLogger.logAuthInterruptDetected(active);
|
||||||
if (mAuthInterruptActive == active) {
|
if (mAuthInterruptActive == active) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2217,7 +2208,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
* @param userInitiatedRequest true if the user explicitly requested face auth
|
* @param userInitiatedRequest true if the user explicitly requested face auth
|
||||||
*/
|
*/
|
||||||
public void requestFaceAuth(boolean userInitiatedRequest) {
|
public void requestFaceAuth(boolean userInitiatedRequest) {
|
||||||
if (DEBUG) Log.d(TAG, "requestFaceAuth() userInitiated=" + userInitiatedRequest);
|
mLogger.logFaceAuthRequested(userInitiatedRequest);
|
||||||
mIsFaceAuthUserRequested |= userInitiatedRequest;
|
mIsFaceAuthUserRequested |= userInitiatedRequest;
|
||||||
updateFaceListeningState(BIOMETRIC_ACTION_START);
|
updateFaceListeningState(BIOMETRIC_ACTION_START);
|
||||||
}
|
}
|
||||||
@@ -2243,14 +2234,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
boolean shouldListenForFace = shouldListenForFace();
|
boolean shouldListenForFace = shouldListenForFace();
|
||||||
if (mFaceRunningState == BIOMETRIC_STATE_RUNNING && !shouldListenForFace) {
|
if (mFaceRunningState == BIOMETRIC_STATE_RUNNING && !shouldListenForFace) {
|
||||||
if (action == BIOMETRIC_ACTION_START) {
|
if (action == BIOMETRIC_ACTION_START) {
|
||||||
Log.v(TAG, "Ignoring stopListeningForFace()");
|
mLogger.v("Ignoring stopListeningForFace()");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mIsFaceAuthUserRequested = false;
|
mIsFaceAuthUserRequested = false;
|
||||||
stopListeningForFace();
|
stopListeningForFace();
|
||||||
} else if (mFaceRunningState != BIOMETRIC_STATE_RUNNING && shouldListenForFace) {
|
} else if (mFaceRunningState != BIOMETRIC_STATE_RUNNING && shouldListenForFace) {
|
||||||
if (action == BIOMETRIC_ACTION_STOP) {
|
if (action == BIOMETRIC_ACTION_STOP) {
|
||||||
Log.v(TAG, "Ignoring startListeningForFace()");
|
mLogger.v("Ignoring startListeningForFace()");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
startListeningForFace();
|
startListeningForFace();
|
||||||
@@ -2267,9 +2258,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (shouldTriggerActiveUnlock()) {
|
if (shouldTriggerActiveUnlock()) {
|
||||||
if (DEBUG_ACTIVE_UNLOCK) {
|
mLogger.logActiveUnlockTriggered(reason);
|
||||||
Log.d("ActiveUnlock", "initiate active unlock triggerReason=" + reason);
|
|
||||||
}
|
|
||||||
mTrustManager.reportUserMayRequestUnlock(KeyguardUpdateMonitor.getCurrentUser());
|
mTrustManager.reportUserMayRequestUnlock(KeyguardUpdateMonitor.getCurrentUser());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2297,12 +2286,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (allowRequest && shouldTriggerActiveUnlock()) {
|
if (allowRequest && shouldTriggerActiveUnlock()) {
|
||||||
if (DEBUG_ACTIVE_UNLOCK) {
|
mLogger.logUserRequestedUnlock(requestOrigin, reason, dismissKeyguard);
|
||||||
Log.d("ActiveUnlock", "reportUserRequestedUnlock"
|
|
||||||
+ " origin=" + requestOrigin.name()
|
|
||||||
+ " reason=" + reason
|
|
||||||
+ " dismissKeyguard=" + dismissKeyguard);
|
|
||||||
}
|
|
||||||
mTrustManager.reportUserRequestedUnlock(KeyguardUpdateMonitor.getCurrentUser(),
|
mTrustManager.reportUserRequestedUnlock(KeyguardUpdateMonitor.getCurrentUser(),
|
||||||
dismissKeyguard);
|
dismissKeyguard);
|
||||||
}
|
}
|
||||||
@@ -2452,32 +2436,30 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
final boolean shouldListen = shouldListenKeyguardState && shouldListenUserState
|
final boolean shouldListen = shouldListenKeyguardState && shouldListenUserState
|
||||||
&& shouldListenBouncerState && shouldListenUdfpsState && !isFingerprintLockedOut();
|
&& shouldListenBouncerState && shouldListenUdfpsState && !isFingerprintLockedOut();
|
||||||
|
|
||||||
if (DEBUG_FINGERPRINT || DEBUG_SPEW) {
|
maybeLogListenerModelData(
|
||||||
maybeLogListenerModelData(
|
new KeyguardFingerprintListenModel(
|
||||||
new KeyguardFingerprintListenModel(
|
System.currentTimeMillis(),
|
||||||
System.currentTimeMillis(),
|
user,
|
||||||
user,
|
shouldListen,
|
||||||
shouldListen,
|
biometricEnabledForUser,
|
||||||
biometricEnabledForUser,
|
mBouncerIsOrWillBeShowing,
|
||||||
mBouncerIsOrWillBeShowing,
|
userCanSkipBouncer,
|
||||||
userCanSkipBouncer,
|
mCredentialAttempted,
|
||||||
mCredentialAttempted,
|
mDeviceInteractive,
|
||||||
mDeviceInteractive,
|
mIsDreaming,
|
||||||
mIsDreaming,
|
isEncryptedOrLockdownForUser,
|
||||||
isEncryptedOrLockdownForUser,
|
fingerprintDisabledForUser,
|
||||||
fingerprintDisabledForUser,
|
mFingerprintLockedOut,
|
||||||
mFingerprintLockedOut,
|
mGoingToSleep,
|
||||||
mGoingToSleep,
|
mKeyguardGoingAway,
|
||||||
mKeyguardGoingAway,
|
mKeyguardIsVisible,
|
||||||
mKeyguardIsVisible,
|
mKeyguardOccluded,
|
||||||
mKeyguardOccluded,
|
mOccludingAppRequestingFp,
|
||||||
mOccludingAppRequestingFp,
|
mIsPrimaryUser,
|
||||||
mIsPrimaryUser,
|
shouldListenForFingerprintAssistant,
|
||||||
shouldListenForFingerprintAssistant,
|
mSwitchingUser,
|
||||||
mSwitchingUser,
|
isUdfps,
|
||||||
isUdfps,
|
userDoesNotHaveTrust));
|
||||||
userDoesNotHaveTrust));
|
|
||||||
}
|
|
||||||
|
|
||||||
return shouldListen;
|
return shouldListen;
|
||||||
}
|
}
|
||||||
@@ -2552,59 +2534,49 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
&& !fpLockedout;
|
&& !fpLockedout;
|
||||||
|
|
||||||
// Aggregate relevant fields for debug logging.
|
// Aggregate relevant fields for debug logging.
|
||||||
if (DEBUG_FACE || DEBUG_SPEW) {
|
maybeLogListenerModelData(
|
||||||
maybeLogListenerModelData(
|
new KeyguardFaceListenModel(
|
||||||
new KeyguardFaceListenModel(
|
System.currentTimeMillis(),
|
||||||
System.currentTimeMillis(),
|
user,
|
||||||
user,
|
shouldListen,
|
||||||
shouldListen,
|
mAuthInterruptActive,
|
||||||
mAuthInterruptActive,
|
becauseCannotSkipBouncer,
|
||||||
becauseCannotSkipBouncer,
|
biometricEnabledForUser,
|
||||||
biometricEnabledForUser,
|
mBouncerFullyShown,
|
||||||
mBouncerFullyShown,
|
faceAuthenticated,
|
||||||
faceAuthenticated,
|
faceDisabledForUser,
|
||||||
faceDisabledForUser,
|
mGoingToSleep,
|
||||||
mGoingToSleep,
|
awakeKeyguard,
|
||||||
awakeKeyguard,
|
mKeyguardGoingAway,
|
||||||
mKeyguardGoingAway,
|
shouldListenForFaceAssistant,
|
||||||
shouldListenForFaceAssistant,
|
mOccludingAppRequestingFace,
|
||||||
mOccludingAppRequestingFace,
|
mIsPrimaryUser,
|
||||||
mIsPrimaryUser,
|
strongAuthAllowsScanning,
|
||||||
strongAuthAllowsScanning,
|
mSecureCameraLaunched,
|
||||||
mSecureCameraLaunched,
|
mSwitchingUser,
|
||||||
mSwitchingUser,
|
mUdfpsBouncerShowing));
|
||||||
mUdfpsBouncerShowing));
|
|
||||||
}
|
|
||||||
|
|
||||||
return shouldListen;
|
return shouldListen;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void maybeLogListenerModelData(KeyguardListenModel model) {
|
private void maybeLogListenerModelData(KeyguardListenModel model) {
|
||||||
// Too chatty, but very useful when debugging issues.
|
mLogger.logKeyguardListenerModel(model);
|
||||||
if (DEBUG_SPEW) {
|
|
||||||
Log.v(TAG, model.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (DEBUG_ACTIVE_UNLOCK
|
if (model instanceof KeyguardActiveUnlockModel) {
|
||||||
&& model instanceof KeyguardActiveUnlockModel) {
|
|
||||||
mListenModels.add(model);
|
mListenModels.add(model);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add model data to the historical buffer.
|
// Add model data to the historical buffer.
|
||||||
final boolean notYetRunning =
|
final boolean notYetRunning =
|
||||||
(DEBUG_FACE
|
(model instanceof KeyguardFaceListenModel
|
||||||
&& model instanceof KeyguardFaceListenModel
|
&& mFaceRunningState != BIOMETRIC_STATE_RUNNING)
|
||||||
&& mFaceRunningState != BIOMETRIC_STATE_RUNNING)
|
|| (model instanceof KeyguardFingerprintListenModel
|
||||||
|| (DEBUG_FINGERPRINT
|
&& mFingerprintRunningState != BIOMETRIC_STATE_RUNNING);
|
||||||
&& model instanceof KeyguardFingerprintListenModel
|
|
||||||
&& mFingerprintRunningState != BIOMETRIC_STATE_RUNNING);
|
|
||||||
final boolean running =
|
final boolean running =
|
||||||
(DEBUG_FACE
|
(model instanceof KeyguardFaceListenModel
|
||||||
&& model instanceof KeyguardFaceListenModel
|
|
||||||
&& mFaceRunningState == BIOMETRIC_STATE_RUNNING)
|
&& mFaceRunningState == BIOMETRIC_STATE_RUNNING)
|
||||||
|| (DEBUG_FINGERPRINT
|
|| (model instanceof KeyguardFingerprintListenModel
|
||||||
&& model instanceof KeyguardFingerprintListenModel
|
|
||||||
&& mFingerprintRunningState == BIOMETRIC_STATE_RUNNING);
|
&& mFingerprintRunningState == BIOMETRIC_STATE_RUNNING);
|
||||||
if (notYetRunning && model.getListening()
|
if (notYetRunning && model.getListening()
|
||||||
|| running && !model.getListening()) {
|
|| running && !model.getListening()) {
|
||||||
@@ -2616,9 +2588,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
final int userId = getCurrentUser();
|
final int userId = getCurrentUser();
|
||||||
final boolean unlockPossible = isUnlockWithFingerprintPossible(userId);
|
final boolean unlockPossible = isUnlockWithFingerprintPossible(userId);
|
||||||
if (mFingerprintCancelSignal != null) {
|
if (mFingerprintCancelSignal != null) {
|
||||||
Log.e(TAG, "Cancellation signal is not null, high chance of bug in fp auth lifecycle"
|
mLogger.logUnexpectedFpCancellationSignalState(
|
||||||
+ " management. FP state: " + mFingerprintRunningState
|
mFingerprintRunningState,
|
||||||
+ ", unlockPossible: " + unlockPossible);
|
unlockPossible);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mFingerprintRunningState == BIOMETRIC_STATE_CANCELLING) {
|
if (mFingerprintRunningState == BIOMETRIC_STATE_CANCELLING) {
|
||||||
@@ -2629,7 +2601,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
// Waiting for restart via handleFingerprintError().
|
// Waiting for restart via handleFingerprintError().
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (DEBUG) Log.v(TAG, "startListeningForFingerprint()");
|
mLogger.v("startListeningForFingerprint()");
|
||||||
|
|
||||||
if (unlockPossible) {
|
if (unlockPossible) {
|
||||||
mFingerprintCancelSignal = new CancellationSignal();
|
mFingerprintCancelSignal = new CancellationSignal();
|
||||||
@@ -2650,9 +2622,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
final int userId = getCurrentUser();
|
final int userId = getCurrentUser();
|
||||||
final boolean unlockPossible = isUnlockWithFacePossible(userId);
|
final boolean unlockPossible = isUnlockWithFacePossible(userId);
|
||||||
if (mFaceCancelSignal != null) {
|
if (mFaceCancelSignal != null) {
|
||||||
Log.e(TAG, "Cancellation signal is not null, high chance of bug in face auth lifecycle"
|
mLogger.logUnexpectedFaceCancellationSignalState(mFaceRunningState, unlockPossible);
|
||||||
+ " management. Face state: " + mFaceRunningState
|
|
||||||
+ ", unlockPossible: " + unlockPossible);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mFaceRunningState == BIOMETRIC_STATE_CANCELLING) {
|
if (mFaceRunningState == BIOMETRIC_STATE_CANCELLING) {
|
||||||
@@ -2662,7 +2632,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
// Waiting for ERROR_CANCELED before requesting auth again
|
// Waiting for ERROR_CANCELED before requesting auth again
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (DEBUG) Log.v(TAG, "startListeningForFace(): " + mFaceRunningState);
|
mLogger.logStartedListeningForFace(mFaceRunningState);
|
||||||
|
|
||||||
if (unlockPossible) {
|
if (unlockPossible) {
|
||||||
mFaceCancelSignal = new CancellationSignal();
|
mFaceCancelSignal = new CancellationSignal();
|
||||||
@@ -2728,7 +2698,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void stopListeningForFingerprint() {
|
private void stopListeningForFingerprint() {
|
||||||
if (DEBUG) Log.v(TAG, "stopListeningForFingerprint()");
|
mLogger.v("stopListeningForFingerprint()");
|
||||||
if (mFingerprintRunningState == BIOMETRIC_STATE_RUNNING) {
|
if (mFingerprintRunningState == BIOMETRIC_STATE_RUNNING) {
|
||||||
if (mFingerprintCancelSignal != null) {
|
if (mFingerprintCancelSignal != null) {
|
||||||
mFingerprintCancelSignal.cancel();
|
mFingerprintCancelSignal.cancel();
|
||||||
@@ -2744,7 +2714,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void stopListeningForFace() {
|
private void stopListeningForFace() {
|
||||||
if (DEBUG) Log.v(TAG, "stopListeningForFace()");
|
mLogger.v("stopListeningForFace()");
|
||||||
if (mFaceRunningState == BIOMETRIC_STATE_RUNNING) {
|
if (mFaceRunningState == BIOMETRIC_STATE_RUNNING) {
|
||||||
if (mFaceCancelSignal != null) {
|
if (mFaceCancelSignal != null) {
|
||||||
mFaceCancelSignal.cancel();
|
mFaceCancelSignal.cancel();
|
||||||
@@ -2773,7 +2743,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
if (mDeviceProvisioned) {
|
if (mDeviceProvisioned) {
|
||||||
mHandler.sendEmptyMessage(MSG_DEVICE_PROVISIONED);
|
mHandler.sendEmptyMessage(MSG_DEVICE_PROVISIONED);
|
||||||
}
|
}
|
||||||
if (DEBUG) Log.d(TAG, "DEVICE_PROVISIONED state = " + mDeviceProvisioned);
|
mLogger.logDeviceProvisionedState(mDeviceProvisioned);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -2878,7 +2848,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
private void handlePhoneStateChanged(String newState) {
|
private void handlePhoneStateChanged(String newState) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG) Log.d(TAG, "handlePhoneStateChanged(" + newState + ")");
|
mLogger.logPhoneStateChanged(newState);
|
||||||
if (TelephonyManager.EXTRA_STATE_IDLE.equals(newState)) {
|
if (TelephonyManager.EXTRA_STATE_IDLE.equals(newState)) {
|
||||||
mPhoneState = TelephonyManager.CALL_STATE_IDLE;
|
mPhoneState = TelephonyManager.CALL_STATE_IDLE;
|
||||||
} else if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(newState)) {
|
} else if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(newState)) {
|
||||||
@@ -2899,7 +2869,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
private void handleTimeUpdate() {
|
private void handleTimeUpdate() {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG) Log.d(TAG, "handleTimeUpdate");
|
mLogger.d("handleTimeUpdate");
|
||||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||||
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
||||||
if (cb != null) {
|
if (cb != null) {
|
||||||
@@ -2913,7 +2883,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
private void handleTimeZoneUpdate(String timeZone) {
|
private void handleTimeZoneUpdate(String timeZone) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG) Log.d(TAG, "handleTimeZoneUpdate");
|
mLogger.d("handleTimeZoneUpdate");
|
||||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||||
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
||||||
if (cb != null) {
|
if (cb != null) {
|
||||||
@@ -2931,7 +2901,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
private void handleTimeFormatUpdate(String timeFormat) {
|
private void handleTimeFormatUpdate(String timeFormat) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG) Log.d(TAG, "handleTimeFormatUpdate timeFormat=" + timeFormat);
|
mLogger.logTimeFormatChanged(timeFormat);
|
||||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||||
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
||||||
if (cb != null) {
|
if (cb != null) {
|
||||||
@@ -2945,7 +2915,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
private void handleBatteryUpdate(BatteryStatus status) {
|
private void handleBatteryUpdate(BatteryStatus status) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG) Log.d(TAG, "handleBatteryUpdate");
|
mLogger.d("handleBatteryUpdate");
|
||||||
final boolean batteryUpdateInteresting = isBatteryUpdateInteresting(mBatteryStatus, status);
|
final boolean batteryUpdateInteresting = isBatteryUpdateInteresting(mBatteryStatus, status);
|
||||||
mBatteryStatus = status;
|
mBatteryStatus = status;
|
||||||
if (batteryUpdateInteresting) {
|
if (batteryUpdateInteresting) {
|
||||||
@@ -2982,14 +2952,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void handleSimStateChange(int subId, int slotId, int state) {
|
void handleSimStateChange(int subId, int slotId, int state) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG_SIM_STATES) {
|
mLogger.logSimState(subId, slotId, state);
|
||||||
Log.d(TAG, "handleSimStateChange(subId=" + subId + ", slotId="
|
|
||||||
+ slotId + ", state=" + state + ")");
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean becameAbsent = false;
|
boolean becameAbsent = false;
|
||||||
if (!SubscriptionManager.isValidSubscriptionId(subId)) {
|
if (!SubscriptionManager.isValidSubscriptionId(subId)) {
|
||||||
Log.w(TAG, "invalid subId in handleSimStateChange()");
|
mLogger.w("invalid subId in handleSimStateChange()");
|
||||||
/* Only handle No SIM(ABSENT) and Card Error(CARD_IO_ERROR) due to
|
/* Only handle No SIM(ABSENT) and Card Error(CARD_IO_ERROR) due to
|
||||||
* handleServiceStateChange() handle other case */
|
* handleServiceStateChange() handle other case */
|
||||||
if (state == TelephonyManager.SIM_STATE_ABSENT) {
|
if (state == TelephonyManager.SIM_STATE_ABSENT) {
|
||||||
@@ -3038,13 +3005,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void handleServiceStateChange(int subId, ServiceState serviceState) {
|
void handleServiceStateChange(int subId, ServiceState serviceState) {
|
||||||
if (DEBUG) {
|
mLogger.logServiceStateChange(subId, serviceState);
|
||||||
Log.d(TAG,
|
|
||||||
"handleServiceStateChange(subId=" + subId + ", serviceState=" + serviceState);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!SubscriptionManager.isValidSubscriptionId(subId)) {
|
if (!SubscriptionManager.isValidSubscriptionId(subId)) {
|
||||||
Log.w(TAG, "invalid subId in handleServiceStateChange()");
|
mLogger.w("invalid subId in handleServiceStateChange()");
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
updateTelephonyCapable(true);
|
updateTelephonyCapable(true);
|
||||||
@@ -3066,7 +3030,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
public void onKeyguardVisibilityChanged(boolean showing) {
|
public void onKeyguardVisibilityChanged(boolean showing) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
Log.d(TAG, "onKeyguardVisibilityChanged(" + showing + ")");
|
mLogger.logKeyguardVisibilityChanged(showing);
|
||||||
mKeyguardIsVisible = showing;
|
mKeyguardIsVisible = showing;
|
||||||
|
|
||||||
if (showing) {
|
if (showing) {
|
||||||
@@ -3086,7 +3050,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
* Handle {@link #MSG_KEYGUARD_RESET}
|
* Handle {@link #MSG_KEYGUARD_RESET}
|
||||||
*/
|
*/
|
||||||
private void handleKeyguardReset() {
|
private void handleKeyguardReset() {
|
||||||
if (DEBUG) Log.d(TAG, "handleKeyguardReset");
|
mLogger.d("handleKeyguardReset");
|
||||||
updateBiometricListeningState(BIOMETRIC_ACTION_UPDATE);
|
updateBiometricListeningState(BIOMETRIC_ACTION_UPDATE);
|
||||||
mNeedsSlowUnlockTransition = resolveNeedsSlowUnlockTransition();
|
mNeedsSlowUnlockTransition = resolveNeedsSlowUnlockTransition();
|
||||||
}
|
}
|
||||||
@@ -3100,8 +3064,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
0 /* flags */, getCurrentUser());
|
0 /* flags */, getCurrentUser());
|
||||||
|
|
||||||
if (resolveInfo == null) {
|
if (resolveInfo == null) {
|
||||||
Log.w(TAG, "resolveNeedsSlowUnlockTransition: returning false since activity "
|
mLogger.w("resolveNeedsSlowUnlockTransition: returning false since activity could "
|
||||||
+ "could not be resolved.");
|
+ "not be resolved.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3119,11 +3083,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
final boolean wasBouncerFullyShown = mBouncerFullyShown;
|
final boolean wasBouncerFullyShown = mBouncerFullyShown;
|
||||||
mBouncerIsOrWillBeShowing = bouncerIsOrWillBeShowing == 1;
|
mBouncerIsOrWillBeShowing = bouncerIsOrWillBeShowing == 1;
|
||||||
mBouncerFullyShown = bouncerFullyShown == 1;
|
mBouncerFullyShown = bouncerFullyShown == 1;
|
||||||
if (DEBUG) {
|
mLogger.logKeyguardBouncerChanged(mBouncerIsOrWillBeShowing, mBouncerFullyShown);
|
||||||
Log.d(TAG, "handleKeyguardBouncerChanged"
|
|
||||||
+ " bouncerIsOrWillBeShowing=" + mBouncerIsOrWillBeShowing
|
|
||||||
+ " bouncerFullyShowing=" + mBouncerFullyShown);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mBouncerFullyShown) {
|
if (mBouncerFullyShown) {
|
||||||
// If the bouncer is shown, always clear this flag. This can happen in the following
|
// If the bouncer is shown, always clear this flag. This can happen in the following
|
||||||
@@ -3243,9 +3203,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
public void removeCallback(KeyguardUpdateMonitorCallback callback) {
|
public void removeCallback(KeyguardUpdateMonitorCallback callback) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG) {
|
mLogger.logUnregisterCallback(callback);
|
||||||
Log.v(TAG, "*** unregister callback for " + callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
mCallbacks.removeIf(el -> el.get() == callback);
|
mCallbacks.removeIf(el -> el.get() == callback);
|
||||||
}
|
}
|
||||||
@@ -3258,15 +3216,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
public void registerCallback(KeyguardUpdateMonitorCallback callback) {
|
public void registerCallback(KeyguardUpdateMonitorCallback callback) {
|
||||||
Assert.isMainThread();
|
Assert.isMainThread();
|
||||||
if (DEBUG) Log.v(TAG, "*** register callback for " + callback);
|
mLogger.logRegisterCallback(callback);
|
||||||
// Prevent adding duplicate callbacks
|
// Prevent adding duplicate callbacks
|
||||||
|
|
||||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||||
if (mCallbacks.get(i).get() == callback) {
|
if (mCallbacks.get(i).get() == callback) {
|
||||||
if (DEBUG) {
|
mLogger.logException(
|
||||||
Log.e(TAG, "Object tried to add another callback",
|
new Exception("Called by"),
|
||||||
new Exception("Called by"));
|
"Object tried to add another callback");
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3316,11 +3273,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
public void sendKeyguardBouncerChanged(boolean bouncerIsOrWillBeShowing,
|
public void sendKeyguardBouncerChanged(boolean bouncerIsOrWillBeShowing,
|
||||||
boolean bouncerFullyShown) {
|
boolean bouncerFullyShown) {
|
||||||
if (DEBUG) {
|
mLogger.logSendKeyguardBouncerChanged(bouncerIsOrWillBeShowing, bouncerFullyShown);
|
||||||
Log.d(TAG, "sendKeyguardBouncerChanged"
|
|
||||||
+ " bouncerIsOrWillBeShowing=" + bouncerIsOrWillBeShowing
|
|
||||||
+ " bouncerFullyShown=" + bouncerFullyShown);
|
|
||||||
}
|
|
||||||
Message message = mHandler.obtainMessage(MSG_KEYGUARD_BOUNCER_CHANGED);
|
Message message = mHandler.obtainMessage(MSG_KEYGUARD_BOUNCER_CHANGED);
|
||||||
message.arg1 = bouncerIsOrWillBeShowing ? 1 : 0;
|
message.arg1 = bouncerIsOrWillBeShowing ? 1 : 0;
|
||||||
message.arg2 = bouncerFullyShown ? 1 : 0;
|
message.arg2 = bouncerFullyShown ? 1 : 0;
|
||||||
@@ -3337,7 +3290,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
*/
|
*/
|
||||||
@MainThread
|
@MainThread
|
||||||
public void reportSimUnlocked(int subId) {
|
public void reportSimUnlocked(int subId) {
|
||||||
if (DEBUG_SIM_STATES) Log.v(TAG, "reportSimUnlocked(subId=" + subId + ")");
|
mLogger.logSimUnlocked(subId);
|
||||||
handleSimStateChange(subId, getSlotId(subId), TelephonyManager.SIM_STATE_READY);
|
handleSimStateChange(subId, getSlotId(subId), TelephonyManager.SIM_STATE_READY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3614,7 +3567,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
try {
|
try {
|
||||||
ActivityManager.getService().unregisterUserSwitchObserver(mUserSwitchObserver);
|
ActivityManager.getService().unregisterUserSwitchObserver(mUserSwitchObserver);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.d(TAG, "RemoteException onDestroy. cannot unregister userSwitchObserver");
|
mLogger.logException(
|
||||||
|
e,
|
||||||
|
"RemoteException onDestroy. cannot unregister userSwitchObserver");
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener);
|
TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener);
|
||||||
|
|||||||
@@ -0,0 +1,326 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.keyguard.logging
|
||||||
|
|
||||||
|
import android.hardware.biometrics.BiometricConstants.LockoutMode
|
||||||
|
import android.telephony.ServiceState
|
||||||
|
import android.telephony.SubscriptionInfo
|
||||||
|
import com.android.keyguard.ActiveUnlockConfig
|
||||||
|
import com.android.keyguard.KeyguardListenModel
|
||||||
|
import com.android.keyguard.KeyguardUpdateMonitorCallback
|
||||||
|
import com.android.systemui.log.LogBuffer
|
||||||
|
import com.android.systemui.log.LogLevel
|
||||||
|
import com.android.systemui.log.LogLevel.DEBUG
|
||||||
|
import com.android.systemui.log.LogLevel.ERROR
|
||||||
|
import com.android.systemui.log.LogLevel.INFO
|
||||||
|
import com.android.systemui.log.LogLevel.VERBOSE
|
||||||
|
import com.android.systemui.log.LogLevel.WARNING
|
||||||
|
import com.android.systemui.log.dagger.KeyguardUpdateMonitorLog
|
||||||
|
import com.google.errorprone.annotations.CompileTimeConstant
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
private const val TAG = "KeyguardUpdateMonitorLog"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper class for logging for [com.android.keyguard.KeyguardUpdateMonitor]
|
||||||
|
*/
|
||||||
|
class KeyguardUpdateMonitorLogger @Inject constructor(
|
||||||
|
@KeyguardUpdateMonitorLog private val logBuffer: LogBuffer
|
||||||
|
) {
|
||||||
|
fun d(@CompileTimeConstant msg: String) = log(msg, DEBUG)
|
||||||
|
|
||||||
|
fun e(@CompileTimeConstant msg: String) = log(msg, ERROR)
|
||||||
|
|
||||||
|
fun v(@CompileTimeConstant msg: String) = log(msg, ERROR)
|
||||||
|
|
||||||
|
fun w(@CompileTimeConstant msg: String) = log(msg, WARNING)
|
||||||
|
|
||||||
|
fun log(@CompileTimeConstant msg: String, level: LogLevel) = logBuffer.log(TAG, level, msg)
|
||||||
|
|
||||||
|
fun logActiveUnlockTriggered(reason: String) {
|
||||||
|
logBuffer.log("ActiveUnlock", DEBUG,
|
||||||
|
{ str1 = reason },
|
||||||
|
{ "initiate active unlock triggerReason=$str1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logAuthInterruptDetected(active: Boolean) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ bool1 = active },
|
||||||
|
{ "onAuthInterruptDetected($bool1)" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logBroadcastReceived(action: String?) {
|
||||||
|
logBuffer.log(TAG, DEBUG, { str1 = action }, { "received broadcast $str1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logDeviceProvisionedState(deviceProvisioned: Boolean) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ bool1 = deviceProvisioned },
|
||||||
|
{ "DEVICE_PROVISIONED state = $bool1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logException(ex: Exception, @CompileTimeConstant logMsg: String) {
|
||||||
|
logBuffer.log(TAG, ERROR, {}, { logMsg }, exception = ex)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFaceAcquired(acquireInfo: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ int1 = acquireInfo },
|
||||||
|
{ "Face acquired acquireInfo=$int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFaceAuthDisabledForUser(userId: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ int1 = userId },
|
||||||
|
{ "Face authentication disabled by DPM for userId: $int1" })
|
||||||
|
}
|
||||||
|
fun logFaceAuthError(msgId: Int, originalErrMsg: String) {
|
||||||
|
logBuffer.log(TAG, DEBUG, {
|
||||||
|
str1 = originalErrMsg
|
||||||
|
int1 = msgId
|
||||||
|
}, { "Face error received: $str1 msgId= $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFaceAuthForWrongUser(authUserId: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ int1 = authUserId },
|
||||||
|
{ "Face authenticated for wrong user: $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFaceAuthHelpMsg(msgId: Int, helpMsg: String) {
|
||||||
|
logBuffer.log(TAG, DEBUG, {
|
||||||
|
int1 = msgId
|
||||||
|
str1 = helpMsg
|
||||||
|
}, { "Face help received, msgId: $int1 msg: $str1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFaceAuthRequested(userInitiatedRequest: Boolean) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ bool1 = userInitiatedRequest },
|
||||||
|
{ "requestFaceAuth() userInitiated=$bool1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFaceAuthSuccess(userId: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ int1 = userId },
|
||||||
|
{ "Face auth succeeded for user $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFaceLockoutReset(@LockoutMode mode: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG, { int1 = mode }, { "handleFaceLockoutReset: $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFaceRunningState(faceRunningState: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG, { int1 = faceRunningState }, { "faceRunningState: $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFingerprintAuthForWrongUser(authUserId: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ int1 = authUserId },
|
||||||
|
{ "Fingerprint authenticated for wrong user: $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFingerprintDisabledForUser(userId: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ int1 = userId },
|
||||||
|
{ "Fingerprint disabled by DPM for userId: $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFingerprintLockoutReset(@LockoutMode mode: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG, { int1 = mode }, { "handleFingerprintLockoutReset: $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logFingerprintRunningState(fingerprintRunningState: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ int1 = fingerprintRunningState },
|
||||||
|
{ "fingerprintRunningState: $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logInvalidSubId(subId: Int) {
|
||||||
|
logBuffer.log(TAG, INFO,
|
||||||
|
{ int1 = subId },
|
||||||
|
{ "Previously active sub id $int1 is now invalid, will remove" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logKeyguardBouncerChanged(bouncerIsOrWillBeShowing: Boolean, bouncerFullyShown: Boolean) {
|
||||||
|
logBuffer.log(TAG, DEBUG, {
|
||||||
|
bool1 = bouncerIsOrWillBeShowing
|
||||||
|
bool2 = bouncerFullyShown
|
||||||
|
}, {
|
||||||
|
"handleKeyguardBouncerChanged " +
|
||||||
|
"bouncerIsOrWillBeShowing=$bool1 bouncerFullyShowing=$bool2"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logKeyguardListenerModel(model: KeyguardListenModel) {
|
||||||
|
logBuffer.log(TAG, VERBOSE, { str1 = "$model" }, { str1!! })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logKeyguardVisibilityChanged(showing: Boolean) {
|
||||||
|
logBuffer.log(TAG, DEBUG, { bool1 = showing }, { "onKeyguardVisibilityChanged($bool1)" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logMissingSupervisorAppError(userId: Int) {
|
||||||
|
logBuffer.log(TAG, ERROR,
|
||||||
|
{ int1 = userId },
|
||||||
|
{ "No Profile Owner or Device Owner supervision app found for User $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logPhoneStateChanged(newState: String) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ str1 = newState },
|
||||||
|
{ "handlePhoneStateChanged($str1)" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logRegisterCallback(callback: KeyguardUpdateMonitorCallback?) {
|
||||||
|
logBuffer.log(TAG, VERBOSE,
|
||||||
|
{ str1 = "$callback" },
|
||||||
|
{ "*** register callback for $str1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logRetryingAfterFaceHwUnavailable(retryCount: Int) {
|
||||||
|
logBuffer.log(TAG, WARNING,
|
||||||
|
{ int1 = retryCount },
|
||||||
|
{ "Retrying face after HW unavailable, attempt $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logRetryAfterFpHwUnavailable(retryCount: Int) {
|
||||||
|
logBuffer.log(TAG, WARNING,
|
||||||
|
{ int1 = retryCount },
|
||||||
|
{ "Retrying fingerprint attempt: $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logSendKeyguardBouncerChanged(
|
||||||
|
bouncerIsOrWillBeShowing: Boolean,
|
||||||
|
bouncerFullyShown: Boolean,
|
||||||
|
) {
|
||||||
|
logBuffer.log(TAG, DEBUG, {
|
||||||
|
bool1 = bouncerIsOrWillBeShowing
|
||||||
|
bool2 = bouncerFullyShown
|
||||||
|
}, {
|
||||||
|
"sendKeyguardBouncerChanged bouncerIsOrWillBeShowing=$bool1 " +
|
||||||
|
"bouncerFullyShown=$bool2"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logServiceStateChange(subId: Int, serviceState: ServiceState?) {
|
||||||
|
logBuffer.log(TAG, DEBUG, {
|
||||||
|
int1 = subId
|
||||||
|
str1 = "$serviceState"
|
||||||
|
}, { "handleServiceStateChange(subId=$int1, serviceState=$str1)" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logServiceStateIntent(action: String, serviceState: ServiceState?, subId: Int) {
|
||||||
|
logBuffer.log(TAG, VERBOSE, {
|
||||||
|
str1 = action
|
||||||
|
str2 = "$serviceState"
|
||||||
|
int1 = subId
|
||||||
|
}, { "action $str1 serviceState=$str2 subId=$int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logSimState(subId: Int, slotId: Int, state: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG, {
|
||||||
|
int1 = subId
|
||||||
|
int2 = slotId
|
||||||
|
long1 = state.toLong()
|
||||||
|
}, { "handleSimStateChange(subId=$int1, slotId=$int2, state=$long1)" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logSimStateFromIntent(action: String, extraSimState: String, slotId: Int, subId: Int) {
|
||||||
|
logBuffer.log(TAG, VERBOSE, {
|
||||||
|
str1 = action
|
||||||
|
str2 = extraSimState
|
||||||
|
int1 = slotId
|
||||||
|
int2 = subId
|
||||||
|
}, { "action $str1 state: $str2 slotId: $int1 subid: $int2" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logSimUnlocked(subId: Int) {
|
||||||
|
logBuffer.log(TAG, VERBOSE, { int1 = subId }, { "reportSimUnlocked(subId=$int1)" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logStartedListeningForFace(faceRunningState: Int) {
|
||||||
|
logBuffer.log(TAG, VERBOSE,
|
||||||
|
{ int1 = faceRunningState },
|
||||||
|
{ "startListeningForFace(): $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logSubInfo(subInfo: SubscriptionInfo?) {
|
||||||
|
logBuffer.log(TAG, VERBOSE,
|
||||||
|
{ str1 = "$subInfo" },
|
||||||
|
{ "SubInfo:$str1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logTimeFormatChanged(newTimeFormat: String) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ str1 = newTimeFormat },
|
||||||
|
{ "handleTimeFormatUpdate timeFormat=$str1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logUdfpsPointerDown(sensorId: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ int1 = sensorId },
|
||||||
|
{ "onUdfpsPointerDown, sensorId: $int1" })
|
||||||
|
}
|
||||||
|
fun logUdfpsPointerUp(sensorId: Int) {
|
||||||
|
logBuffer.log(TAG, DEBUG,
|
||||||
|
{ int1 = sensorId },
|
||||||
|
{ "onUdfpsPointerUp, sensorId: $int1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logUnexpectedFaceCancellationSignalState(faceRunningState: Int, unlockPossible: Boolean) {
|
||||||
|
logBuffer.log(TAG, ERROR, {
|
||||||
|
int1 = faceRunningState
|
||||||
|
bool1 = unlockPossible
|
||||||
|
}, {
|
||||||
|
"Cancellation signal is not null, high chance of bug in " +
|
||||||
|
"face auth lifecycle management. " +
|
||||||
|
"Face state: $int1, unlockPossible: $bool1"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logUnexpectedFpCancellationSignalState(
|
||||||
|
fingerprintRunningState: Int,
|
||||||
|
unlockPossible: Boolean
|
||||||
|
) {
|
||||||
|
logBuffer.log(TAG, ERROR, {
|
||||||
|
int1 = fingerprintRunningState
|
||||||
|
bool1 = unlockPossible
|
||||||
|
}, {
|
||||||
|
"Cancellation signal is not null, high chance of bug in " +
|
||||||
|
"fp auth lifecycle management. FP state: $int1, unlockPossible: $bool1"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logUnregisterCallback(callback: KeyguardUpdateMonitorCallback?) {
|
||||||
|
logBuffer.log(TAG, VERBOSE,
|
||||||
|
{ str1 = "$callback" },
|
||||||
|
{ "*** unregister callback for $str1" })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun logUserRequestedUnlock(
|
||||||
|
requestOrigin: ActiveUnlockConfig.ACTIVE_UNLOCK_REQUEST_ORIGIN,
|
||||||
|
reason: String,
|
||||||
|
dismissKeyguard: Boolean
|
||||||
|
) {
|
||||||
|
logBuffer.log("ActiveUnlock", DEBUG, {
|
||||||
|
str1 = requestOrigin.name
|
||||||
|
str2 = reason
|
||||||
|
bool1 = dismissKeyguard
|
||||||
|
}, { "reportUserRequestedUnlock origin=$str1 reason=$str2 dismissKeyguard=$bool1" })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
package com.android.systemui.log.dagger
|
||||||
|
|
||||||
|
/** A [com.android.systemui.log.LogBuffer] for KeyguardUpdateMonitor. */
|
||||||
|
annotation class KeyguardUpdateMonitorLog
|
||||||
@@ -277,4 +277,14 @@ public class LogModule {
|
|||||||
public static LogBuffer provideStatusBarNetworkControllerBuffer(LogBufferFactory factory) {
|
public static LogBuffer provideStatusBarNetworkControllerBuffer(LogBufferFactory factory) {
|
||||||
return factory.create("StatusBarNetworkControllerLog", 20);
|
return factory.create("StatusBarNetworkControllerLog", 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a {@link LogBuffer} for use by {@link com.android.keyguard.KeyguardUpdateMonitor}.
|
||||||
|
*/
|
||||||
|
@Provides
|
||||||
|
@SysUISingleton
|
||||||
|
@KeyguardUpdateMonitorLog
|
||||||
|
public static LogBuffer provideKeyguardUpdateMonitorLogBuffer(LogBufferFactory factory) {
|
||||||
|
return factory.create("KeyguardUpdateMonitorLog", 200);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ import com.android.internal.util.LatencyTracker;
|
|||||||
import com.android.internal.widget.ILockSettings;
|
import com.android.internal.widget.ILockSettings;
|
||||||
import com.android.internal.widget.LockPatternUtils;
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor.BiometricAuthenticated;
|
import com.android.keyguard.KeyguardUpdateMonitor.BiometricAuthenticated;
|
||||||
|
import com.android.keyguard.logging.KeyguardUpdateMonitorLogger;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.biometrics.AuthController;
|
import com.android.systemui.biometrics.AuthController;
|
||||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||||
@@ -179,6 +180,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
|||||||
private KeyguardUpdateMonitorCallback mTestCallback;
|
private KeyguardUpdateMonitorCallback mTestCallback;
|
||||||
@Mock
|
@Mock
|
||||||
private ActiveUnlockConfig mActiveUnlockConfig;
|
private ActiveUnlockConfig mActiveUnlockConfig;
|
||||||
|
@Mock
|
||||||
|
private KeyguardUpdateMonitorLogger mKeyguardUpdateMonitorLogger;
|
||||||
// Direct executor
|
// Direct executor
|
||||||
private Executor mBackgroundExecutor = Runnable::run;
|
private Executor mBackgroundExecutor = Runnable::run;
|
||||||
private Executor mMainExecutor = Runnable::run;
|
private Executor mMainExecutor = Runnable::run;
|
||||||
@@ -1189,7 +1192,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
|||||||
mBackgroundExecutor, mMainExecutor,
|
mBackgroundExecutor, mMainExecutor,
|
||||||
mStatusBarStateController, mLockPatternUtils,
|
mStatusBarStateController, mLockPatternUtils,
|
||||||
mAuthController, mTelephonyListenerManager,
|
mAuthController, mTelephonyListenerManager,
|
||||||
mInteractionJankMonitor, mLatencyTracker, mActiveUnlockConfig);
|
mInteractionJankMonitor, mLatencyTracker, mActiveUnlockConfig,
|
||||||
|
mKeyguardUpdateMonitorLogger);
|
||||||
setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker);
|
setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user