Merge "Add destroy method to metric probes." into tm-dev
This commit is contained in:
@@ -53,14 +53,26 @@ public class BiometricLogger {
|
|||||||
private boolean mShouldLogMetrics = true;
|
private boolean mShouldLogMetrics = true;
|
||||||
|
|
||||||
private class ALSProbe implements Probe {
|
private class ALSProbe implements Probe {
|
||||||
|
private boolean mDestroyed = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enable() {
|
public synchronized void enable() {
|
||||||
setLightSensorLoggingEnabled(getAmbientLightSensor(mSensorManager));
|
if (!mDestroyed) {
|
||||||
|
setLightSensorLoggingEnabled(getAmbientLightSensor(mSensorManager));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void disable() {
|
public synchronized void disable() {
|
||||||
setLightSensorLoggingEnabled(null);
|
if (!mDestroyed) {
|
||||||
|
setLightSensorLoggingEnabled(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void destroy() {
|
||||||
|
disable();
|
||||||
|
mDestroyed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class CallbackWithProbe<T extends Probe> implements ClientMonitorCallback
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) {
|
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) {
|
||||||
mProbe.disable();
|
mProbe.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
|||||||
@@ -27,4 +27,6 @@ public interface Probe {
|
|||||||
void enable();
|
void enable();
|
||||||
/** Stop sampling data. */
|
/** Stop sampling data. */
|
||||||
void disable();
|
void disable();
|
||||||
|
/** Same as {@link #disable()} and ignores all future calls to this probe. */
|
||||||
|
void destroy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import static org.mockito.Mockito.anyInt;
|
|||||||
import static org.mockito.Mockito.anyLong;
|
import static org.mockito.Mockito.anyLong;
|
||||||
import static org.mockito.Mockito.eq;
|
import static org.mockito.Mockito.eq;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
|
import static org.mockito.Mockito.reset;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -250,4 +251,18 @@ public class BiometricLoggerTest {
|
|||||||
callback.onClientFinished(mClient, true /* success */);
|
callback.onClientFinished(mClient, true /* success */);
|
||||||
verify(mSensorManager, never()).registerListener(any(), any(), anyInt());
|
verify(mSensorManager, never()).registerListener(any(), any(), anyInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testALSCallbackDestroyed() {
|
||||||
|
mLogger = createLogger();
|
||||||
|
final CallbackWithProbe<Probe> callback =
|
||||||
|
mLogger.createALSCallback(true /* startWithClient */);
|
||||||
|
|
||||||
|
callback.onClientStarted(mClient);
|
||||||
|
callback.onClientFinished(mClient, false /* success */);
|
||||||
|
|
||||||
|
reset(mSensorManager);
|
||||||
|
callback.getProbe().enable();
|
||||||
|
verify(mSensorManager, never()).registerListener(any(), any(), anyInt());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,9 +31,11 @@ import static org.mockito.Mockito.times;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.hardware.biometrics.BiometricManager;
|
||||||
import android.hardware.biometrics.common.OperationContext;
|
import android.hardware.biometrics.common.OperationContext;
|
||||||
import android.hardware.biometrics.fingerprint.ISession;
|
import android.hardware.biometrics.fingerprint.ISession;
|
||||||
import android.hardware.biometrics.fingerprint.PointerContext;
|
import android.hardware.biometrics.fingerprint.PointerContext;
|
||||||
|
import android.hardware.fingerprint.Fingerprint;
|
||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||||
import android.hardware.fingerprint.ISidefpsController;
|
import android.hardware.fingerprint.ISidefpsController;
|
||||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||||
@@ -63,12 +65,14 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.junit.MockitoJUnit;
|
import org.mockito.junit.MockitoJUnit;
|
||||||
import org.mockito.junit.MockitoRule;
|
import org.mockito.junit.MockitoRule;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@Presubmit
|
@Presubmit
|
||||||
@SmallTest
|
@SmallTest
|
||||||
public class FingerprintAuthenticationClientTest {
|
public class FingerprintAuthenticationClientTest {
|
||||||
|
|
||||||
|
private static final int SENSOR_ID = 4;
|
||||||
private static final int USER_ID = 8;
|
private static final int USER_ID = 8;
|
||||||
private static final long OP_ID = 7;
|
private static final long OP_ID = 7;
|
||||||
private static final long REQUEST_ID = 88;
|
private static final long REQUEST_ID = 88;
|
||||||
@@ -93,6 +97,8 @@ public class FingerprintAuthenticationClientTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private BiometricContext mBiometricContext;
|
private BiometricContext mBiometricContext;
|
||||||
@Mock
|
@Mock
|
||||||
|
private BiometricManager mBiometricManager;
|
||||||
|
@Mock
|
||||||
private LockoutCache mLockoutCache;
|
private LockoutCache mLockoutCache;
|
||||||
@Mock
|
@Mock
|
||||||
private IUdfpsOverlayController mUdfpsOverlayController;
|
private IUdfpsOverlayController mUdfpsOverlayController;
|
||||||
@@ -118,6 +124,7 @@ public class FingerprintAuthenticationClientTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
|
mContext.addMockSystemService(BiometricManager.class, mBiometricManager);
|
||||||
when(mBiometricLogger.createALSCallback(anyBoolean())).thenAnswer(i ->
|
when(mBiometricLogger.createALSCallback(anyBoolean())).thenAnswer(i ->
|
||||||
new CallbackWithProbe<>(mLuxProbe, i.getArgument(0)));
|
new CallbackWithProbe<>(mLuxProbe, i.getArgument(0)));
|
||||||
when(mBiometricContext.updateContext(any(), anyBoolean())).thenAnswer(
|
when(mBiometricContext.updateContext(any(), anyBoolean())).thenAnswer(
|
||||||
@@ -211,6 +218,18 @@ public class FingerprintAuthenticationClientTest {
|
|||||||
verify(mLuxProbe, times(2)).enable();
|
verify(mLuxProbe, times(2)).enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void luxProbeWhenFingerDown_unlessDestroyed() throws RemoteException {
|
||||||
|
final FingerprintAuthenticationClient client = createClient();
|
||||||
|
client.start(mCallback);
|
||||||
|
client.onAuthenticated(new Fingerprint("name", 2 /* enrollmentId */, SENSOR_ID),
|
||||||
|
true /* authenticated */, new ArrayList<>());
|
||||||
|
verify(mLuxProbe).destroy();
|
||||||
|
|
||||||
|
client.onAcquired(2, 0);
|
||||||
|
verify(mLuxProbe, never()).enable();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void notifyHalWhenContextChanges() throws RemoteException {
|
public void notifyHalWhenContextChanges() throws RemoteException {
|
||||||
final FingerprintAuthenticationClient client = createClient();
|
final FingerprintAuthenticationClient client = createClient();
|
||||||
@@ -284,6 +303,6 @@ public class FingerprintAuthenticationClientTest {
|
|||||||
true /* isStrongBiometric */,
|
true /* isStrongBiometric */,
|
||||||
null /* taskStackListener */, mLockoutCache,
|
null /* taskStackListener */, mLockoutCache,
|
||||||
mUdfpsOverlayController, mSideFpsController,
|
mUdfpsOverlayController, mSideFpsController,
|
||||||
false /* allowBackgroundAuthentication */, mSensorProps);
|
true /* allowBackgroundAuthentication */, mSensorProps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user