[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.telephony.PhoneStateListener;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
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
PhoneStateListener.AllowedNetworkTypesChangedListener {
public class AllowedNetworkTypesListener extends TelephonyCallback implements
TelephonyCallback.AllowedNetworkTypesListener {
private static final String LOG_TAG = "NetworkModeListener";
@VisibleForTesting
AllowedNetworkTypesListener.OnAllowedNetworkTypesChangedListener mListener;
OnAllowedNetworkTypesListener mListener;
private long mAllowedNetworkType = -1;
private Executor mExecutor;
@@ -44,7 +45,7 @@ public class AllowedNetworkTypesListener extends PhoneStateListener implements
mExecutor = executor;
}
public void setAllowedNetworkTypesChangedListener(OnAllowedNetworkTypesChangedListener lsn) {
public void setAllowedNetworkTypesListener(OnAllowedNetworkTypesListener lsn) {
mListener = lsn;
}
@@ -56,7 +57,7 @@ public class AllowedNetworkTypesListener extends PhoneStateListener implements
public void register(Context context, int subId) {
TelephonyManager telephonyManager = context.getSystemService(
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) {
TelephonyManager telephonyManager = context.getSystemService(
TelephonyManager.class).createForSubscriptionId(subId);
telephonyManager.unregisterPhoneStateListener(this);
telephonyManager.unregisterTelephonyCallback(this);
}
@Override
@@ -84,7 +85,7 @@ public class AllowedNetworkTypesListener extends PhoneStateListener implements
/**
* Listener for update of Preferred Network Mode change
*/
public interface OnAllowedNetworkTypesChangedListener {
public interface OnAllowedNetworkTypesListener {
/**
* Notify the allowed network type changed.
*/

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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