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

Commit accaeca9 authored by Haining Chen's avatar Haining Chen Committed by Gerrit Code Review
Browse files

Merge "Switch LockSettingsStateListener to java interface" into main

parents 5bb6f919 ad6646b6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -171,11 +171,11 @@ public abstract class LockSettingsInternal {
     * Register a LockSettingsStateListener
     * @param listener The listener to be registered
     */
    public abstract void registerLockSettingsStateListener(ILockSettingsStateListener listener);
    public abstract void registerLockSettingsStateListener(LockSettingsStateListener listener);

    /**
     * Unregister a LockSettingsStateListener
     * @param listener The listener to be unregistered
     */
    public abstract void unregisterLockSettingsStateListener(ILockSettingsStateListener listener);
    public abstract void unregisterLockSettingsStateListener(LockSettingsStateListener listener);
}
+3 −3
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ package com.android.internal.widget;
 * state of primary authentication (i.e. PIN/pattern/password).
 * @hide
 */
oneway interface ILockSettingsStateListener {
public interface LockSettingsStateListener {
    /**
     * Defines behavior in response to a successful authentication
     * @param userId The user Id for the requested authentication
+14 −27
Original line number Diff line number Diff line
@@ -91,7 +91,6 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.IProgressListener;
import android.os.Process;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.ServiceManager;
@@ -137,11 +136,11 @@ import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.internal.widget.ICheckCredentialProgressCallback;
import com.android.internal.widget.ILockSettings;
import com.android.internal.widget.ILockSettingsStateListener;
import com.android.internal.widget.IWeakEscrowTokenActivatedListener;
import com.android.internal.widget.IWeakEscrowTokenRemovedListener;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockSettingsInternal;
import com.android.internal.widget.LockSettingsStateListener;
import com.android.internal.widget.LockscreenCredential;
import com.android.internal.widget.RebootEscrowListener;
import com.android.internal.widget.VerifyCredentialResponse;
@@ -183,6 +182,7 @@ import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Set;
import java.util.StringJoiner;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

@@ -330,8 +330,8 @@ public class LockSettingsService extends ILockSettings.Stub {

    private HashMap<UserHandle, UserManager> mUserManagerCache = new HashMap<>();

    private final RemoteCallbackList<ILockSettingsStateListener> mLockSettingsStateListeners =
            new RemoteCallbackList<>();
    private final CopyOnWriteArrayList<LockSettingsStateListener> mLockSettingsStateListeners =
            new CopyOnWriteArrayList<>();

    // This class manages life cycle events for encrypted users on File Based Encryption (FBE)
    // devices. The most basic of these is to show/hide notifications about missing features until
@@ -2357,25 +2357,12 @@ public class LockSettingsService extends ILockSettings.Stub {
    }

    private void notifyLockSettingsStateListeners(boolean success, int userId) {
        int i = mLockSettingsStateListeners.beginBroadcast();
        try {
            while (i > 0) {
                i--;
                try {
        for (LockSettingsStateListener listener : mLockSettingsStateListeners) {
            if (success) {
                        mLockSettingsStateListeners.getBroadcastItem(i)
                                .onAuthenticationSucceeded(userId);
                listener.onAuthenticationSucceeded(userId);
            } else {
                        mLockSettingsStateListeners.getBroadcastItem(i)
                                .onAuthenticationFailed(userId);
                    }
                } catch (RemoteException e) {
                    Slog.e(TAG, "Exception while notifying LockSettingsStateListener:"
                            + " success = " + success + ", userId = " + userId, e);
                }
                listener.onAuthenticationFailed(userId);
            }
        } finally {
            mLockSettingsStateListeners.finishBroadcast();
        }
    }

@@ -3698,15 +3685,15 @@ public class LockSettingsService extends ILockSettings.Stub {
        }

        @Override
        public void registerLockSettingsStateListener(
                @NonNull ILockSettingsStateListener listener) {
            mLockSettingsStateListeners.register(listener);
        public void registerLockSettingsStateListener(@NonNull LockSettingsStateListener listener) {
            Objects.requireNonNull(listener, "listener cannot be null");
            mLockSettingsStateListeners.add(listener);
        }

        @Override
        public void unregisterLockSettingsStateListener(
                @NonNull ILockSettingsStateListener listener) {
            mLockSettingsStateListeners.unregister(listener);
                @NonNull LockSettingsStateListener listener) {
            mLockSettingsStateListeners.remove(listener);
        }
    }

+4 −13
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.PropertyInvalidatedCache;
import android.os.IBinder;
import android.os.RemoteException;
import android.platform.test.annotations.Presubmit;
import android.platform.test.flag.junit.SetFlagsRule;
@@ -49,8 +48,8 @@ import android.text.TextUtils;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.internal.widget.ILockSettingsStateListener;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockSettingsStateListener;
import com.android.internal.widget.LockscreenCredential;
import com.android.internal.widget.VerifyCredentialResponse;

@@ -412,7 +411,7 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
        mSetFlagsRule.enableFlags(FLAG_REPORT_PRIMARY_AUTH_ATTEMPTS);
        final LockscreenCredential password = newPassword("password");
        setCredential(PRIMARY_USER_ID, password);
        final ILockSettingsStateListener listener = mockLockSettingsStateListener();
        final LockSettingsStateListener listener = mock(LockSettingsStateListener.class);
        mLocalService.registerLockSettingsStateListener(listener);

        assertEquals(VerifyCredentialResponse.RESPONSE_OK,
@@ -429,7 +428,7 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
        final LockscreenCredential password = newPassword("password");
        setCredential(PRIMARY_USER_ID, password);
        final LockscreenCredential badPassword = newPassword("badPassword");
        final ILockSettingsStateListener listener = mockLockSettingsStateListener();
        final LockSettingsStateListener listener = mock(LockSettingsStateListener.class);
        mLocalService.registerLockSettingsStateListener(listener);

        assertEquals(VerifyCredentialResponse.RESPONSE_ERROR,
@@ -445,7 +444,7 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
        final LockscreenCredential password = newPassword("password");
        setCredential(PRIMARY_USER_ID, password);
        final LockscreenCredential badPassword = newPassword("badPassword");
        final ILockSettingsStateListener listener = mockLockSettingsStateListener();
        final LockSettingsStateListener listener = mock(LockSettingsStateListener.class);

        mLocalService.registerLockSettingsStateListener(listener);
        assertEquals(VerifyCredentialResponse.RESPONSE_OK,
@@ -599,12 +598,4 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
            assertNotEquals(0, mGateKeeperService.getSecureUserId(userId));
        }
    }

    private ILockSettingsStateListener mockLockSettingsStateListener() {
        ILockSettingsStateListener listener = mock(ILockSettingsStateListener.Stub.class);
        IBinder binder = mock(IBinder.class);
        when(binder.isBinderAlive()).thenReturn(true);
        when(listener.asBinder()).thenReturn(binder);
        return listener;
    }
}