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

Commit 16019ad7 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Update register and unregisterControllerAlwaysOnListener"

parents 5092ae8c 3b317f91
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -52,6 +52,14 @@ public class NfcControllerAlwaysOnListener extends INfcControllerAlwaysOnListene
     */
    public void register(@NonNull Executor executor,
            @NonNull ControllerAlwaysOnListener listener) {
        try {
            if (!mAdapter.isControllerAlwaysOnSupported()) {
                return;
            }
        } catch (RemoteException e) {
            Log.w(TAG, "Failed to register");
            return;
        }
        synchronized (this) {
            if (mListenerMap.containsKey(listener)) {
                return;
@@ -75,6 +83,14 @@ public class NfcControllerAlwaysOnListener extends INfcControllerAlwaysOnListene
     * @param listener user implementation of the {@link ControllerAlwaysOnListener}
     */
    public void unregister(@NonNull ControllerAlwaysOnListener listener) {
        try {
            if (!mAdapter.isControllerAlwaysOnSupported()) {
                return;
            }
        } catch (RemoteException e) {
            Log.w(TAG, "Failed to unregister");
            return;
        }
        synchronized (this) {
            if (!mListenerMap.containsKey(listener)) {
                return;
+35 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.nfc;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
@@ -61,8 +62,37 @@ public class NfcControllerAlwaysOnListenerTest {
        verify(listener, times(1)).onControllerAlwaysOnChanged(anyBoolean());
    }

    @Test
    public void testRegister_RegisterUnregisterWhenNotSupported() throws RemoteException {
        // isControllerAlwaysOnSupported() returns false, not supported.
        doReturn(false).when(mNfcAdapter).isControllerAlwaysOnSupported();
        NfcControllerAlwaysOnListener mListener =
                new NfcControllerAlwaysOnListener(mNfcAdapter);
        ControllerAlwaysOnListener mockListener1 = mock(ControllerAlwaysOnListener.class);
        ControllerAlwaysOnListener mockListener2 = mock(ControllerAlwaysOnListener.class);

        // Verify that the state listener will not registered with the NFC Adapter
        mListener.register(getExecutor(), mockListener1);
        verify(mNfcAdapter, times(0)).registerControllerAlwaysOnListener(any());

        // Register a second client and no any call to NFC Adapter
        mListener.register(getExecutor(), mockListener2);
        verify(mNfcAdapter, times(0)).registerControllerAlwaysOnListener(any());

        // Unregister first listener, and no any call to NFC Adapter
        mListener.unregister(mockListener1);
        verify(mNfcAdapter, times(0)).registerControllerAlwaysOnListener(any());
        verify(mNfcAdapter, times(0)).unregisterControllerAlwaysOnListener(any());

        // Unregister second listener, and no any call to NFC Adapter
        mListener.unregister(mockListener2);
        verify(mNfcAdapter, times(0)).registerControllerAlwaysOnListener(any());
        verify(mNfcAdapter, times(0)).unregisterControllerAlwaysOnListener(any());
    }

    @Test
    public void testRegister_RegisterUnregister() throws RemoteException {
        doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
        NfcControllerAlwaysOnListener mListener =
                new NfcControllerAlwaysOnListener(mNfcAdapter);
        ControllerAlwaysOnListener mockListener1 = mock(ControllerAlwaysOnListener.class);
@@ -89,6 +119,7 @@ public class NfcControllerAlwaysOnListenerTest {

    @Test
    public void testRegister_FirstRegisterFails() throws RemoteException {
        doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
        NfcControllerAlwaysOnListener mListener =
                new NfcControllerAlwaysOnListener(mNfcAdapter);
        ControllerAlwaysOnListener mockListener1 = mock(ControllerAlwaysOnListener.class);
@@ -116,6 +147,7 @@ public class NfcControllerAlwaysOnListenerTest {

    @Test
    public void testRegister_RegisterSameListenerTwice() throws RemoteException {
        doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
        NfcControllerAlwaysOnListener mListener =
                new NfcControllerAlwaysOnListener(mNfcAdapter);
        ControllerAlwaysOnListener mockListener = mock(ControllerAlwaysOnListener.class);
@@ -132,7 +164,7 @@ public class NfcControllerAlwaysOnListenerTest {

    @Test
    public void testNotify_AllListenersNotified() throws RemoteException {

        doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
        NfcControllerAlwaysOnListener listener = new NfcControllerAlwaysOnListener(mNfcAdapter);
        List<ControllerAlwaysOnListener> mockListeners = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
@@ -149,7 +181,8 @@ public class NfcControllerAlwaysOnListenerTest {
    }

    @Test
    public void testStateChange_CorrectValue() {
    public void testStateChange_CorrectValue() throws RemoteException {
        doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
        runStateChangeValue(true, true);
        runStateChangeValue(false, false);