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

Commit 741663a3 authored by Kevin Chyn's avatar Kevin Chyn Committed by Android (Google) Code Review
Browse files

Merge "Add challenge-less resetLockout for new AIDL interfaces" into sc-dev

parents 4e942668 7f59ef96
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -393,15 +393,14 @@ public class FaceService extends SystemService implements BiometricServiceCallba
                final IFaceServiceReceiver receiver, final String opPackageName) {
            Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);

            final Pair<Integer, ServiceProvider> provider = getSingleProvider();
            if (provider == null) {
                Slog.w(TAG, "Null provider for removeAll");
                return;
            }

            provider.second.scheduleRemoveAll(provider.first, token, userId, receiver,
            for (ServiceProvider provider : mServiceProviders) {
                List<FaceSensorPropertiesInternal> props = provider.getSensorProperties();
                for (FaceSensorPropertiesInternal prop : props) {
                    provider.scheduleRemoveAll(prop.sensorId, token, userId, receiver,
                            opPackageName);
                }
            }
        }

        @Override // Binder call
        public void addLockoutResetCallback(final IBiometricServiceLockoutResetCallback callback,
+6 −2
Original line number Diff line number Diff line
@@ -23,11 +23,11 @@ import android.hardware.biometrics.face.V1_0.IBiometricsFaceClientCallback;
import android.hardware.biometrics.face.V1_0.OptionalBool;
import android.hardware.biometrics.face.V1_0.OptionalUint64;
import android.hardware.biometrics.face.V1_0.Status;
import android.os.NativeHandle;
import android.os.RemoteException;
import android.util.Slog;

import java.util.ArrayList;
import java.util.Arrays;

public class TestHal extends IBiometricsFace.Stub {
    private static final String TAG = "face.hidl.TestHal";
@@ -107,8 +107,12 @@ public class TestHal extends IBiometricsFace.Stub {
    }

    @Override
    public int remove(int faceId) {
    public int remove(int faceId) throws RemoteException {
        Slog.w(TAG, "remove");
        if (mCallback != null) {
            mCallback.onRemoved(0 /* deviceId */, new ArrayList<Integer>(Arrays.asList(faceId)),
                    0 /* userId */);
        }
        return 0;
    }

+6 −6
Original line number Diff line number Diff line
@@ -506,14 +506,14 @@ public class FingerprintService extends SystemService implements BiometricServic
                final IFingerprintServiceReceiver receiver, final String opPackageName) {
            Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);

            final Pair<Integer, ServiceProvider> provider = getSingleProvider();
            if (provider == null) {
                Slog.w(TAG, "Null provider for removeAll");
                return;
            }
            provider.second.scheduleRemoveAll(provider.first, token, receiver, userId,
            for (ServiceProvider provider : mServiceProviders) {
                List<FingerprintSensorPropertiesInternal> props = provider.getSensorProperties();
                for (FingerprintSensorPropertiesInternal prop : props) {
                    provider.scheduleRemoveAll(prop.sensorId, token, receiver, userId,
                            opPackageName);
                }
            }
        }

        @Override // Binder call
        public void addLockoutResetCallback(final IBiometricServiceLockoutResetCallback callback,
+3 −1
Original line number Diff line number Diff line
@@ -527,7 +527,9 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
        // Fingerprint2.1 keeps track of lockout in the framework. Let's just do it on the handler
        // thread.
        mHandler.post(() -> {
            mLockoutTracker.resetFailedAttemptsForUser(true /* clearAttemptCounter */, userId);
            final FingerprintResetLockoutClient client = new FingerprintResetLockoutClient(mContext,
                    userId, mContext.getOpPackageName(), sensorId, mLockoutTracker);
            mScheduler.scheduleClientMonitor(client);
        });
    }

+54 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.server.biometrics.sensors.fingerprint.hidl;

import android.annotation.NonNull;
import android.content.Context;
import android.hardware.biometrics.BiometricsProtoEnums;

import com.android.server.biometrics.BiometricsProto;
import com.android.server.biometrics.sensors.BaseClientMonitor;

/**
 * Clears lockout, which is handled in the framework (and not the HAL) for the
 * IBiometricsFingerprint@2.1 interface.
 */
public class FingerprintResetLockoutClient extends BaseClientMonitor {

    @NonNull final LockoutFrameworkImpl mLockoutTracker;

    public FingerprintResetLockoutClient(@NonNull Context context, int userId,
            @NonNull String owner, int sensorId, @NonNull LockoutFrameworkImpl lockoutTracker) {
        super(context, null /* token */, null /* listener */, userId, owner, 0 /* cookie */,
                sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN,
                BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
        mLockoutTracker = lockoutTracker;
    }

    @Override
    public void start(@NonNull Callback callback) {
        super.start(callback);
        mLockoutTracker.resetFailedAttemptsForUser(true /* clearAttemptCounter */,
                getTargetUserId());
        callback.onClientFinished(this, true /* success */);
    }

    @Override
    public int getProtoEnum() {
        return BiometricsProto.CM_RESET_LOCKOUT;
    }
}
Loading