Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 809f500e authored by Zoey Chen's avatar Zoey Chen
Browse files

[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
parent 4fff4549
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -30,8 +30,8 @@ import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import android.provider.Settings;
import android.telephony.PhoneStateListener;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import android.util.Log;

@@ -92,8 +92,8 @@ public class MultinetworkPolicyTracker {
    }

    @VisibleForTesting
    protected class ActiveDataSubscriptionIdChangedListener extends PhoneStateListener
            implements PhoneStateListener.ActiveDataSubscriptionIdChangedListener {
    protected class ActiveDataSubscriptionIdListener extends TelephonyCallback
            implements TelephonyCallback.ActiveDataSubscriptionIdListener {
        @Override
        public void onActiveDataSubscriptionIdChanged(int subId) {
            mActiveSubId = subId;
@@ -121,8 +121,8 @@ public class MultinetworkPolicyTracker {
            }
        };

        ctx.getSystemService(TelephonyManager.class).registerPhoneStateListener(
                new HandlerExecutor(handler), new ActiveDataSubscriptionIdChangedListener());
        ctx.getSystemService(TelephonyManager.class).registerTelephonyCallback(
                new HandlerExecutor(handler), new ActiveDataSubscriptionIdListener());

        updateAvoidBadWifi();
        updateMeteredMultipathPreference();
+16 −18
Original line number Diff line number Diff line
@@ -25,11 +25,11 @@ import android.provider.Settings.Global;
import android.telephony.Annotation;
import android.telephony.CellSignalStrength;
import android.telephony.CellSignalStrengthCdma;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyDisplayInfo;
import android.telephony.TelephonyManager;
import android.text.Html;
@@ -63,7 +63,7 @@ public class MobileSignalController extends SignalController<
    private final String mNetworkNameSeparator;
    private final ContentObserver mObserver;
    @VisibleForTesting
    final PhoneStateListener mPhoneStateListener;
    final MobileTelephonyCallback mTelephonyCallback;
    // Save entire info for logging, we only use the id.
    final SubscriptionInfo mSubscriptionInfo;

@@ -83,6 +83,7 @@ public class MobileSignalController extends SignalController<
    private Config mConfig;
    @VisibleForTesting
    boolean mInflateSignalStrengths = false;
    final Handler mHandler;

    // TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't
    // need listener lists anymore.
@@ -98,7 +99,8 @@ public class MobileSignalController extends SignalController<
        mPhone = phone;
        mDefaults = defaults;
        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)
                .toString();
        mNetworkNameDefault = getTextIfExists(
@@ -157,15 +159,7 @@ public class MobileSignalController extends SignalController<
     * Start listening for phone state changes.
     */
    public void registerListener() {
        mPhone.listen(mPhoneStateListener,
                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);
        mPhone.registerTelephonyCallback(mHandler::post, mTelephonyCallback);
        mContext.getContentResolver().registerContentObserver(Global.getUriFor(Global.MOBILE_DATA),
                true, mObserver);
        mContext.getContentResolver().registerContentObserver(Global.getUriFor(
@@ -177,7 +171,7 @@ public class MobileSignalController extends SignalController<
     * Stop listening for phone state changes.
     */
    public void unregisterListener() {
        mPhone.listen(mPhoneStateListener, 0);
        mPhone.unregisterTelephonyCallback(mTelephonyCallback);
        mContext.getContentResolver().unregisterContentObserver(mObserver);
    }

@@ -622,11 +616,15 @@ public class MobileSignalController extends SignalController<
        pw.println("  isDataDisabled=" + isDataDisabled() + ",");
    }

    class MobilePhoneStateListener extends PhoneStateListener {
        public MobilePhoneStateListener(Executor executor) {
            super(executor);
        }

    class MobileTelephonyCallback extends TelephonyCallback implements
            TelephonyCallback.SignalStrengthsListener,
            TelephonyCallback.ServiceStateListener,
            TelephonyCallback.DataConnectionStateListener,
            TelephonyCallback.DataActivityListener,
            TelephonyCallback.CarrierNetworkListener,
            TelephonyCallback.ActiveDataSubscriptionIdListener,
            TelephonyCallback.DisplayInfoListener
    {
        @Override
        public void onSignalStrengthsChanged(SignalStrength signalStrength) {
            if (DEBUG) {
+10 −15
Original line number Diff line number Diff line
@@ -47,11 +47,11 @@ import android.provider.Settings;
import android.provider.Settings.Global;
import android.telephony.CellSignalStrength;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyDisplayInfo;
import android.telephony.TelephonyManager;
import android.testing.TestableLooper;
@@ -95,7 +95,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase {

    protected NetworkControllerImpl mNetworkController;
    protected MobileSignalController mMobileSignalController;
    protected PhoneStateListener mPhoneStateListener;
    protected SignalStrength mSignalStrength;
    protected ServiceState mServiceState;
    protected TelephonyDisplayInfo mTelephonyDisplayInfo;
@@ -211,8 +210,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
        setDefaultSubId(mSubId);
        setSubscriptions(mSubId);
        mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId);
        mPhoneStateListener = mMobileSignalController.mPhoneStateListener;

        ArgumentCaptor<ConnectivityManager.NetworkCallback> callbackArg =
            ArgumentCaptor.forClass(ConnectivityManager.NetworkCallback.class);
        verify(mMockCm, atLeastOnce())
@@ -340,18 +337,15 @@ public class NetworkControllerBaseTest extends SysuiTestCase {

    private void updateSignalStrength() {
        Log.d(TAG, "Sending Signal Strength: " + mSignalStrength);
        mPhoneStateListener.onSignalStrengthsChanged(mSignalStrength);
        mMobileSignalController.mTelephonyCallback
                .onSignalStrengthsChanged(mSignalStrength);
    }

    protected void updateServiceState() {
        Log.d(TAG, "Sending Service State: " + mServiceState);
        mPhoneStateListener.onServiceStateChanged(mServiceState);
        mPhoneStateListener.onDisplayInfoChanged(mTelephonyDisplayInfo);
    }

    public void updateCallState(int state) {
        // Inputs not currently used in NetworkControllerImpl.
        mPhoneStateListener.onCallStateChanged(state, "0123456789");
        mMobileSignalController.mTelephonyCallback.onServiceStateChanged(mServiceState);
        mMobileSignalController.mTelephonyCallback
                .onDisplayInfoChanged(mTelephonyDisplayInfo);
    }

    public void updateDataConnectionState(int dataState, int dataNetType) {
@@ -363,16 +357,17 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
        when(mServiceState.getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN))
                .thenReturn(fakeRegInfo);
        when(mTelephonyDisplayInfo.getNetworkType()).thenReturn(dataNetType);
        mPhoneStateListener.onDataConnectionStateChanged(dataState, dataNetType);
        mMobileSignalController.mTelephonyCallback
                .onDataConnectionStateChanged(dataState, dataNetType);
    }

    public void updateDataActivity(int dataActivity) {
        mPhoneStateListener.onDataActivity(dataActivity);
        mMobileSignalController.mTelephonyCallback.onDataActivity(dataActivity);
    }

    public void setCarrierNetworkChange(boolean enable) {
        Log.d(TAG, "setCarrierNetworkChange(" + enable + ")");
        mPhoneStateListener.onCarrierNetworkChange(enable);
        mMobileSignalController.mTelephonyCallback.onCarrierNetworkChange(enable);
    }

    protected void verifyHasNoSims(boolean hasNoSimsVisible) {
+3 −3
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ import android.content.res.Resources
import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_HANDOVER
import android.net.ConnectivityManager.MULTIPATH_PREFERENCE_PERFORMANCE
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.Global.NETWORK_AVOID_BAD_WIFI
import android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE
@@ -120,9 +120,9 @@ class MultinetworkPolicyTrackerTest {
                MULTIPATH_PREFERENCE_PERFORMANCE.toString())

        val listenerCaptor = ArgumentCaptor.forClass(
                ActiveDataSubscriptionIdChangedListener::class.java)
                ActiveDataSubscriptionIdListener::class.java)
        verify(telephonyManager, times(1))
                .registerPhoneStateListener(any(), listenerCaptor.capture())
                .registerTelephonyCallback(any(), listenerCaptor.capture())
        val listener = listenerCaptor.value
        listener.onActiveDataSubscriptionIdChanged(testSubId)