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

View File

@@ -48,7 +48,6 @@ import android.content.Context;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.CellSignalStrength;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
@@ -89,8 +88,6 @@ public class SimStatusDialogControllerTest {
@Mock
private ServiceState mServiceState;
@Mock
private PhoneStateListener mPhoneStateListener;
@Mock
private SignalStrength mSignalStrength;
@Mock
private CellSignalStrength mCellSignalStrengthCdma;
@@ -150,7 +147,6 @@ public class SimStatusDialogControllerTest {
doReturn(0).when(mCellSignalStrengthWcdma).getAsuLevel();
doReturn(null).when(mSignalStrength).getCellSignalStrengths();
doReturn(mPhoneStateListener).when(mController).getPhoneStateListener();
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
when(mTelephonyManager.getActiveModemCount()).thenReturn(MAX_PHONE_COUNT_SINGLE_SIM);

View File

@@ -124,13 +124,12 @@ public class MobileNetworkPreferenceControllerTest {
mLifecycleRegistry.handleLifecycleEvent(Event.ON_START);
verify(mController).onStart();
verify(mTelephonyManager).listen(mController.mPhoneStateListener,
PhoneStateListener.LISTEN_SERVICE_STATE);
verify(mTelephonyManager).registerTelephonyCallback(
mContext.getMainExecutor(), mController.mTelephonyCallback);
mLifecycleRegistry.handleLifecycleEvent(Event.ON_STOP);
verify(mController).onStop();
verify(mTelephonyManager).listen(mController.mPhoneStateListener,
PhoneStateListener.LISTEN_NONE);
verify(mTelephonyManager).unregisterTelephonyCallback(mController.mTelephonyCallback);
}
@Test
@@ -148,12 +147,12 @@ public class MobileNetworkPreferenceControllerTest {
mController.displayPreference(mScreen);
mLifecycleRegistry.handleLifecycleEvent(Event.ON_START);
verify(mController).onStart();
verify(mTelephonyManager).listen(mController.mPhoneStateListener,
PhoneStateListener.LISTEN_SERVICE_STATE);
verify(mTelephonyManager).registerTelephonyCallback(
mContext.getMainExecutor(), mController.mTelephonyCallback);
doReturn(testCarrierName).when(mController).getSummary();
mController.mPhoneStateListener.onServiceStateChanged(null);
mController.mTelephonyCallback.onServiceStateChanged(null);
// Carrier name should be set.
Assert.assertEquals(mPreference.getSummary(), testCarrierName);