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

Commit 2628ce5b authored by Grace Cheng's avatar Grace Cheng
Browse files

Adding counter logging instances of multiple BiometricLogger ALS subscriptions

Adds static counter logging a stack trace when ALS subscription counter
is non-zero after unsubscribing for debugging purposes. Also fixes a typo in
UdfpsController.

Bug: 233656407
Test: Observe logcat
Change-Id: I9362b119876bb0205fb23555250b8fbc234119fa
parent dbdc3922
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -609,7 +609,7 @@ public class UdfpsController implements DozeReceiver {
            @NonNull SystemUIDialogManager dialogManager,
            @NonNull LatencyTracker latencyTracker,
            @NonNull ActivityLaunchAnimator activityLaunchAnimator,
            @NonNull Optional<AlternateUdfpsTouchProvider> aternateTouchProvider,
            @NonNull Optional<AlternateUdfpsTouchProvider> alternateTouchProvider,
            @BiometricsBackground Executor biometricsExecutor) {
        mContext = context;
        mExecution = execution;
@@ -639,7 +639,7 @@ public class UdfpsController implements DozeReceiver {
        mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController;
        mLatencyTracker = latencyTracker;
        mActivityLaunchAnimator = activityLaunchAnimator;
        mAlternateTouchProvider = aternateTouchProvider.orElse(null);
        mAlternateTouchProvider = alternateTouchProvider.orElse(null);
        mBiometricExecutor = biometricsExecutor;

        mOrientationListener = new BiometricDisplayListener(
+28 −2
Original line number Diff line number Diff line
@@ -28,8 +28,10 @@ import android.hardware.biometrics.BiometricsProtoEnums;
import android.hardware.biometrics.common.OperationContext;
import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager;
import android.util.Log;
import android.util.Slog;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.FrameworkStatsLog;
import com.android.server.biometrics.Utils;
@@ -41,6 +43,10 @@ public class BiometricLogger {

    public static final String TAG = "BiometricLogger";
    public static final boolean DEBUG = false;
    private static final Object sLock = new Object();

    @GuardedBy("sLock")
    private static int sAlsCounter;

    private final int mStatsModality;
    private final int mStatsAction;
@@ -345,13 +351,33 @@ public class BiometricLogger {
            if (!mLightSensorEnabled) {
                mLightSensorEnabled = true;
                mLastAmbientLux = 0;
                int localAlsCounter;
                synchronized (sLock) {
                    localAlsCounter = sAlsCounter++;
                }

                if (localAlsCounter == 0) {
                    mSensorManager.registerListener(mLightSensorListener, lightSensor,
                            SensorManager.SENSOR_DELAY_NORMAL);
                } else {
                    Slog.e(TAG, "Ignoring request to subscribe to ALSProbe due to non-zero ALS"
                            + " counter: " + localAlsCounter);
                    Slog.e(TAG, Log.getStackTraceString(new Throwable()));
                }
            }
        } else {
            mLightSensorEnabled = false;
            mLastAmbientLux = 0;
            mSensorManager.unregisterListener(mLightSensorListener);
            int localAlsCounter;
            synchronized (sLock) {
                localAlsCounter = --sAlsCounter;
            }
            if (localAlsCounter != 0) {
                Slog.e(TAG, "Non-zero ALS counter after unsubscribing from ALSProbe: "
                        + localAlsCounter);
                Slog.e(TAG, Log.getStackTraceString(new Throwable()));
            }
        }
    }
}