Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 10ae7f2e authored by Ilya Matyukhin's avatar Ilya Matyukhin
Browse files

Propagate PointerContext for UDFPS touch events

Bug: 218388821
Test: atest FrameworksCoreTests:android.util.RotationUtilsTest
Test: atest FrameworksServicesTests:com.android.server.biometrics
Test: atest SystemUITests:com.android.systemui.biometrics
Change-Id: If41ae8d30c702c1482c0ab5617014d93a656526b
parent bdde7f69
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -95,8 +95,11 @@ filegroup {
        ":platform-compat-native-aidl",

        // AIDL sources from external directories
        ":android.hardware.biometrics.common-V3-java-source",
        ":android.hardware.biometrics.fingerprint-V3-java-source",
        ":android.hardware.gnss-V2-java-source",
        ":android.hardware.graphics.common-V3-java-source",
        ":android.hardware.keymaster-V4-java-source",
        ":android.hardware.security.keymint-V2-java-source",
        ":android.hardware.security.secureclock-V1-java-source",
        ":android.hardware.tv.tuner-V1-java-source",
@@ -332,7 +335,10 @@ java_defaults {
            "packages/modules/Bluetooth/framework/aidl-export",
            "packages/modules/Connectivity/framework/aidl-export",
            "packages/modules/Media/apex/aidl/stable",
            "hardware/interfaces/biometrics/common/aidl",
            "hardware/interfaces/biometrics/fingerprint/aidl",
            "hardware/interfaces/graphics/common/aidl",
            "hardware/interfaces/keymaster/aidl",
        ],
    },
    dxflags: [
@@ -617,7 +623,10 @@ stubs_defaults {
            "packages/modules/Bluetooth/framework/aidl-export",
            "packages/modules/Connectivity/framework/aidl-export",
            "packages/modules/Media/apex/aidl/stable",
            "hardware/interfaces/biometrics/common/aidl",
            "hardware/interfaces/biometrics/fingerprint/aidl",
            "hardware/interfaces/graphics/common/aidl",
            "hardware/interfaces/keymaster/aidl",
        ],
    },
    // These are libs from framework-internal-utils that are required (i.e. being referenced)
+11 −2
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import android.hardware.biometrics.BiometricStateListener;
import android.hardware.biometrics.BiometricTestSession;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.hardware.biometrics.SensorProperties;
import android.hardware.biometrics.fingerprint.PointerContext;
import android.os.Binder;
import android.os.Build;
import android.os.CancellationSignal;
@@ -959,8 +960,14 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
            return;
        }

        final PointerContext pc = new PointerContext();
        pc.x = (int) x;
        pc.y = (int) y;
        pc.minor = minor;
        pc.major = major;

        try {
            mService.onPointerDown(requestId, sensorId, x, y, minor, major);
            mService.onPointerDown(requestId, sensorId, pc);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -976,8 +983,10 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
            return;
        }

        final PointerContext pc = new PointerContext();

        try {
            mService.onPointerUp(requestId, sensorId);
            mService.onPointerUp(requestId, sensorId, pc);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+3 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.hardware.biometrics.IBiometricStateListener;
import android.hardware.biometrics.IInvalidationCallback;
import android.hardware.biometrics.ITestSession;
import android.hardware.biometrics.ITestSessionCallback;
import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.fingerprint.IFingerprintClientActiveCallback;
import android.hardware.fingerprint.IFingerprintAuthenticatorsRegisteredCallback;
import android.hardware.fingerprint.IFingerprintServiceReceiver;
@@ -184,11 +185,11 @@ interface IFingerprintService {

    // Notifies about a finger touching the sensor area.
    @EnforcePermission("USE_BIOMETRIC_INTERNAL")
    void onPointerDown(long requestId, int sensorId, int x, int y, float minor, float major);
    void onPointerDown(long requestId, int sensorId, in PointerContext pc);

    // Notifies about a finger leaving the sensor area.
    @EnforcePermission("USE_BIOMETRIC_INTERNAL")
    void onPointerUp(long requestId, int sensorId);
    void onPointerUp(long requestId, int sensorId, in PointerContext pc);

    // Notifies about the fingerprint UI being ready (e.g. HBM illumination is enabled).
    @EnforcePermission("USE_BIOMETRIC_INTERNAL")
+1 −2
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ java_library_static {
    name: "services.core.unboosted",
    defaults: ["platform_service_defaults"],
    srcs: [
        ":android.hardware.biometrics.face-V2-java-source",
        ":android.hardware.biometrics.face-V3-java-source",
        ":statslog-art-java-gen",
        ":statslog-contexthub-java-gen",
        ":services.core-sources",
@@ -161,7 +161,6 @@ java_library_static {
        "android.hardware.weaver-V1.0-java",
        "android.hardware.biometrics.face-V1.0-java",
        "android.hardware.biometrics.fingerprint-V2.3-java",
        "android.hardware.biometrics.fingerprint-V2-java",
        "android.hardware.oemlock-V1.0-java",
        "android.hardware.configstore-V1.1-java",
        "android.hardware.ir-V1-java",
+6 −7
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import android.hardware.biometrics.IInvalidationCallback;
import android.hardware.biometrics.ITestSession;
import android.hardware.biometrics.ITestSessionCallback;
import android.hardware.biometrics.fingerprint.IFingerprint;
import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
@@ -881,29 +882,27 @@ public class FingerprintService extends SystemService {

        @android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
        @Override
        public void onPointerDown(long requestId, int sensorId, int x, int y,
                float minor, float major) {
        public void onPointerDown(long requestId, int sensorId, PointerContext pc) {
            super.onPointerDown_enforcePermission();

            final ServiceProvider provider = mRegistry.getProviderForSensor(sensorId);
            if (provider == null) {
                Slog.w(TAG, "No matching provider for onFingerDown, sensorId: " + sensorId);
                return;
            }
            provider.onPointerDown(requestId, sensorId, x, y, minor, major);
            provider.onPointerDown(requestId, sensorId, pc);
        }

        @android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
        @Override
        public void onPointerUp(long requestId, int sensorId) {
            super.onPointerUp_enforcePermission();

        public void onPointerUp(long requestId, int sensorId, PointerContext pc) {
            super.onPointerUp_enforcePermission();
            final ServiceProvider provider = mRegistry.getProviderForSensor(sensorId);
            if (provider == null) {
                Slog.w(TAG, "No matching provider for onFingerUp, sensorId: " + sensorId);
                return;
            }
            provider.onPointerUp(requestId, sensorId);
            provider.onPointerUp(requestId, sensorId, pc);
        }

        @android.annotation.EnforcePermission(android.Manifest.permission.USE_BIOMETRIC_INTERNAL)
Loading