Merge "[Settings] Use TelephonyManasger.registerTelephonyCallback instead of TelephonyManager.listen" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-03-17 10:30:48 +00:00
committed by Android (Google) Code Review
12 changed files with 202 additions and 175 deletions

View File

@@ -57,7 +57,7 @@ public final class AirplaneModeEnablerTest {
ShadowSettings.setAirplaneMode(true);
mAirplaneModeEnabler.mPhoneStateListener.onRadioPowerStateChanged(
mAirplaneModeEnabler.mTelephonyCallback.onRadioPowerStateChanged(
TelephonyManager.RADIO_POWER_OFF);
verify(mAirplaneModeChangedListener, times(1)).onAirplaneModeChanged(true);

View File

@@ -16,13 +16,9 @@
package com.android.settings.network.telephony;
import static android.telephony.PhoneStateListener.LISTEN_NONE;
import static android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTHS;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
@@ -31,7 +27,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import org.junit.Before;
@@ -44,6 +40,8 @@ import org.mockito.internal.util.collections.Sets;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.util.concurrent.Executor;
@RunWith(RobolectricTestRunner.class)
public class SignalStrengthListenerTest {
private static final int SUB_ID_1 = 111;
@@ -88,13 +86,19 @@ public class SignalStrengthListenerTest {
@Test
public void updateSubscriptionIds_beforeResume_startedListening() {
mListener.updateSubscriptionIds(Sets.newSet(SUB_ID_1, SUB_ID_2));
ArgumentCaptor<PhoneStateListener> captor1 = ArgumentCaptor.forClass(
PhoneStateListener.class);
ArgumentCaptor<PhoneStateListener> captor2 = ArgumentCaptor.forClass(
PhoneStateListener.class);
verify(mManager1).listen(captor1.capture(), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager2).listen(captor2.capture(), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager3, never()).listen(any(), anyInt());
ArgumentCaptor<SignalStrengthListener.SignalStrengthTelephonyCallback> captor1 =
ArgumentCaptor.forClass(
SignalStrengthListener.SignalStrengthTelephonyCallback.class);
ArgumentCaptor<SignalStrengthListener.SignalStrengthTelephonyCallback> captor2 =
ArgumentCaptor.forClass(
SignalStrengthListener.SignalStrengthTelephonyCallback.class);
verify(mManager1).registerTelephonyCallback(
any(Executor.class), captor1.capture());
verify(mManager2).registerTelephonyCallback(
any(Executor.class), captor2.capture());
verify(mManager3, never()).registerTelephonyCallback(any(), any());
assertThat(captor1.getValue()).isNotNull();
assertThat(captor2.getValue()).isNotNull();
@@ -105,46 +109,57 @@ public class SignalStrengthListenerTest {
@Test
public void updateSubscriptionIds_twoCalls_oneIdAdded() {
mListener.updateSubscriptionIds(Sets.newSet(SUB_ID_1, SUB_ID_2));
verify(mManager1).listen(any(PhoneStateListener.class), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager2).listen(any(PhoneStateListener.class), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager1).registerTelephonyCallback(any(Executor.class),
eq(mListener.mTelephonyCallbacks.get(SUB_ID_1)));
verify(mManager2).registerTelephonyCallback(any(Executor.class),
eq(mListener.mTelephonyCallbacks.get(SUB_ID_2)));
mListener.updateSubscriptionIds(Sets.newSet(SUB_ID_1, SUB_ID_2, SUB_ID_3));
verify(mManager1, never()).listen(any(PhoneStateListener.class), eq(LISTEN_NONE));
verify(mManager2, never()).listen(any(PhoneStateListener.class), eq(LISTEN_NONE));
verify(mManager3).listen(any(PhoneStateListener.class), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager1, never()).unregisterTelephonyCallback(
mListener.mTelephonyCallbacks.get(SUB_ID_1));
verify(mManager2, never()).unregisterTelephonyCallback(
mListener.mTelephonyCallbacks.get(SUB_ID_2));
verify(mManager3).registerTelephonyCallback(
any(Executor.class), eq(mListener.mTelephonyCallbacks.get(SUB_ID_3)));
}
@Test
public void updateSubscriptionIds_twoCalls_oneIdRemoved() {
ArgumentCaptor<PhoneStateListener> captor1 = ArgumentCaptor.forClass(
PhoneStateListener.class);
ArgumentCaptor<SignalStrengthListener.SignalStrengthTelephonyCallback> captor1 =
ArgumentCaptor.forClass(
SignalStrengthListener.SignalStrengthTelephonyCallback.class);
mListener.updateSubscriptionIds(Sets.newSet(SUB_ID_1, SUB_ID_2));
verify(mManager1).listen(captor1.capture(), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager2).listen(any(PhoneStateListener.class), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager1).registerTelephonyCallback(any(Executor.class), captor1.capture());
verify(mManager2).registerTelephonyCallback(
any(Executor.class), any(TelephonyCallback.class));
mListener.updateSubscriptionIds(Sets.newSet(SUB_ID_2));
verify(mManager1).listen(captor1.capture(), eq(LISTEN_NONE));
verify(mManager2, never()).listen(any(PhoneStateListener.class), eq(LISTEN_NONE));
verify(mManager1).unregisterTelephonyCallback(captor1.capture());
verify(mManager2, never()).unregisterTelephonyCallback(any(TelephonyCallback.class));
// Make sure the correct listener was removed.
assertThat(captor1.getAllValues().get(0) == captor1.getAllValues().get(1)).isTrue();
}
@Test
public void updateSubscriptionIds_twoCalls_twoIdsRemovedOneAdded() {
ArgumentCaptor<PhoneStateListener> captor1 = ArgumentCaptor.forClass(
PhoneStateListener.class);
ArgumentCaptor<PhoneStateListener> captor2 = ArgumentCaptor.forClass(
PhoneStateListener.class);
ArgumentCaptor<SignalStrengthListener.SignalStrengthTelephonyCallback> captor1 =
ArgumentCaptor.forClass(
SignalStrengthListener.SignalStrengthTelephonyCallback.class);
ArgumentCaptor<SignalStrengthListener.SignalStrengthTelephonyCallback> captor2 =
ArgumentCaptor.forClass(
SignalStrengthListener.SignalStrengthTelephonyCallback.class);
mListener.updateSubscriptionIds(Sets.newSet(SUB_ID_1, SUB_ID_2));
verify(mManager1).listen(captor1.capture(), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager2).listen(captor2.capture(), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager1).registerTelephonyCallback(any(Executor.class), captor1.capture());
verify(mManager2).registerTelephonyCallback(any(Executor.class), captor2.capture());
mListener.updateSubscriptionIds(Sets.newSet(SUB_ID_3));
verify(mManager1).listen(captor1.capture(), eq(LISTEN_NONE));
verify(mManager2).listen(captor2.capture(), eq(LISTEN_NONE));
verify(mManager3).listen(any(PhoneStateListener.class), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager1).unregisterTelephonyCallback(captor1.capture());
verify(mManager2).unregisterTelephonyCallback(captor2.capture());
verify(mManager3).registerTelephonyCallback(
any(Executor.class), any(TelephonyCallback.class));
// Make sure the correct listeners were removed.
assertThat(captor1.getValue() != captor2.getValue()).isTrue();
assertThat(captor1.getAllValues().get(0) == captor1.getAllValues().get(1)).isTrue();
@@ -157,15 +172,19 @@ public class SignalStrengthListenerTest {
mListener.pause();
mListener.resume();
ArgumentCaptor<PhoneStateListener> captor1 = ArgumentCaptor.forClass(
PhoneStateListener.class);
ArgumentCaptor<PhoneStateListener> captor2 = ArgumentCaptor.forClass(
PhoneStateListener.class);
verify(mManager1, times(2)).listen(captor1.capture(), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager1).listen(captor1.capture(), eq(LISTEN_NONE));
ArgumentCaptor<SignalStrengthListener.SignalStrengthTelephonyCallback> captor1 =
ArgumentCaptor.forClass(
SignalStrengthListener.SignalStrengthTelephonyCallback.class);
ArgumentCaptor<SignalStrengthListener.SignalStrengthTelephonyCallback> captor2 =
ArgumentCaptor.forClass(
SignalStrengthListener.SignalStrengthTelephonyCallback.class);
verify(mManager1, times(2)).registerTelephonyCallback(
any(Executor.class), captor1.capture());
verify(mManager1).unregisterTelephonyCallback(captor1.capture());
verify(mManager2, times(2)).listen(captor2.capture(), eq(LISTEN_SIGNAL_STRENGTHS));
verify(mManager2).listen(captor2.capture(), eq(LISTEN_NONE));
verify(mManager2, times(2)).registerTelephonyCallback(
any(Executor.class), captor2.capture());
verify(mManager2).unregisterTelephonyCallback(captor2.capture());
assertThat(captor1.getAllValues().get(0) == captor1.getAllValues().get(1)).isTrue();
assertThat(captor1.getAllValues().get(0) == captor1.getAllValues().get(2)).isTrue();