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

Commit 9b0e9aaf authored by Jeff Pu's avatar Jeff Pu Committed by Automerger Merge Worker
Browse files

Merge "Associate the session type in operation context with the client" into udc-dev am: acdde95a

parents 21ed30cc acdde95a
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -704,7 +704,8 @@ public final class AuthSession implements IBinder.DeathRecipient {
            }

            BiometricFrameworkStatsLogger.getInstance().authenticate(
                    mBiometricContext.updateContext(new OperationContextExt(), isCrypto()),
                    mBiometricContext.updateContext(new OperationContextExt(true /* isBP */),
                            isCrypto()),
                    statsModality(),
                    BiometricsProtoEnums.ACTION_UNKNOWN,
                    BiometricsProtoEnums.CLIENT_BIOMETRIC_PROMPT,
@@ -734,7 +735,8 @@ public final class AuthSession implements IBinder.DeathRecipient {
            }
            // Auth canceled
            BiometricFrameworkStatsLogger.getInstance().error(
                    mBiometricContext.updateContext(new OperationContextExt(), isCrypto()),
                    mBiometricContext.updateContext(new OperationContextExt(true /* isBP */),
                            isCrypto()),
                    statsModality(),
                    BiometricsProtoEnums.ACTION_AUTHENTICATE,
                    BiometricsProtoEnums.CLIENT_BIOMETRIC_PROMPT,
+20 −16
Original line number Diff line number Diff line
@@ -46,15 +46,17 @@ public class OperationContextExt {
    private int mDockState = Intent.EXTRA_DOCK_STATE_UNDOCKED;
    @Surface.Rotation private int mOrientation = Surface.ROTATION_0;
    private int mFoldState = IBiometricContextListener.FoldState.UNKNOWN;
    private final boolean mIsBP;

    /** Create a new empty context. */
    public OperationContextExt() {
        this(new OperationContext());
    /** Create a context. */
    public OperationContextExt(boolean isBP) {
        this(new OperationContext(), isBP);
    }

    /** Create a wrapped context. */
    public OperationContextExt(@NonNull OperationContext context) {
    public OperationContextExt(@NonNull OperationContext context, boolean isBP) {
        mAidlContext = context;
        mIsBP = isBP;
    }

    /**
@@ -268,19 +270,21 @@ public class OperationContextExt {
    }

    private void setFirstSessionId(@NonNull BiometricContext biometricContext) {
        mSessionInfo = biometricContext.getKeyguardEntrySessionInfo();
        if (mIsBP) {
            mSessionInfo = biometricContext.getBiometricPromptSessionInfo();
            if (mSessionInfo != null) {
                mAidlContext.id = mSessionInfo.getId();
            mAidlContext.reason = OperationReason.KEYGUARD;
                mAidlContext.reason = OperationReason.BIOMETRIC_PROMPT;
                return;
            }

        mSessionInfo = biometricContext.getBiometricPromptSessionInfo();
        } else {
            mSessionInfo = biometricContext.getKeyguardEntrySessionInfo();
            if (mSessionInfo != null) {
                mAidlContext.id = mSessionInfo.getId();
            mAidlContext.reason = OperationReason.BIOMETRIC_PROMPT;
                mAidlContext.reason = OperationReason.KEYGUARD;
                return;
            }
        }

        // no session
        mAidlContext.id = 0;
+0 −4
Original line number Diff line number Diff line
@@ -133,10 +133,6 @@ public abstract class AuthenticationClient<T, O extends AuthenticateOptions>
        binderDiedInternal(clearListener);
    }

    public boolean isBiometricPrompt() {
        return getCookie() != 0;
    }

    public long getOperationId() {
        return mOperationId;
    }
+6 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ public abstract class HalClientMonitor<T> extends BaseClientMonitor {
    protected final Supplier<T> mLazyDaemon;

    @NonNull
    private final OperationContextExt mOperationContext = new OperationContextExt();
    private final OperationContextExt mOperationContext;

    /**
     * @param context    system_server context
@@ -58,6 +58,7 @@ public abstract class HalClientMonitor<T> extends BaseClientMonitor {
        super(context, token, listener, userId, owner, cookie, sensorId,
                biometricLogger, biometricContext);
        mLazyDaemon = lazyDaemon;
        mOperationContext = new OperationContextExt(isBiometricPrompt());
    }

    @Nullable
@@ -85,6 +86,10 @@ public abstract class HalClientMonitor<T> extends BaseClientMonitor {
        unsubscribeBiometricContext();
    }

    public boolean isBiometricPrompt() {
        return getCookie() != 0;
    }

    protected OperationContextExt getOperationContext() {
        return getBiometricContext().updateContext(mOperationContext, isCryptoOperation());
    }
+19 −11
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ public class BiometricContextProviderTest {
    @Mock
    private WindowManager mWindowManager;

    private OperationContextExt mOpContext = new OperationContextExt();
    private OperationContextExt mOpContext = new OperationContextExt(true);
    private IBiometricContextListener mListener;
    private BiometricContextProvider mProvider;

@@ -316,17 +316,33 @@ public class BiometricContextProviderTest {
        assertThat(aidlContext.isAod).isEqualTo(false);
        assertThat(aidlContext.isCrypto).isEqualTo(false);

        context = mProvider.updateContext(mOpContext, false /* crypto */);
        aidlContext = context.toAidlContext();
        assertThat(context).isSameInstanceAs(mOpContext);
        assertThat(aidlContext.id).isEqualTo(0);
        assertThat(aidlContext.reason).isEqualTo(OperationReason.UNKNOWN);
        assertThat(aidlContext.isAod).isEqualTo(false);
        assertThat(aidlContext.isCrypto).isEqualTo(false);
    }

    @Test
    public void testUpdateAllSessionTypes() throws RemoteException {
        OperationContextExt context = mProvider.updateContext(mOpContext, false /* crypto */);
        OperationContext aidlContext = context.toAidlContext();

        for (int type : List.of(StatusBarManager.SESSION_BIOMETRIC_PROMPT,
                StatusBarManager.SESSION_KEYGUARD)) {
            final int id = 40 + type;
            final boolean aod = (type & 1) == 0;

            OperationContextExt opContext =
                    new OperationContextExt(type == StatusBarManager.SESSION_BIOMETRIC_PROMPT);
            mListener.onDisplayStateChanged(aod ? AuthenticateOptions.DISPLAY_STATE_AOD
                    : AuthenticateOptions.DISPLAY_STATE_LOCKSCREEN);
            mSessionListener.onSessionStarted(type, InstanceId.fakeInstanceId(id));
            context = mProvider.updateContext(mOpContext, false /* crypto */);
            context = mProvider.updateContext(opContext, false /* crypto */);
            aidlContext = context.toAidlContext();
            assertThat(context).isSameInstanceAs(mOpContext);
            assertThat(context).isSameInstanceAs(opContext);
            assertThat(aidlContext.id).isEqualTo(id);
            assertThat(aidlContext.reason).isEqualTo(reason(type));
            assertThat(aidlContext.isAod).isEqualTo(aod);
@@ -334,14 +350,6 @@ public class BiometricContextProviderTest {

            mSessionListener.onSessionEnded(type, InstanceId.fakeInstanceId(id));
        }

        context = mProvider.updateContext(mOpContext, false /* crypto */);
        aidlContext = context.toAidlContext();
        assertThat(context).isSameInstanceAs(mOpContext);
        assertThat(aidlContext.id).isEqualTo(0);
        assertThat(aidlContext.reason).isEqualTo(OperationReason.UNKNOWN);
        assertThat(aidlContext.isAod).isEqualTo(false);
        assertThat(aidlContext.isCrypto).isEqualTo(false);
    }

    private static byte reason(int type) {
Loading