Merge "Update register and unregisterControllerAlwaysOnListener" am: 16019ad77d am: 925778283c
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1686685 Change-Id: I6ec902877875a9ccd7c80ecb5ec7986032e38043
This commit is contained in:
@@ -52,6 +52,14 @@ public class NfcControllerAlwaysOnListener extends INfcControllerAlwaysOnListene
|
|||||||
*/
|
*/
|
||||||
public void register(@NonNull Executor executor,
|
public void register(@NonNull Executor executor,
|
||||||
@NonNull ControllerAlwaysOnListener listener) {
|
@NonNull ControllerAlwaysOnListener listener) {
|
||||||
|
try {
|
||||||
|
if (!mAdapter.isControllerAlwaysOnSupported()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.w(TAG, "Failed to register");
|
||||||
|
return;
|
||||||
|
}
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
if (mListenerMap.containsKey(listener)) {
|
if (mListenerMap.containsKey(listener)) {
|
||||||
return;
|
return;
|
||||||
@@ -75,6 +83,14 @@ public class NfcControllerAlwaysOnListener extends INfcControllerAlwaysOnListene
|
|||||||
* @param listener user implementation of the {@link ControllerAlwaysOnListener}
|
* @param listener user implementation of the {@link ControllerAlwaysOnListener}
|
||||||
*/
|
*/
|
||||||
public void unregister(@NonNull ControllerAlwaysOnListener listener) {
|
public void unregister(@NonNull ControllerAlwaysOnListener listener) {
|
||||||
|
try {
|
||||||
|
if (!mAdapter.isControllerAlwaysOnSupported()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.w(TAG, "Failed to unregister");
|
||||||
|
return;
|
||||||
|
}
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
if (!mListenerMap.containsKey(listener)) {
|
if (!mListenerMap.containsKey(listener)) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package android.nfc;
|
|||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.doThrow;
|
import static org.mockito.Mockito.doThrow;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
@@ -61,8 +62,37 @@ public class NfcControllerAlwaysOnListenerTest {
|
|||||||
verify(listener, times(1)).onControllerAlwaysOnChanged(anyBoolean());
|
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
|
@Test
|
||||||
public void testRegister_RegisterUnregister() throws RemoteException {
|
public void testRegister_RegisterUnregister() throws RemoteException {
|
||||||
|
doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
|
||||||
NfcControllerAlwaysOnListener mListener =
|
NfcControllerAlwaysOnListener mListener =
|
||||||
new NfcControllerAlwaysOnListener(mNfcAdapter);
|
new NfcControllerAlwaysOnListener(mNfcAdapter);
|
||||||
ControllerAlwaysOnListener mockListener1 = mock(ControllerAlwaysOnListener.class);
|
ControllerAlwaysOnListener mockListener1 = mock(ControllerAlwaysOnListener.class);
|
||||||
@@ -89,6 +119,7 @@ public class NfcControllerAlwaysOnListenerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRegister_FirstRegisterFails() throws RemoteException {
|
public void testRegister_FirstRegisterFails() throws RemoteException {
|
||||||
|
doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
|
||||||
NfcControllerAlwaysOnListener mListener =
|
NfcControllerAlwaysOnListener mListener =
|
||||||
new NfcControllerAlwaysOnListener(mNfcAdapter);
|
new NfcControllerAlwaysOnListener(mNfcAdapter);
|
||||||
ControllerAlwaysOnListener mockListener1 = mock(ControllerAlwaysOnListener.class);
|
ControllerAlwaysOnListener mockListener1 = mock(ControllerAlwaysOnListener.class);
|
||||||
@@ -116,6 +147,7 @@ public class NfcControllerAlwaysOnListenerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRegister_RegisterSameListenerTwice() throws RemoteException {
|
public void testRegister_RegisterSameListenerTwice() throws RemoteException {
|
||||||
|
doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
|
||||||
NfcControllerAlwaysOnListener mListener =
|
NfcControllerAlwaysOnListener mListener =
|
||||||
new NfcControllerAlwaysOnListener(mNfcAdapter);
|
new NfcControllerAlwaysOnListener(mNfcAdapter);
|
||||||
ControllerAlwaysOnListener mockListener = mock(ControllerAlwaysOnListener.class);
|
ControllerAlwaysOnListener mockListener = mock(ControllerAlwaysOnListener.class);
|
||||||
@@ -132,7 +164,7 @@ public class NfcControllerAlwaysOnListenerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNotify_AllListenersNotified() throws RemoteException {
|
public void testNotify_AllListenersNotified() throws RemoteException {
|
||||||
|
doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
|
||||||
NfcControllerAlwaysOnListener listener = new NfcControllerAlwaysOnListener(mNfcAdapter);
|
NfcControllerAlwaysOnListener listener = new NfcControllerAlwaysOnListener(mNfcAdapter);
|
||||||
List<ControllerAlwaysOnListener> mockListeners = new ArrayList<>();
|
List<ControllerAlwaysOnListener> mockListeners = new ArrayList<>();
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
@@ -149,7 +181,8 @@ public class NfcControllerAlwaysOnListenerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStateChange_CorrectValue() {
|
public void testStateChange_CorrectValue() throws RemoteException {
|
||||||
|
doReturn(true).when(mNfcAdapter).isControllerAlwaysOnSupported();
|
||||||
runStateChangeValue(true, true);
|
runStateChangeValue(true, true);
|
||||||
runStateChangeValue(false, false);
|
runStateChangeValue(false, false);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user