Merge "[DO NOT MERGE] Handling power press messages sent from the HAL" into tm-qpr-dev-plus-aosp

This commit is contained in:
Diya Bera
2023-02-14 01:39:42 +00:00
committed by Android (Google) Code Review
6 changed files with 61 additions and 12 deletions

View File

@@ -6038,6 +6038,12 @@
<string-array translatable="false" name="config_fontManagerServiceCerts"> <string-array translatable="false" name="config_fontManagerServiceCerts">
</string-array> </string-array>
<!-- Whether the vendor power press code need to be mapped. -->
<bool name="config_powerPressMapping">false</bool>
<!-- Power press vendor code. -->
<integer name="config_powerPressCode">-1</integer>
<!-- Whether to show weather on the lock screen by default. --> <!-- Whether to show weather on the lock screen by default. -->
<bool name="config_lockscreenWeatherEnabledByDefault">false</bool> <bool name="config_lockscreenWeatherEnabledByDefault">false</bool>
</resources> </resources>

View File

@@ -2644,6 +2644,8 @@
<java-symbol type="integer" name="config_sideFpsToastTimeout"/> <java-symbol type="integer" name="config_sideFpsToastTimeout"/>
<java-symbol type="integer" name="config_sidefpsSkipWaitForPowerAcquireMessage"/> <java-symbol type="integer" name="config_sidefpsSkipWaitForPowerAcquireMessage"/>
<java-symbol type="integer" name="config_sidefpsSkipWaitForPowerVendorAcquireMessage"/> <java-symbol type="integer" name="config_sidefpsSkipWaitForPowerVendorAcquireMessage"/>
<java-symbol type="integer" name="config_powerPressCode"/>
<java-symbol type="bool" name="config_powerPressMapping"/>
<!-- Clickable toast used during sidefps enrollment --> <!-- Clickable toast used during sidefps enrollment -->
<java-symbol type="layout" name="side_fps_toast" /> <java-symbol type="layout" name="side_fps_toast" />

View File

@@ -228,7 +228,16 @@ class FingerprintAuthenticationClient extends AuthenticationClient<AidlSession>
@Override @Override
public void onError(int errorCode, int vendorCode) { public void onError(int errorCode, int vendorCode) {
super.onError(errorCode, vendorCode); if (getContext().getResources().getBoolean(R.bool.config_powerPressMapping)
&& errorCode == BiometricFingerprintConstants.FINGERPRINT_ERROR_VENDOR
&& vendorCode == getContext().getResources()
.getInteger(R.integer.config_powerPressCode)) {
// Translating vendor code to internal code
super.onError(BiometricFingerprintConstants.BIOMETRIC_ERROR_POWER_PRESSED,
0 /* vendorCode */);
} else {
super.onError(errorCode, vendorCode);
}
if (errorCode == BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBRATION) { if (errorCode == BiometricFingerprintConstants.FINGERPRINT_ERROR_BAD_CALIBRATION) {
BiometricNotificationUtils.showBadCalibrationNotification(getContext()); BiometricNotificationUtils.showBadCalibrationNotification(getContext());

View File

@@ -37,6 +37,7 @@ import android.os.RemoteException;
import android.util.Slog; import android.util.Slog;
import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager;
import com.android.internal.R;
import com.android.server.biometrics.HardwareAuthTokenUtils; import com.android.server.biometrics.HardwareAuthTokenUtils;
import com.android.server.biometrics.log.BiometricContext; import com.android.server.biometrics.log.BiometricContext;
import com.android.server.biometrics.log.BiometricLogger; import com.android.server.biometrics.log.BiometricLogger;
@@ -143,7 +144,17 @@ class FingerprintEnrollClient extends EnrollClient<AidlSession> implements Udfps
} }
}); });
mCallback.onBiometricAction(BiometricStateListener.ACTION_SENSOR_TOUCH); mCallback.onBiometricAction(BiometricStateListener.ACTION_SENSOR_TOUCH);
super.onAcquired(acquiredInfo, vendorCode);
if (getContext().getResources().getBoolean(R.bool.config_powerPressMapping)
&& acquiredInfo == BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_VENDOR
&& vendorCode == getContext().getResources()
.getInteger(R.integer.config_powerPressCode)) {
// Translating vendor code to internal code
super.onAcquired(BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED,
0 /* vendorCode */);
} else {
super.onAcquired(acquiredInfo, vendorCode);
}
} }
@Override @Override
@@ -270,8 +281,5 @@ class FingerprintEnrollClient extends EnrollClient<AidlSession> implements Udfps
} }
@Override @Override
public void onPowerPressed() { public void onPowerPressed() {}
onAcquired(BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED,
0 /* vendorCode */);
}
} }

