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

Commit e3bf23be authored by Phil Weaver's avatar Phil Weaver Committed by Android (Google) Code Review
Browse files

Merge "Verify fingerprint exists before using it"

parents 278028e9 7917a2f0
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -52,6 +52,8 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;

import static android.content.pm.PackageManager.FEATURE_FINGERPRINT;

/**
 * Accessibility services should only be used to assist users with disabilities in using
 * Android devices and apps. They run in the background and receive callbacks by the system
@@ -618,7 +620,8 @@ public abstract class AccessibilityService extends Service {
     */
    @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT)
    public final @Nullable FingerprintGestureController getFingerprintGestureController() {
        if (mFingerprintGestureController == null) {
        if ((mFingerprintGestureController == null)
                && getPackageManager().hasSystemFeature(FEATURE_FINGERPRINT)) {
            FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class);
            if ((fingerprintManager != null) && fingerprintManager.isHardwareDetected()) {
                AccessibilityServiceInfo info = getServiceInfo();
+7 −2
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import static android.content.pm.PackageManager.FEATURE_FINGERPRINT;

/**
 * This class describes an {@link AccessibilityService}. The system notifies an
 * {@link AccessibilityService} for {@link android.view.accessibility.AccessibilityEvent}s
@@ -1042,8 +1044,7 @@ public class AccessibilityServiceInfo implements Parcelable {
                    new CapabilityInfo(CAPABILITY_CAN_PERFORM_GESTURES,
                            R.string.capability_title_canPerformGestures,
                            R.string.capability_desc_canPerformGestures));
            if ((context == null)
                    || context.getSystemService(FingerprintManager.class).isHardwareDetected()) {
            if ((context == null) || fingerprintAvailable(context)) {
                sAvailableCapabilityInfos.put(CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES,
                        new CapabilityInfo(CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES,
                                R.string.capability_title_canCaptureFingerprintGestures,
@@ -1053,6 +1054,10 @@ public class AccessibilityServiceInfo implements Parcelable {
        return sAvailableCapabilityInfos;
    }

    private static boolean fingerprintAvailable(Context context) {
        return context.getPackageManager().hasSystemFeature(FEATURE_FINGERPRINT)
                && context.getSystemService(FingerprintManager.class).isHardwareDetected();
    }
    /**
     * @hide
     */
+19 −16
Original line number Diff line number Diff line
@@ -2006,8 +2006,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
    private void updateFingerprintGestureHandling(UserState userState) {
        final List<Service> services;
        synchronized (mLock) {
            // Only create the controller when a service wants to use the feature
            services = userState.mBoundServices;
            if ((mFingerprintGestureDispatcher == null)
                    &&  mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
                // Only create the controller when a service wants to use the feature
                int numServices = services.size();
                for (int i = 0; i < numServices; i++) {
                    if (services.get(i).isCapturingFingerprintGestures()) {
@@ -2027,6 +2029,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
                    }
                }
            }
        }
        if (mFingerprintGestureDispatcher != null) {
            mFingerprintGestureDispatcher.updateClientList(services);
        }