[Telephony] Use TelephonyCallback instead of PhoneStateListener part5

Since the redesign of PhoneStateListener, use TelephonyCallback to get the callback of EVENT_*

Bug: 167684594
Test: make and atest NetworkProviderWorkerTest
Change-Id: I52af54045872bbf13e64d5d94c8b027ec702abb9
This commit is contained in:
Zoey Chen
2021-02-22 21:25:43 +08:00
parent 63ed1b3f9f
commit ea29704e40
9 changed files with 36 additions and 35 deletions

View File

@@ -18,6 +18,7 @@ package com.android.settings.network;
import android.content.Context; import android.content.Context;
import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
@@ -28,14 +29,14 @@ import java.util.concurrent.Executor;
/** /**
* {@link PhoneStateListener} to listen to Allowed Network Types changed * {@link TelephonyCallback} to listen to Allowed Network Types changed
*/ */
public class AllowedNetworkTypesListener extends PhoneStateListener implements public class AllowedNetworkTypesListener extends TelephonyCallback implements
PhoneStateListener.AllowedNetworkTypesChangedListener { TelephonyCallback.AllowedNetworkTypesListener {
private static final String LOG_TAG = "NetworkModeListener"; private static final String LOG_TAG = "NetworkModeListener";
@VisibleForTesting @VisibleForTesting
AllowedNetworkTypesListener.OnAllowedNetworkTypesChangedListener mListener; OnAllowedNetworkTypesListener mListener;
private long mAllowedNetworkType = -1; private long mAllowedNetworkType = -1;
private Executor mExecutor; private Executor mExecutor;
@@ -44,7 +45,7 @@ public class AllowedNetworkTypesListener extends PhoneStateListener implements
mExecutor = executor; mExecutor = executor;
} }
public void setAllowedNetworkTypesChangedListener(OnAllowedNetworkTypesChangedListener lsn) { public void setAllowedNetworkTypesListener(OnAllowedNetworkTypesListener lsn) {
mListener = lsn; mListener = lsn;
} }
@@ -56,7 +57,7 @@ public class AllowedNetworkTypesListener extends PhoneStateListener implements
public void register(Context context, int subId) { public void register(Context context, int subId) {
TelephonyManager telephonyManager = context.getSystemService( TelephonyManager telephonyManager = context.getSystemService(
TelephonyManager.class).createForSubscriptionId(subId); TelephonyManager.class).createForSubscriptionId(subId);
telephonyManager.registerPhoneStateListener(mExecutor, this); telephonyManager.registerTelephonyCallback(mExecutor, this);
} }
/** /**
@@ -67,7 +68,7 @@ public class AllowedNetworkTypesListener extends PhoneStateListener implements
public void unregister(Context context, int subId) { public void unregister(Context context, int subId) {
TelephonyManager telephonyManager = context.getSystemService( TelephonyManager telephonyManager = context.getSystemService(
TelephonyManager.class).createForSubscriptionId(subId); TelephonyManager.class).createForSubscriptionId(subId);
telephonyManager.unregisterPhoneStateListener(this); telephonyManager.unregisterTelephonyCallback(this);
} }
@Override @Override
@@ -84,7 +85,7 @@ public class AllowedNetworkTypesListener extends PhoneStateListener implements
/** /**
* Listener for update of Preferred Network Mode change * Listener for update of Preferred Network Mode change
*/ */
public interface OnAllowedNetworkTypesChangedListener { public interface OnAllowedNetworkTypesListener {
/** /**
* Notify the allowed network type changed. * Notify the allowed network type changed.
*/ */

View File

@@ -151,7 +151,7 @@ public class EnabledNetworkModePreferenceController extends
if (mAllowedNetworkTypesListener == null) { if (mAllowedNetworkTypesListener == null) {
mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( mAllowedNetworkTypesListener = new AllowedNetworkTypesListener(
mContext.getMainExecutor()); mContext.getMainExecutor());
mAllowedNetworkTypesListener.setAllowedNetworkTypesChangedListener( mAllowedNetworkTypesListener.setAllowedNetworkTypesListener(
() -> updatePreference()); () -> updatePreference());
} }

View File

@@ -45,7 +45,7 @@ public class NetworkPreferenceCategoryController extends PreferenceCategoryContr
mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( mAllowedNetworkTypesListener = new AllowedNetworkTypesListener(
context.getMainExecutor()); context.getMainExecutor());
mAllowedNetworkTypesListener.setAllowedNetworkTypesChangedListener( mAllowedNetworkTypesListener.setAllowedNetworkTypesListener(
() -> updatePreference()); () -> updatePreference());
} }

View File

