Merge "Update register and unregisterControllerAlwaysOnListener" am: 16019ad77d

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1686685

Change-Id: Id1d67bf38d01ca70f72e13aeb12730c196f2570d
This commit is contained in:
Treehugger Robot
2021-04-28 04:05:01 +00:00
committed by Automerger Merge Worker
2 changed files with 51 additions and 2 deletions

View File

@@ -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;

View File

@@ -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);