Merge "Adds biometric related UI events in WW." into rvc-dev am: 9c1ef34a9c am: 15ecb1d1e2

Change-Id: Ib8b94d9ea909fee2384ca6741634dba7ffcd5323
This commit is contained in:
Thiru Ramasamy
2020-04-29 20:17:48 +00:00
committed by Automerger Merge Worker

View File

@@ -29,6 +29,9 @@ import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLoggerImpl;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.LatencyTracker;
import com.android.keyguard.KeyguardConstants;
@@ -50,6 +53,8 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Map;
import java.util.Optional;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -64,6 +69,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
private static final boolean DEBUG_BIO_WAKELOCK = KeyguardConstants.DEBUG_BIOMETRIC_WAKELOCK;
private static final long BIOMETRIC_WAKELOCK_TIMEOUT_MS = 15 * 1000;
private static final String BIOMETRIC_WAKE_LOCK_NAME = "wake-and-unlock:wakelock";
private static final UiEventLogger UI_EVENT_LOGGER = new UiEventLoggerImpl();
@IntDef(prefix = { "MODE_" }, value = {
MODE_NONE,
@@ -171,6 +177,68 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
}
}
@VisibleForTesting
public enum BiometricUiEvent implements UiEventLogger.UiEventEnum {
@UiEvent(doc = "A biometric event of type fingerprint succeeded.")
BIOMETRIC_FINGERPRINT_SUCCESS(396),
@UiEvent(doc = "A biometric event of type fingerprint failed.")
BIOMETRIC_FINGERPRINT_FAILURE(397),
@UiEvent(doc = "A biometric event of type fingerprint errored.")
BIOMETRIC_FINGERPRINT_ERROR(398),
@UiEvent(doc = "A biometric event of type face unlock succeeded.")
BIOMETRIC_FACE_SUCCESS(399),
@UiEvent(doc = "A biometric event of type face unlock failed.")
BIOMETRIC_FACE_FAILURE(400),
@UiEvent(doc = "A biometric event of type face unlock errored.")
BIOMETRIC_FACE_ERROR(401),
@UiEvent(doc = "A biometric event of type iris succeeded.")
BIOMETRIC_IRIS_SUCCESS(402),
@UiEvent(doc = "A biometric event of type iris failed.")
BIOMETRIC_IRIS_FAILURE(403),
@UiEvent(doc = "A biometric event of type iris errored.")
BIOMETRIC_IRIS_ERROR(404);
private final int mId;
BiometricUiEvent(int id) {
mId = id;
}
@Override
public int getId() {
return mId;
}
static final Map<BiometricSourceType, BiometricUiEvent> ERROR_EVENT_BY_SOURCE_TYPE = Map.of(
BiometricSourceType.FINGERPRINT, BiometricUiEvent.BIOMETRIC_FINGERPRINT_ERROR,
BiometricSourceType.FACE, BiometricUiEvent.BIOMETRIC_FACE_ERROR,
BiometricSourceType.IRIS, BiometricUiEvent.BIOMETRIC_IRIS_ERROR
);
static final Map<BiometricSourceType, BiometricUiEvent> SUCCESS_EVENT_BY_SOURCE_TYPE =
Map.of(
BiometricSourceType.FINGERPRINT, BiometricUiEvent.BIOMETRIC_FINGERPRINT_SUCCESS,
BiometricSourceType.FACE, BiometricUiEvent.BIOMETRIC_FACE_SUCCESS,
BiometricSourceType.IRIS, BiometricUiEvent.BIOMETRIC_IRIS_SUCCESS
);
static final Map<BiometricSourceType, BiometricUiEvent> FAILURE_EVENT_BY_SOURCE_TYPE =
Map.of(
BiometricSourceType.FINGERPRINT, BiometricUiEvent.BIOMETRIC_FINGERPRINT_FAILURE,
BiometricSourceType.FACE, BiometricUiEvent.BIOMETRIC_FACE_FAILURE,
BiometricSourceType.IRIS, BiometricUiEvent.BIOMETRIC_IRIS_FAILURE
);
}
@Inject
public BiometricUnlockController(Context context, DozeScrimController dozeScrimController,
KeyguardViewMediator keyguardViewMediator, ScrimController scrimController,
@@ -274,6 +342,9 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
}
mMetricsLogger.write(new LogMaker(MetricsEvent.BIOMETRIC_AUTH)
.setType(MetricsEvent.TYPE_SUCCESS).setSubtype(toSubtype(biometricSourceType)));
Optional.ofNullable(BiometricUiEvent.SUCCESS_EVENT_BY_SOURCE_TYPE.get(biometricSourceType))
.ifPresent(UI_EVENT_LOGGER::log);
boolean unlockAllowed = mKeyguardBypassController.onBiometricAuthenticated(
biometricSourceType, isStrongBiometric);
if (unlockAllowed) {
@@ -504,6 +575,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
public void onBiometricAuthFailed(BiometricSourceType biometricSourceType) {
mMetricsLogger.write(new LogMaker(MetricsEvent.BIOMETRIC_AUTH)
.setType(MetricsEvent.TYPE_FAILURE).setSubtype(toSubtype(biometricSourceType)));
Optional.ofNullable(BiometricUiEvent.FAILURE_EVENT_BY_SOURCE_TYPE.get(biometricSourceType))
.ifPresent(UI_EVENT_LOGGER::log);
cleanup();
}
@@ -513,6 +586,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
mMetricsLogger.write(new LogMaker(MetricsEvent.BIOMETRIC_AUTH)
.setType(MetricsEvent.TYPE_ERROR).setSubtype(toSubtype(biometricSourceType))
.addTaggedData(MetricsEvent.FIELD_BIOMETRIC_AUTH_ERROR, msgId));
Optional.ofNullable(BiometricUiEvent.ERROR_EVENT_BY_SOURCE_TYPE.get(biometricSourceType))
.ifPresent(UI_EVENT_LOGGER::log);
cleanup();
}