View File

@@ -16,6 +16,8 @@
package com.android.server.biometrics.sensors.fingerprint.aidl; package com.android.server.biometrics.sensors.fingerprint.aidl;
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_VENDOR;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -35,6 +37,7 @@ import static org.mockito.Mockito.when;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.ActivityTaskManager; import android.app.ActivityTaskManager;
import android.content.ComponentName; import android.content.ComponentName;
import android.hardware.biometrics.BiometricFingerprintConstants;
import android.hardware.biometrics.BiometricManager; import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.common.ICancellationSignal; import android.hardware.biometrics.common.ICancellationSignal;
import android.hardware.biometrics.common.OperationContext; import android.hardware.biometrics.common.OperationContext;
@@ -54,6 +57,7 @@ import android.testing.TestableContext;
import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry;
import com.android.internal.R;
import com.android.server.biometrics.log.BiometricContext; import com.android.server.biometrics.log.BiometricContext;
import com.android.server.biometrics.log.BiometricLogger; import com.android.server.biometrics.log.BiometricLogger;
import com.android.server.biometrics.log.CallbackWithProbe; import com.android.server.biometrics.log.CallbackWithProbe;
@@ -335,6 +339,21 @@ public class FingerprintAuthenticationClientTest {
showHideOverlay(c -> c.onLockoutPermanent()); showHideOverlay(c -> c.onLockoutPermanent());
} }
@Test
public void testPowerPressForwardsErrorMessage() throws RemoteException {
final FingerprintAuthenticationClient client = createClient();
final int testVendorPowerPressCode = 1;
when(mContext.getOrCreateTestableResources().getResources()
.getBoolean(R.bool.config_powerPressMapping)).thenReturn(true);
when(mContext.getOrCreateTestableResources().getResources()
.getInteger(R.integer.config_powerPressCode)).thenReturn(testVendorPowerPressCode);
client.onError(FINGERPRINT_ERROR_VENDOR, testVendorPowerPressCode);
verify(mClientMonitorCallbackConverter).onError(anyInt(), anyInt(),
eq(BiometricFingerprintConstants.BIOMETRIC_ERROR_POWER_PRESSED), anyInt());
}
private void showHideOverlay(Consumer<FingerprintAuthenticationClient> block) private void showHideOverlay(Consumer<FingerprintAuthenticationClient> block)
throws RemoteException { throws RemoteException {
final FingerprintAuthenticationClient client = createClient(); final FingerprintAuthenticationClient client = createClient();

View File

@@ -16,7 +16,7 @@
package com.android.server.biometrics.sensors.fingerprint.aidl; package com.android.server.biometrics.sensors.fingerprint.aidl;
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_VENDOR;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -28,10 +28,10 @@ import static org.mockito.Mockito.any;
import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.same; import static org.mockito.Mockito.same;
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.BiometricFingerprintConstants;
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;
@@ -48,6 +48,7 @@ import android.testing.TestableContext;
import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry;
import com.android.internal.R;
import com.android.server.biometrics.log.BiometricContext; import com.android.server.biometrics.log.BiometricContext;
import com.android.server.biometrics.log.BiometricLogger; import com.android.server.biometrics.log.BiometricLogger;
import com.android.server.biometrics.log.CallbackWithProbe; import com.android.server.biometrics.log.CallbackWithProbe;
@@ -66,7 +67,6 @@ 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
@@ -258,11 +258,16 @@ public class FingerprintEnrollClientTest {
@Test @Test
public void testPowerPressForwardsAcquireMessage() throws RemoteException { public void testPowerPressForwardsAcquireMessage() throws RemoteException {
final FingerprintEnrollClient client = createClient(); final FingerprintEnrollClient client = createClient();
client.start(mCallback); final int testVendorPowerPressCode = 1;
client.onPowerPressed(); when(mContext.getOrCreateTestableResources().getResources()
.getBoolean(R.bool.config_powerPressMapping)).thenReturn(true);
when(mContext.getOrCreateTestableResources().getResources()
.getInteger(R.integer.config_powerPressCode)).thenReturn(testVendorPowerPressCode);
client.onAcquired(FINGERPRINT_ACQUIRED_VENDOR, testVendorPowerPressCode);
verify(mClientMonitorCallbackConverter).onAcquired(anyInt(), verify(mClientMonitorCallbackConverter).onAcquired(anyInt(),
eq(FINGERPRINT_ACQUIRED_POWER_PRESSED), anyInt()); eq(BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_POWER_PRESSED), anyInt());
} }
private void showHideOverlay(Consumer<FingerprintEnrollClient> block) private void showHideOverlay(Consumer<FingerprintEnrollClient> block)