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

Commit 830d6692 authored by Haining Chen's avatar Haining Chen Committed by Automerger Merge Worker
Browse files

Merge "Switch LockSettingsStateListener to java interface" into main am: accaeca9

parents 6c215299 accaeca9
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;
    }
}