Loading services/core/java/com/android/server/biometrics/sensors/BiometricUserState.java +5 −9 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.biometrics.sensors; import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; import android.os.AsyncTask; Loading Loading @@ -61,11 +62,6 @@ public abstract class BiometricUserState<T extends BiometricAuthenticator.Identi */ protected abstract String getBiometricsTag(); /** * @return The file where the biometric metadata should be stored. */ protected abstract String getBiometricFile(); /** * @return The resource for the name template, this is used to generate the default name. */ Loading @@ -88,8 +84,8 @@ public abstract class BiometricUserState<T extends BiometricAuthenticator.Identi throws IOException, XmlPullParserException; public BiometricUserState(Context context, int userId) { mFile = getFileForUser(userId); public BiometricUserState(Context context, int userId, @NonNull String fileName) { mFile = getFileForUser(userId, fileName); mContext = context; synchronized (this) { readStateSyncLocked(); Loading Loading @@ -159,8 +155,8 @@ public abstract class BiometricUserState<T extends BiometricAuthenticator.Identi return true; } private File getFileForUser(int userId) { return new File(Environment.getUserSystemDirectory(userId), getBiometricFile()); private File getFileForUser(int userId, @NonNull String fileName) { return new File(Environment.getUserSystemDirectory(userId), fileName); } private void scheduleWriteStateLocked() { Loading services/core/java/com/android/server/biometrics/sensors/face/FaceUserState.java +2 −8 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import java.util.ArrayList; public class FaceUserState extends BiometricUserState<Face> { private static final String TAG = "FaceState"; private static final String FACE_FILE = "settings_face.xml"; private static final String TAG_FACES = "faces"; private static final String TAG_FACE = "face"; Loading @@ -51,8 +50,8 @@ public class FaceUserState extends BiometricUserState<Face> { private static final String ATTR_FACE_ID = "faceId"; private static final String ATTR_DEVICE_ID = "deviceId"; public FaceUserState(Context ctx, int userId) { super(ctx, userId); public FaceUserState(Context ctx, int userId, String fileName) { super(ctx, userId, fileName); } @Override Loading @@ -60,11 +59,6 @@ public class FaceUserState extends BiometricUserState<Face> { return TAG_FACES; } @Override protected String getBiometricFile() { return FACE_FILE; } @Override protected int getNameTemplateResource() { return com.android.internal.R.string.face_name_template; Loading services/core/java/com/android/server/biometrics/sensors/face/FaceUtils.java +46 −10 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.biometrics.sensors.face; import android.annotation.Nullable; import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.face.Face; Loading @@ -33,21 +34,56 @@ import java.util.List; public class FaceUtils implements BiometricUtils<Face> { private static final Object sInstanceLock = new Object(); private static FaceUtils sInstance; // Map<SensorId, FaceUtils> private static SparseArray<FaceUtils> sInstances; private static final String LEGACY_FACE_FILE = "settings_face.xml"; @GuardedBy("this") private final SparseArray<FaceUserState> mUsers = new SparseArray<>(); private final SparseArray<FaceUserState> mUserStates; private final String mFileName; public static FaceUtils getInstance() { public static FaceUtils getInstance(int sensorId) { // Specify a null fileName to use an auto-generated sensorId-specific filename. return getInstance(sensorId, null /* fileName */); } /** * Retrieves an instance for the specified sensorId. If the fileName is null, a default * filename (e.g. settings_face_<sensorId>.xml will be generated. * * Specifying an explicit fileName allows for backward compatibility with legacy devices, * where everything is stored in settings_face.xml. */ private static FaceUtils getInstance(int sensorId, @Nullable String fileName) { final FaceUtils utils; synchronized (sInstanceLock) { if (sInstance == null) { sInstance = new FaceUtils(); if (sInstances == null) { sInstances = new SparseArray<>(); } if (sInstances.get(sensorId) == null) { if (fileName == null) { fileName = "settings_face_" + sensorId + ".xml"; } sInstances.put(sensorId, new FaceUtils(fileName)); } return sInstance; utils = sInstances.get(sensorId); } return utils; } /** * Legacy getter for {@link android.hardware.biometrics.face.V1_0} and its extended subclasses, * which do not support a well defined sensorId from the HAL. */ public static FaceUtils getInstance() { // Note that sensorId for legacy services can be hard-coded to 0 since it's only used // to index into the sensor states map. return getInstance(0 /* sensorId */, LEGACY_FACE_FILE); } private FaceUtils() { private FaceUtils(String fileName) { mUserStates = new SparseArray<>(); mFileName = fileName; } @Override Loading Loading @@ -81,10 +117,10 @@ public class FaceUtils implements BiometricUtils<Face> { private FaceUserState getStateForUser(Context ctx, int userId) { synchronized (this) { FaceUserState state = mUsers.get(userId); FaceUserState state = mUserStates.get(userId); if (state == null) { state = new FaceUserState(ctx, userId); mUsers.put(userId, state); state = new FaceUserState(ctx, userId, mFileName); mUserStates.put(userId, state); } return state; } Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintUserState.java +2 −8 Original line number Diff line number Diff line Loading @@ -42,7 +42,6 @@ import java.util.ArrayList; public class FingerprintUserState extends BiometricUserState<Fingerprint> { private static final String TAG = "FingerprintState"; private static final String FINGERPRINT_FILE = "settings_fingerprint.xml"; private static final String TAG_FINGERPRINTS = "fingerprints"; private static final String TAG_FINGERPRINT = "fingerprint"; Loading @@ -51,8 +50,8 @@ public class FingerprintUserState extends BiometricUserState<Fingerprint> { private static final String ATTR_FINGER_ID = "fingerId"; private static final String ATTR_DEVICE_ID = "deviceId"; public FingerprintUserState(Context context, int userId) { super(context, userId); public FingerprintUserState(Context context, int userId, String fileName) { super(context, userId, fileName); } @Override Loading @@ -60,11 +59,6 @@ public class FingerprintUserState extends BiometricUserState<Fingerprint> { return TAG_FINGERPRINTS; } @Override protected String getBiometricFile() { return FINGERPRINT_FILE; } @Override protected int getNameTemplateResource() { return com.android.internal.R.string.fingerprint_name_template; Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintUtils.java +49 −11 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ package com.android.server.biometrics.sensors.fingerprint; import android.annotation.Nullable; import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.fingerprint.Fingerprint; import android.text.TextUtils; import android.util.SparseArray; Loading @@ -33,21 +33,59 @@ import java.util.List; public class FingerprintUtils implements BiometricUtils<Fingerprint> { private static final Object sInstanceLock = new Object(); private static FingerprintUtils sInstance; // Map<SensorId, FingerprintUtils> private static SparseArray<FingerprintUtils> sInstances; private static final String LEGACY_FINGERPRINT_FILE = "settings_fingerprint.xml"; @GuardedBy("this") private final SparseArray<FingerprintUserState> mUsers = new SparseArray<>(); private final SparseArray<FingerprintUserState> mUserStates; private final String mFileName; public static FingerprintUtils getInstance() { /** * Retrieves an instance for the specified sensorId. */ public static FingerprintUtils getInstance(int sensorId) { // Specify a null fileName to use an auto-generated sensorId-specific filename. return getInstance(sensorId, null /* fileName */); } /** * Retrieves an instance for the specified sensorId. If the fileName is null, a default * filename (e.g. settings_fingerprint_<sensorId>.xml will be generated. * * Specifying an explicit fileName allows for backward compatibility with legacy devices, * where everything is stored in settings_fingerprint.xml. */ private static FingerprintUtils getInstance(int sensorId, @Nullable String fileName) { final FingerprintUtils utils; synchronized (sInstanceLock) { if (sInstance == null) { sInstance = new FingerprintUtils(); if (sInstances == null) { sInstances = new SparseArray<>(); } if (sInstances.get(sensorId) == null) { if (fileName == null) { fileName = "settings_fingerprint_" + sensorId + ".xml"; } return sInstance; sInstances.put(sensorId, new FingerprintUtils(fileName)); } utils = sInstances.get(sensorId); } return utils; } /** * Legacy getter for {@link android.hardware.biometrics.fingerprint.V2_1} ands its extended * subclasses, which do not support a well defined sensorId from the HAL. */ public static FingerprintUtils getInstance() { // Note that sensorId for legacy services can be hard-coded to 0 since it's only used // to index into the sensor states map. return getInstance(0 /* sensorId */, LEGACY_FINGERPRINT_FILE); } private FingerprintUtils() { private FingerprintUtils(String fileName) { mUserStates = new SparseArray<>(); mFileName = fileName; } @Override Loading Loading @@ -82,10 +120,10 @@ public class FingerprintUtils implements BiometricUtils<Fingerprint> { private FingerprintUserState getStateForUser(Context ctx, int userId) { synchronized (this) { FingerprintUserState state = mUsers.get(userId); FingerprintUserState state = mUserStates.get(userId); if (state == null) { state = new FingerprintUserState(ctx, userId); mUsers.put(userId, state); state = new FingerprintUserState(ctx, userId, mFileName); mUserStates.put(userId, state); } return state; } Loading Loading
services/core/java/com/android/server/biometrics/sensors/BiometricUserState.java +5 −9 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.biometrics.sensors; import android.annotation.NonNull; import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; import android.os.AsyncTask; Loading Loading @@ -61,11 +62,6 @@ public abstract class BiometricUserState<T extends BiometricAuthenticator.Identi */ protected abstract String getBiometricsTag(); /** * @return The file where the biometric metadata should be stored. */ protected abstract String getBiometricFile(); /** * @return The resource for the name template, this is used to generate the default name. */ Loading @@ -88,8 +84,8 @@ public abstract class BiometricUserState<T extends BiometricAuthenticator.Identi throws IOException, XmlPullParserException; public BiometricUserState(Context context, int userId) { mFile = getFileForUser(userId); public BiometricUserState(Context context, int userId, @NonNull String fileName) { mFile = getFileForUser(userId, fileName); mContext = context; synchronized (this) { readStateSyncLocked(); Loading Loading @@ -159,8 +155,8 @@ public abstract class BiometricUserState<T extends BiometricAuthenticator.Identi return true; } private File getFileForUser(int userId) { return new File(Environment.getUserSystemDirectory(userId), getBiometricFile()); private File getFileForUser(int userId, @NonNull String fileName) { return new File(Environment.getUserSystemDirectory(userId), fileName); } private void scheduleWriteStateLocked() { Loading
services/core/java/com/android/server/biometrics/sensors/face/FaceUserState.java +2 −8 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import java.util.ArrayList; public class FaceUserState extends BiometricUserState<Face> { private static final String TAG = "FaceState"; private static final String FACE_FILE = "settings_face.xml"; private static final String TAG_FACES = "faces"; private static final String TAG_FACE = "face"; Loading @@ -51,8 +50,8 @@ public class FaceUserState extends BiometricUserState<Face> { private static final String ATTR_FACE_ID = "faceId"; private static final String ATTR_DEVICE_ID = "deviceId"; public FaceUserState(Context ctx, int userId) { super(ctx, userId); public FaceUserState(Context ctx, int userId, String fileName) { super(ctx, userId, fileName); } @Override Loading @@ -60,11 +59,6 @@ public class FaceUserState extends BiometricUserState<Face> { return TAG_FACES; } @Override protected String getBiometricFile() { return FACE_FILE; } @Override protected int getNameTemplateResource() { return com.android.internal.R.string.face_name_template; Loading
services/core/java/com/android/server/biometrics/sensors/face/FaceUtils.java +46 −10 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.biometrics.sensors.face; import android.annotation.Nullable; import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.face.Face; Loading @@ -33,21 +34,56 @@ import java.util.List; public class FaceUtils implements BiometricUtils<Face> { private static final Object sInstanceLock = new Object(); private static FaceUtils sInstance; // Map<SensorId, FaceUtils> private static SparseArray<FaceUtils> sInstances; private static final String LEGACY_FACE_FILE = "settings_face.xml"; @GuardedBy("this") private final SparseArray<FaceUserState> mUsers = new SparseArray<>(); private final SparseArray<FaceUserState> mUserStates; private final String mFileName; public static FaceUtils getInstance() { public static FaceUtils getInstance(int sensorId) { // Specify a null fileName to use an auto-generated sensorId-specific filename. return getInstance(sensorId, null /* fileName */); } /** * Retrieves an instance for the specified sensorId. If the fileName is null, a default * filename (e.g. settings_face_<sensorId>.xml will be generated. * * Specifying an explicit fileName allows for backward compatibility with legacy devices, * where everything is stored in settings_face.xml. */ private static FaceUtils getInstance(int sensorId, @Nullable String fileName) { final FaceUtils utils; synchronized (sInstanceLock) { if (sInstance == null) { sInstance = new FaceUtils(); if (sInstances == null) { sInstances = new SparseArray<>(); } if (sInstances.get(sensorId) == null) { if (fileName == null) { fileName = "settings_face_" + sensorId + ".xml"; } sInstances.put(sensorId, new FaceUtils(fileName)); } return sInstance; utils = sInstances.get(sensorId); } return utils; } /** * Legacy getter for {@link android.hardware.biometrics.face.V1_0} and its extended subclasses, * which do not support a well defined sensorId from the HAL. */ public static FaceUtils getInstance() { // Note that sensorId for legacy services can be hard-coded to 0 since it's only used // to index into the sensor states map. return getInstance(0 /* sensorId */, LEGACY_FACE_FILE); } private FaceUtils() { private FaceUtils(String fileName) { mUserStates = new SparseArray<>(); mFileName = fileName; } @Override Loading Loading @@ -81,10 +117,10 @@ public class FaceUtils implements BiometricUtils<Face> { private FaceUserState getStateForUser(Context ctx, int userId) { synchronized (this) { FaceUserState state = mUsers.get(userId); FaceUserState state = mUserStates.get(userId); if (state == null) { state = new FaceUserState(ctx, userId); mUsers.put(userId, state); state = new FaceUserState(ctx, userId, mFileName); mUserStates.put(userId, state); } return state; } Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintUserState.java +2 −8 Original line number Diff line number Diff line Loading @@ -42,7 +42,6 @@ import java.util.ArrayList; public class FingerprintUserState extends BiometricUserState<Fingerprint> { private static final String TAG = "FingerprintState"; private static final String FINGERPRINT_FILE = "settings_fingerprint.xml"; private static final String TAG_FINGERPRINTS = "fingerprints"; private static final String TAG_FINGERPRINT = "fingerprint"; Loading @@ -51,8 +50,8 @@ public class FingerprintUserState extends BiometricUserState<Fingerprint> { private static final String ATTR_FINGER_ID = "fingerId"; private static final String ATTR_DEVICE_ID = "deviceId"; public FingerprintUserState(Context context, int userId) { super(context, userId); public FingerprintUserState(Context context, int userId, String fileName) { super(context, userId, fileName); } @Override Loading @@ -60,11 +59,6 @@ public class FingerprintUserState extends BiometricUserState<Fingerprint> { return TAG_FINGERPRINTS; } @Override protected String getBiometricFile() { return FINGERPRINT_FILE; } @Override protected int getNameTemplateResource() { return com.android.internal.R.string.fingerprint_name_template; Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintUtils.java +49 −11 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ package com.android.server.biometrics.sensors.fingerprint; import android.annotation.Nullable; import android.content.Context; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.fingerprint.Fingerprint; import android.text.TextUtils; import android.util.SparseArray; Loading @@ -33,21 +33,59 @@ import java.util.List; public class FingerprintUtils implements BiometricUtils<Fingerprint> { private static final Object sInstanceLock = new Object(); private static FingerprintUtils sInstance; // Map<SensorId, FingerprintUtils> private static SparseArray<FingerprintUtils> sInstances; private static final String LEGACY_FINGERPRINT_FILE = "settings_fingerprint.xml"; @GuardedBy("this") private final SparseArray<FingerprintUserState> mUsers = new SparseArray<>(); private final SparseArray<FingerprintUserState> mUserStates; private final String mFileName; public static FingerprintUtils getInstance() { /** * Retrieves an instance for the specified sensorId. */ public static FingerprintUtils getInstance(int sensorId) { // Specify a null fileName to use an auto-generated sensorId-specific filename. return getInstance(sensorId, null /* fileName */); } /** * Retrieves an instance for the specified sensorId. If the fileName is null, a default * filename (e.g. settings_fingerprint_<sensorId>.xml will be generated. * * Specifying an explicit fileName allows for backward compatibility with legacy devices, * where everything is stored in settings_fingerprint.xml. */ private static FingerprintUtils getInstance(int sensorId, @Nullable String fileName) { final FingerprintUtils utils; synchronized (sInstanceLock) { if (sInstance == null) { sInstance = new FingerprintUtils(); if (sInstances == null) { sInstances = new SparseArray<>(); } if (sInstances.get(sensorId) == null) { if (fileName == null) { fileName = "settings_fingerprint_" + sensorId + ".xml"; } return sInstance; sInstances.put(sensorId, new FingerprintUtils(fileName)); } utils = sInstances.get(sensorId); } return utils; } /** * Legacy getter for {@link android.hardware.biometrics.fingerprint.V2_1} ands its extended * subclasses, which do not support a well defined sensorId from the HAL. */ public static FingerprintUtils getInstance() { // Note that sensorId for legacy services can be hard-coded to 0 since it's only used // to index into the sensor states map. return getInstance(0 /* sensorId */, LEGACY_FINGERPRINT_FILE); } private FingerprintUtils() { private FingerprintUtils(String fileName) { mUserStates = new SparseArray<>(); mFileName = fileName; } @Override Loading Loading @@ -82,10 +120,10 @@ public class FingerprintUtils implements BiometricUtils<Fingerprint> { private FingerprintUserState getStateForUser(Context ctx, int userId) { synchronized (this) { FingerprintUserState state = mUsers.get(userId); FingerprintUserState state = mUserStates.get(userId); if (state == null) { state = new FingerprintUserState(ctx, userId); mUsers.put(userId, state); state = new FingerprintUserState(ctx, userId, mFileName); mUserStates.put(userId, state); } return state; } Loading