@@ -25,9 +25,9 @@ import android.database.ContentObserver;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyDisplayInfo;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
@@ -63,7 +63,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
private final Context mContext; private final Context mContext;
final Handler mHandler; final Handler mHandler;
@VisibleForTesting @VisibleForTesting
final PhoneStateListener mPhoneStateListener; final NetworkProviderTelephonyCallback mTelephonyCallback;
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
private Config mConfig = null; private Config mConfig = null;
private TelephonyDisplayInfo mTelephonyDisplayInfo = private TelephonyDisplayInfo mTelephonyDisplayInfo =
@@ -83,7 +83,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
mTelephonyManager = mContext.getSystemService( mTelephonyManager = mContext.getSystemService(
TelephonyManager.class).createForSubscriptionId(mDefaultDataSubid); TelephonyManager.class).createForSubscriptionId(mDefaultDataSubid);
mPhoneStateListener = new NetworkProviderPhoneStateListener(); mTelephonyCallback = new NetworkProviderTelephonyCallback();
mSubscriptionsListener = new SubscriptionsChangeListener(context, this); mSubscriptionsListener = new SubscriptionsChangeListener(context, this);
mDataEnabledListener = new MobileDataEnabledListener(context, this); mDataEnabledListener = new MobileDataEnabledListener(context, this);
mConnectivityListener = new DataConnectivityListener(context, this); mConnectivityListener = new DataConnectivityListener(context, this);
@@ -101,7 +101,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
mDataEnabledListener.start(mDefaultDataSubid); mDataEnabledListener.start(mDefaultDataSubid);
mConnectivityListener.start(); mConnectivityListener.start();
mSignalStrengthListener.resume(); mSignalStrengthListener.resume();
mTelephonyManager.registerPhoneStateListener(mHandler::post, mPhoneStateListener); mTelephonyManager.registerTelephonyCallback(mHandler::post, mTelephonyCallback);
super.onSlicePinned(); super.onSlicePinned();
} }
@@ -112,7 +112,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
mDataEnabledListener.stop(); mDataEnabledListener.stop();
mConnectivityListener.stop(); mConnectivityListener.stop();
mSignalStrengthListener.pause(); mSignalStrengthListener.pause();
mTelephonyManager.unregisterPhoneStateListener(mPhoneStateListener); mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
super.onSliceUnpinned(); super.onSliceUnpinned();
} }
@@ -142,12 +142,12 @@ public class NetworkProviderWorker extends WifiScanWorker implements
return; return;
} }
if (SubscriptionManager.isUsableSubscriptionId(defaultDataSubId)) { if (SubscriptionManager.isUsableSubscriptionId(defaultDataSubId)) {
mTelephonyManager.unregisterPhoneStateListener(mPhoneStateListener); mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
mMobileDataObserver.unregister(mContext); mMobileDataObserver.unregister(mContext);
mSignalStrengthListener.updateSubscriptionIds(Collections.singleton(defaultDataSubId)); mSignalStrengthListener.updateSubscriptionIds(Collections.singleton(defaultDataSubId));
mTelephonyManager = mTelephonyManager.createForSubscriptionId(defaultDataSubId); mTelephonyManager = mTelephonyManager.createForSubscriptionId(defaultDataSubId);
mTelephonyManager.registerPhoneStateListener(mHandler::post, mPhoneStateListener); mTelephonyManager.registerTelephonyCallback(mHandler::post, mTelephonyCallback);
mMobileDataObserver.register(mContext, mDefaultDataSubid); mMobileDataObserver.register(mContext, mDefaultDataSubid);
mConfig = getConfig(mContext); mConfig = getConfig(mContext);
} else { } else {
@@ -217,10 +217,10 @@ public class NetworkProviderWorker extends WifiScanWorker implements
} }
} }
class NetworkProviderPhoneStateListener extends PhoneStateListener implements class NetworkProviderTelephonyCallback extends TelephonyCallback implements
PhoneStateListener.DataConnectionStateChangedListener, TelephonyCallback.DataConnectionStateListener,
PhoneStateListener.DisplayInfoChangedListener, TelephonyCallback.DisplayInfoListener,
PhoneStateListener.ServiceStateChangedListener { TelephonyCallback.ServiceStateListener {
@Override @Override
public void onServiceStateChanged(ServiceState state) { public void onServiceStateChanged(ServiceState state) {
Log.d(TAG, "onServiceStateChanged voiceState=" + state.getState() Log.d(TAG, "onServiceStateChanged voiceState=" + state.getState()

View File

@@ -77,7 +77,7 @@ public abstract class CdmaBasePreferenceController extends TelephonyBasePreferen
if (mAllowedNetworkTypesListener == null) { if (mAllowedNetworkTypesListener == null) {
mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( mAllowedNetworkTypesListener = new AllowedNetworkTypesListener(
mContext.getMainExecutor()); mContext.getMainExecutor());
mAllowedNetworkTypesListener.setAllowedNetworkTypesChangedListener( mAllowedNetworkTypesListener.setAllowedNetworkTypesListener(
() -> updatePreference()); () -> updatePreference());
} }
} }

View File

@@ -81,7 +81,7 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon
mUiHandler = new Handler(Looper.getMainLooper()); mUiHandler = new Handler(Looper.getMainLooper());
mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( mAllowedNetworkTypesListener = new AllowedNetworkTypesListener(
new HandlerExecutor(mUiHandler)); new HandlerExecutor(mUiHandler));
mAllowedNetworkTypesListener.setAllowedNetworkTypesChangedListener( mAllowedNetworkTypesListener.setAllowedNetworkTypesListener(
() -> updatePreference()); () -> updatePreference());
} }

View File

@@ -60,7 +60,7 @@ public class OpenNetworkSelectPagePreferenceController extends
mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( mAllowedNetworkTypesListener = new AllowedNetworkTypesListener(
context.getMainExecutor()); context.getMainExecutor());
mAllowedNetworkTypesListener.setAllowedNetworkTypesChangedListener( mAllowedNetworkTypesListener.setAllowedNetworkTypesListener(
() -> updatePreference()); () -> updatePreference());
} }

