[Telephony] Use TelephonyCallback instead of PhoneStateListener part1

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

Bug: 167684594
Test: make
Change-Id: Ia3b777b12142b104b5798804f50b34748f9bf28c
Merged-In: Ia3b777b12142b104b5798804f50b34748f9bf28c
This commit is contained in:
Zoey Chen 2021-02-22 21:03:44 +08:00
parent 4fff45499f
commit 809f500e0d
4 changed files with 34 additions and 41 deletions

View File

@ -30,8 +30,8 @@ import android.database.ContentObserver;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
import android.provider.Settings; import android.provider.Settings;
import android.telephony.PhoneStateListener;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
@ -92,8 +92,8 @@ public class MultinetworkPolicyTracker {
} }
@VisibleForTesting @VisibleForTesting
protected class ActiveDataSubscriptionIdChangedListener extends PhoneStateListener protected class ActiveDataSubscriptionIdListener extends TelephonyCallback
implements PhoneStateListener.ActiveDataSubscriptionIdChangedListener { implements TelephonyCallback.ActiveDataSubscriptionIdListener {
@Override @Override
public void onActiveDataSubscriptionIdChanged(int subId) { public void onActiveDataSubscriptionIdChanged(int subId) {
mActiveSubId = subId; mActiveSubId = subId;
@ -121,8 +121,8 @@ public class MultinetworkPolicyTracker {
} }
}; };
ctx.getSystemService(TelephonyManager.class).registerPhoneStateListener( ctx.getSystemService(TelephonyManager.class).registerTelephonyCallback(
new HandlerExecutor(handler), new ActiveDataSubscriptionIdChangedListener()); new HandlerExecutor(handler), new ActiveDataSubscriptionIdListener());
updateAvoidBadWifi(); updateAvoidBadWifi();
updateMeteredMultipathPreference(); updateMeteredMultipathPreference();

View File

@ -25,11 +25,11 @@ import android.provider.Settings.Global;
import android.telephony.Annotation; import android.telephony.Annotation;
import android.telephony.CellSignalStrength; import android.telephony.CellSignalStrength;
import android.telephony.CellSignalStrengthCdma; import android.telephony.CellSignalStrengthCdma;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.telephony.SignalStrength; import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
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.text.Html; import android.text.Html;
@ -63,7 +63,7 @@ public class MobileSignalController extends SignalController<
private final String mNetworkNameSeparator; private final String mNetworkNameSeparator;
private final ContentObserver mObserver; private final ContentObserver mObserver;
@VisibleForTesting @VisibleForTesting
final PhoneStateListener mPhoneStateListener; final MobileTelephonyCallback mTelephonyCallback;
// Save entire info for logging, we only use the id. // Save entire info for logging, we only use the id.
final SubscriptionInfo mSubscriptionInfo; final SubscriptionInfo mSubscriptionInfo;
@ -83,6 +83,7 @@ public class MobileSignalController extends SignalController<
private Config mConfig; private Config mConfig;
@VisibleForTesting @VisibleForTesting
boolean mInflateSignalStrengths = false; boolean mInflateSignalStrengths = false;
final Handler mHandler;
// TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't // TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't
// need listener lists anymore. // need listener lists anymore.
@ -98,7 +99,8 @@ public class MobileSignalController extends SignalController<
mPhone = phone; mPhone = phone;
mDefaults = defaults; mDefaults = defaults;
mSubscriptionInfo = info; mSubscriptionInfo = info;
mPhoneStateListener = new MobilePhoneStateListener((new Handler(receiverLooper))::post); mHandler = new Handler(receiverLooper);
mTelephonyCallback = new MobileTelephonyCallback();
mNetworkNameSeparator = getTextIfExists(R.string.status_bar_network_name_separator) mNetworkNameSeparator = getTextIfExists(R.string.status_bar_network_name_separator)
.toString(); .toString();
mNetworkNameDefault = getTextIfExists( mNetworkNameDefault = getTextIfExists(
@ -157,15 +159,7 @@ public class MobileSignalController extends SignalController<
* Start listening for phone state changes. * Start listening for phone state changes.
*/ */
public void registerListener() { public void registerListener() {
mPhone.listen(mPhoneStateListener, mPhone.registerTelephonyCallback(mHandler::post, mTelephonyCallback);
PhoneStateListener.LISTEN_SERVICE_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
| PhoneStateListener.LISTEN_CALL_STATE
| PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
| PhoneStateListener.LISTEN_DATA_ACTIVITY
| PhoneStateListener.LISTEN_CARRIER_NETWORK_CHANGE
| PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE
| PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);
mContext.getContentResolver().registerContentObserver(Global.getUriFor(Global.MOBILE_DATA), mContext.getContentResolver().registerContentObserver(Global.getUriFor(Global.MOBILE_DATA),
true, mObserver); true, mObserver);
mContext.getContentResolver().registerContentObserver(Global.getUriFor( mContext.getContentResolver().registerContentObserver(Global.getUriFor(
@ -177,7 +171,7 @@ public class MobileSignalController extends SignalController<
* Stop listening for phone state changes. * Stop listening for phone state changes.
*/ */
public void unregisterListener() { public void unregisterListener() {
mPhone.listen(mPhoneStateListener, 0); mPhone.unregisterTelephonyCallback(mTelephonyCallback);
mContext.getContentResolver().unregisterContentObserver(mObserver); mContext.getContentResolver().unregisterContentObserver(mObserver);
} }
@ -622,11 +616,15 @@ public class MobileSignalController extends SignalController<
pw.println(" isDataDisabled=" + isDataDisabled() + ","); pw.println(" isDataDisabled=" + isDataDisabled() + ",");
} }
class MobilePhoneStateListener extends PhoneStateListener { class MobileTelephonyCallback extends TelephonyCallback implements
public MobilePhoneStateListener(Executor executor) { TelephonyCallback.SignalStrengthsListener,
super(executor); TelephonyCallback.ServiceStateListener,
} TelephonyCallback.DataConnectionStateListener,
TelephonyCallback.DataActivityListener,
TelephonyCallback.CarrierNetworkListener,
TelephonyCallback.ActiveDataSubscriptionIdListener,
TelephonyCallback.DisplayInfoListener
{
@Override @Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) { public void onSignalStrengthsChanged(SignalStrength signalStrength) {
if (DEBUG) { if (DEBUG) {

View File

@ -47,11 +47,11 @@ import android.provider.Settings;
import android.provider.Settings.Global; import android.provider.Settings.Global;
import android.telephony.CellSignalStrength; import android.telephony.CellSignalStrength;
import android.telephony.NetworkRegistrationInfo; import android.telephony.NetworkRegistrationInfo;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.telephony.SignalStrength; import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
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.testing.TestableLooper; import android.testing.TestableLooper;
@ -95,7 +95,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
protected NetworkControllerImpl mNetworkController; protected NetworkControllerImpl mNetworkController;
protected MobileSignalController mMobileSignalController; protected MobileSignalController mMobileSignalController;
protected PhoneStateListener mPhoneStateListener;
protected SignalStrength mSignalStrength; protected SignalStrength mSignalStrength;
protected ServiceState mServiceState; protected ServiceState mServiceState;
protected TelephonyDisplayInfo mTelephonyDisplayInfo; protected TelephonyDisplayInfo mTelephonyDisplayInfo;
@ -211,8 +210,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
setDefaultSubId(mSubId); setDefaultSubId(mSubId);
setSubscriptions(mSubId); setSubscriptions(mSubId);
mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId); mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId);
mPhoneStateListener = mMobileSignalController.mPhoneStateListener;
ArgumentCaptor<ConnectivityManager.NetworkCallback> callbackArg = ArgumentCaptor<ConnectivityManager.NetworkCallback> callbackArg =
ArgumentCaptor.forClass(ConnectivityManager.NetworkCallback.class); ArgumentCaptor.forClass(ConnectivityManager.NetworkCallback.class);
verify(mMockCm, atLeastOnce()) verify(mMockCm, atLeastOnce())
@ -340,18 +337,15 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
private void updateSignalStrength() { private void updateSignalStrength() {
Log.d(TAG, "Sending Signal Strength: " + mSignalStrength); Log.d(TAG, "Sending Signal Strength: " + mSignalStrength);
mPhoneStateListener.onSignalStrengthsChanged(mSignalStrength); mMobileSignalController.mTelephonyCallback
.onSignalStrengthsChanged(mSignalStrength);
} }
protected void updateServiceState() { protected void updateServiceState() {
Log.d(TAG, "Sending Service State: " + mServiceState); Log.d(TAG, "Sending Service State: " + mServiceState);
mPhoneStateListener.onServiceStateChanged(mServiceState); mMobileSignalController.mTelephonyCallback.onServiceStateChanged(mServiceState);
mPhoneStateListener.onDisplayInfoChanged(mTelephonyDisplayInfo); mMobileSignalController.mTelephonyCallback
} .onDisplayInfoChanged(mTelephonyDisplayInfo);
public void updateCallState(int state) {
// Inputs not currently used in NetworkControllerImpl.
mPhoneStateListener.onCallStateChanged(state, "0123456789");
} }
public void updateDataConnectionState(int dataState, int dataNetType) { public void updateDataConnectionState(int dataState, int dataNetType) {
@ -363,16 +357,17 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
when(mServiceState.getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN)) when(mServiceState.getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN))
.thenReturn(fakeRegInfo); .thenReturn(fakeRegInfo);
when(mTelephonyDisplayInfo.getNetworkType()).thenReturn(dataNetType); when(mTelephonyDisplayInfo.getNetworkType()).thenReturn(dataNetType);
mPhoneStateListener.onDataConnectionStateChanged(dataState, dataNetType); mMobileSignalController.mTelephonyCallback
.onDataConnectionStateChanged(dataState, dataNetType);
} }
public void updateDataActivity(int dataActivity) { public void updateDataActivity(int dataActivity) {
mPhoneStateListener.onDataActivity(dataActivity); mMobileSignalController.mTelephonyCallback.onDataActivity(dataActivity);
} }
public void setCarrierNetworkChange(boolean enable) { public void setCarrierNetworkChange(boolean enable) {
Log.d(TAG, "setCarrierNetworkChange(" + enable + ")"); Log.d(TAG, "setCarrierNetworkChange(" + enable + ")");
mPhoneStateListener.onCarrierNetworkChange(enable); mMobileSignalController.mTelephonyCallback.onCarrierNetworkChange(enable);
} }
protected void verifyHasNoSims(boolean hasNoSimsVisible) { protected void verifyHasNoSims(boolean hasNoSimsVisible) {

View File

@ -21,7 +21,7 @@ import android.content.res.Resources
import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_HANDOVER import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_HANDOVER
import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_PERFORMANCE import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_PERFORMANCE
import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_RELIABILITY import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_RELIABILITY
import android.net.util.MultinetworkPolicyTracker.ActiveDataSubscriptionIdChangedListener import android.net.util.MultinetworkPolicyTracker.ActiveDataSubscriptionIdListener
import android.provider.Settings import android.provider.Settings
import android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI import android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI
import android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE import android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE
@ -120,9 +120,9 @@ class MultinetworkPolicyTrackerTest {
MULTIPATH_PREFERENCE_PERFORMANCE.toString()) MULTIPATH_PREFERENCE_PERFORMANCE.toString())
val listenerCaptor = ArgumentCaptor.forClass( val listenerCaptor = ArgumentCaptor.forClass(
ActiveDataSubscriptionIdChangedListener::class.java) ActiveDataSubscriptionIdListener::class.java)
verify(telephonyManager, times(1)) verify(telephonyManager, times(1))
.registerPhoneStateListener(any(), listenerCaptor.capture()) .registerTelephonyCallback(any(), listenerCaptor.capture())
val listener = listenerCaptor.value val listener = listenerCaptor.value
listener.onActiveDataSubscriptionIdChanged(testSubId) listener.onActiveDataSubscriptionIdChanged(testSubId)