View File

@@ -25,8 +25,8 @@ import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.os.HandlerExecutor; import android.os.HandlerExecutor;
import android.telephony.PhoneStateListener;
import android.telephony.RadioAccessFamily; import android.telephony.RadioAccessFamily;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.test.mock.MockContentResolver; import android.test.mock.MockContentResolver;
@@ -53,7 +53,7 @@ public class AllowedNetworkTypesListenerTest {
private AllowedNetworkTypesListener mAllowedNetworkTypesListener; private AllowedNetworkTypesListener mAllowedNetworkTypesListener;
@Mock @Mock
private AllowedNetworkTypesListener.OnAllowedNetworkTypesChangedListener mListener; private AllowedNetworkTypesListener.OnAllowedNetworkTypesListener mListener;
@Mock @Mock
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
@@ -87,15 +87,15 @@ public class AllowedNetworkTypesListenerTest {
public void register_shouldRegisterContentObserver() { public void register_shouldRegisterContentObserver() {
mAllowedNetworkTypesListener.register(mContext, SUB_ID); mAllowedNetworkTypesListener.register(mContext, SUB_ID);
verify(mTelephonyManager, times(1)).registerPhoneStateListener(any(HandlerExecutor.class), verify(mTelephonyManager, times(1)).registerTelephonyCallback(any(HandlerExecutor.class),
any(PhoneStateListener.class)); any(TelephonyCallback.class));
} }
@Test @Test
public void unregister_shouldUnregisterContentObserver() { public void unregister_shouldUnregisterContentObserver() {
mAllowedNetworkTypesListener.unregister(mContext, SUB_ID); mAllowedNetworkTypesListener.unregister(mContext, SUB_ID);
verify(mTelephonyManager).unregisterPhoneStateListener( verify(mTelephonyManager).unregisterTelephonyCallback(
mAllowedNetworkTypesListener); mAllowedNetworkTypesListener);
} }
} }

View File

@@ -207,22 +207,22 @@ public class NetworkProviderWorkerTest {
@Test @Test
@UiThreadTest @UiThreadTest
public void onServiceStateChanged_notifyPhoneStateListener_callUpdateSlice() { public void onServiceStateChanged_notifyTelephonyCallback_callUpdateSlice() {
mMockNetworkProviderWorker.onSlicePinned(); mMockNetworkProviderWorker.onSlicePinned();
mMockNetworkProviderWorker.receiveNotification(false); mMockNetworkProviderWorker.receiveNotification(false);
mMockNetworkProviderWorker.mPhoneStateListener.onServiceStateChanged(new ServiceState()); mMockNetworkProviderWorker.mTelephonyCallback.onServiceStateChanged(new ServiceState());
assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue(); assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
} }
@Test @Test
@UiThreadTest @UiThreadTest
public void onDisplayInfoChanged_notifyPhoneStateListener_callUpdateSlice() { public void onDisplayInfoChanged_notifyTelephonyCallback_callUpdateSlice() {
mMockNetworkProviderWorker.onSlicePinned(); mMockNetworkProviderWorker.onSlicePinned();
mMockNetworkProviderWorker.receiveNotification(false); mMockNetworkProviderWorker.receiveNotification(false);
mMockNetworkProviderWorker.mPhoneStateListener.onDisplayInfoChanged( mMockNetworkProviderWorker.mTelephonyCallback.onDisplayInfoChanged(
new TelephonyDisplayInfo(14, 0)); new TelephonyDisplayInfo(14, 0));
assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue(); assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
@@ -230,11 +230,11 @@ public class NetworkProviderWorkerTest {
@Test @Test
@UiThreadTest @UiThreadTest
public void onDataConnectionStateChanged_notifyPhoneStateListener_callUpdateSlice() { public void onDataConnectionStateChanged_notifyTelephonyCallback_callUpdateSlice() {
mMockNetworkProviderWorker.onSlicePinned(); mMockNetworkProviderWorker.onSlicePinned();
mMockNetworkProviderWorker.receiveNotification(false); mMockNetworkProviderWorker.receiveNotification(false);
mMockNetworkProviderWorker.mPhoneStateListener.onDataConnectionStateChanged( mMockNetworkProviderWorker.mTelephonyCallback.onDataConnectionStateChanged(
TelephonyManager.DATA_DISCONNECTED, TelephonyManager.NETWORK_TYPE_LTE); TelephonyManager.DATA_DISCONNECTED, TelephonyManager.NETWORK_TYPE_LTE);
assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue(); assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();