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

Commit 433045df authored by Sarah Chin's avatar Sarah Chin Committed by Automerger Merge Worker
Browse files

Merge "NetworkTypeController listen directly to setPreferredNetworkType" into...

Merge "NetworkTypeController listen directly to setPreferredNetworkType" into rvc-dev am: 6b3d35d4 am: 8d08ee5b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/11982029

Change-Id: I447acc3523e1ab15f1b1f7479990f82c9ccccc8a
parents 6751c1f7 8d08ee5b
Loading
Loading
Loading
Loading
+8 −10
Original line number Original line Diff line number Diff line
@@ -23,7 +23,6 @@ import android.content.IntentFilter;
import android.os.AsyncResult;
import android.os.AsyncResult;
import android.os.Message;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.PersistableBundle;
import android.provider.Settings;
import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants;
import android.telephony.Annotation;
import android.telephony.Annotation;
import android.telephony.CarrierConfigManager;
import android.telephony.CarrierConfigManager;
@@ -89,14 +88,14 @@ public class NetworkTypeController extends StateMachine {
    private static final int EVENT_SECONDARY_TIMER_EXPIRED = 9;
    private static final int EVENT_SECONDARY_TIMER_EXPIRED = 9;
    private static final int EVENT_RADIO_OFF_OR_UNAVAILABLE = 10;
    private static final int EVENT_RADIO_OFF_OR_UNAVAILABLE = 10;
    private static final int EVENT_PREFERRED_NETWORK_MODE_CHANGED = 11;
    private static final int EVENT_PREFERRED_NETWORK_MODE_CHANGED = 11;
    private static final int EVENT_INIITIALIZE = 12;
    private static final int EVENT_INITIALIZE = 12;
    // events that don't reset the timer
    // events that don't reset the timer
    private static final int[] ALL_EVENTS = { EVENT_DATA_RAT_CHANGED, EVENT_NR_STATE_CHANGED,
    private static final int[] ALL_EVENTS = { EVENT_DATA_RAT_CHANGED, EVENT_NR_STATE_CHANGED,
            EVENT_NR_FREQUENCY_CHANGED, EVENT_PHYSICAL_LINK_STATE_CHANGED,
            EVENT_NR_FREQUENCY_CHANGED, EVENT_PHYSICAL_LINK_STATE_CHANGED,
            EVENT_PHYSICAL_CHANNEL_CONFIG_NOTIF_CHANGED, EVENT_PRIMARY_TIMER_EXPIRED,
            EVENT_PHYSICAL_CHANNEL_CONFIG_NOTIF_CHANGED, EVENT_PRIMARY_TIMER_EXPIRED,
            EVENT_SECONDARY_TIMER_EXPIRED};
            EVENT_SECONDARY_TIMER_EXPIRED};


    private static final String[] sEvents = new String[EVENT_PREFERRED_NETWORK_MODE_CHANGED + 1];
    private static final String[] sEvents = new String[EVENT_INITIALIZE + 1];
    static {
    static {
        sEvents[EVENT_UPDATE] = "EVENT_UPDATE";
        sEvents[EVENT_UPDATE] = "EVENT_UPDATE";
        sEvents[EVENT_QUIT] = "EVENT_QUIT";
        sEvents[EVENT_QUIT] = "EVENT_QUIT";
@@ -111,11 +110,11 @@ public class NetworkTypeController extends StateMachine {
        sEvents[EVENT_SECONDARY_TIMER_EXPIRED] = "EVENT_SECONDARY_TIMER_EXPIRED";
        sEvents[EVENT_SECONDARY_TIMER_EXPIRED] = "EVENT_SECONDARY_TIMER_EXPIRED";
        sEvents[EVENT_RADIO_OFF_OR_UNAVAILABLE] = "EVENT_RADIO_OFF_OR_UNAVAILABLE";
        sEvents[EVENT_RADIO_OFF_OR_UNAVAILABLE] = "EVENT_RADIO_OFF_OR_UNAVAILABLE";
        sEvents[EVENT_PREFERRED_NETWORK_MODE_CHANGED] = "EVENT_PREFERRED_NETWORK_MODE_CHANGED";
        sEvents[EVENT_PREFERRED_NETWORK_MODE_CHANGED] = "EVENT_PREFERRED_NETWORK_MODE_CHANGED";
        sEvents[EVENT_INITIALIZE] = "EVENT_INITIALIZE";
    }
    }


    private final Phone mPhone;
    private final Phone mPhone;
    private final DisplayInfoController mDisplayInfoController;
    private final DisplayInfoController mDisplayInfoController;
    private final SettingsObserver mSettingsObserver;
    private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
    private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
        @Override
        @Override
        public void onReceive(Context context, Intent intent) {
        public void onReceive(Context context, Intent intent) {
@@ -150,7 +149,6 @@ public class NetworkTypeController extends StateMachine {
        super(TAG, displayInfoController);
        super(TAG, displayInfoController);
        mPhone = phone;
        mPhone = phone;
        mDisplayInfoController = displayInfoController;
        mDisplayInfoController = displayInfoController;
        mSettingsObserver = new SettingsObserver(mPhone.getContext(), getHandler());
        mOverrideNetworkType = TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE;
        mOverrideNetworkType = TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE;
        mIsPhysicalChannelConfigOn = true;
        mIsPhysicalChannelConfigOn = true;
        addState(mDefaultState);
        addState(mDefaultState);
@@ -160,7 +158,7 @@ public class NetworkTypeController extends StateMachine {
        addState(mNrConnectedState, mDefaultState);
        addState(mNrConnectedState, mDefaultState);
        setInitialState(mDefaultState);
        setInitialState(mDefaultState);
        start();
        start();
        sendMessage(EVENT_INIITIALIZE);
        sendMessage(EVENT_INITIALIZE);
    }
    }


    /**
    /**
@@ -174,6 +172,8 @@ public class NetworkTypeController extends StateMachine {
    private void registerForAllEvents() {
    private void registerForAllEvents() {
        mPhone.registerForRadioOffOrNotAvailable(getHandler(),
        mPhone.registerForRadioOffOrNotAvailable(getHandler(),
                EVENT_RADIO_OFF_OR_UNAVAILABLE, null);
                EVENT_RADIO_OFF_OR_UNAVAILABLE, null);
        mPhone.registerForPreferredNetworkTypeChanged(getHandler(),
                EVENT_PREFERRED_NETWORK_MODE_CHANGED, null);
        mPhone.getServiceStateTracker().registerForDataRegStateOrRatChanged(
        mPhone.getServiceStateTracker().registerForDataRegStateOrRatChanged(
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, getHandler(),
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, getHandler(),
                EVENT_DATA_RAT_CHANGED, null);
                EVENT_DATA_RAT_CHANGED, null);
@@ -189,19 +189,17 @@ public class NetworkTypeController extends StateMachine {
        IntentFilter filter = new IntentFilter();
        IntentFilter filter = new IntentFilter();
        filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
        filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
        mPhone.getContext().registerReceiver(mIntentReceiver, filter, null, mPhone);
        mPhone.getContext().registerReceiver(mIntentReceiver, filter, null, mPhone);
        mSettingsObserver.observe(Settings.Global.getUriFor(Settings.Global.PREFERRED_NETWORK_MODE),
                EVENT_PREFERRED_NETWORK_MODE_CHANGED);
    }
    }


    private void unRegisterForAllEvents() {
    private void unRegisterForAllEvents() {
        mPhone.unregisterForRadioOffOrNotAvailable(getHandler());
        mPhone.unregisterForRadioOffOrNotAvailable(getHandler());
        mPhone.unregisterForPreferredNetworkTypeChanged(getHandler());
        mPhone.getServiceStateTracker().unregisterForDataRegStateOrRatChanged(
        mPhone.getServiceStateTracker().unregisterForDataRegStateOrRatChanged(
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, getHandler());
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, getHandler());
        mPhone.getServiceStateTracker().unregisterForNrStateChanged(getHandler());
        mPhone.getServiceStateTracker().unregisterForNrStateChanged(getHandler());
        mPhone.getServiceStateTracker().unregisterForNrFrequencyChanged(getHandler());
        mPhone.getServiceStateTracker().unregisterForNrFrequencyChanged(getHandler());
        mPhone.getDeviceStateMonitor().unregisterForPhysicalChannelConfigNotifChanged(getHandler());
        mPhone.getDeviceStateMonitor().unregisterForPhysicalChannelConfigNotifChanged(getHandler());
        mPhone.getContext().unregisterReceiver(mIntentReceiver);
        mPhone.getContext().unregisterReceiver(mIntentReceiver);
        mSettingsObserver.unobserve();
    }
    }


    private void parseCarrierConfigs() {
    private void parseCarrierConfigs() {
@@ -440,7 +438,7 @@ public class NetworkTypeController extends StateMachine {
                    unRegisterForAllEvents();
                    unRegisterForAllEvents();
                    quit();
                    quit();
                    break;
                    break;
                case EVENT_INIITIALIZE:
                case EVENT_INITIALIZE:
                    // The reason that we do it here is because some of the works below requires
                    // The reason that we do it here is because some of the works below requires
                    // other modules (e.g. DcTracker, ServiceStateTracker), which is not created
                    // other modules (e.g. DcTracker, ServiceStateTracker), which is not created
                    // yet when NetworkTypeController is created.
                    // yet when NetworkTypeController is created.
+24 −0
Original line number Original line Diff line number Diff line
@@ -401,6 +401,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {


    private final RegistrantList mOtaspRegistrants = new RegistrantList();
    private final RegistrantList mOtaspRegistrants = new RegistrantList();


    private final RegistrantList mPreferredNetworkTypeRegistrants = new RegistrantList();

    protected Registrant mPostDialHandler;
    protected Registrant mPostDialHandler;


    protected final LocalLog mLocalLog;
    protected final LocalLog mLocalLog;
@@ -2264,6 +2266,7 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
                + " filteredType = " + filteredType);
                + " filteredType = " + filteredType);


        mCi.setPreferredNetworkType(filteredType, response);
        mCi.setPreferredNetworkType(filteredType, response);
        mPreferredNetworkTypeRegistrants.notifyRegistrants();
    }
    }


    /**
    /**
@@ -2275,6 +2278,27 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        mCi.getPreferredNetworkType(response);
        mCi.getPreferredNetworkType(response);
    }
    }


    /**
     * Register for preferred network type changes
     *
     * @param h Handler that receives the notification message.
     * @param what User-defined message code.
     * @param obj User object.
     */
    public void registerForPreferredNetworkTypeChanged(Handler h, int what, Object obj) {
        checkCorrectThread(h);
        mPreferredNetworkTypeRegistrants.addUnique(h, what, obj);
    }

    /**
     * Unregister for preferred network type changes.
     *
     * @param h Handler that should be unregistered.
     */
    public void unregisterForPreferredNetworkTypeChanged(Handler h) {
        mPreferredNetworkTypeRegistrants.remove(h);
    }

    /**
    /**
     * Get the cached value of the preferred network type setting
     * Get the cached value of the preferred network type setting
     */
     */
+1 −0
Original line number Original line Diff line number Diff line
@@ -57,6 +57,7 @@ public class NetworkTypeControllerTest extends TelephonyTest {
    private static final int EVENT_SECONDARY_TIMER_EXPIRED = 9;
    private static final int EVENT_SECONDARY_TIMER_EXPIRED = 9;
    private static final int EVENT_RADIO_OFF_OR_UNAVAILABLE = 10;
    private static final int EVENT_RADIO_OFF_OR_UNAVAILABLE = 10;
    private static final int EVENT_PREFERRED_NETWORK_MODE_CHANGED = 11;
    private static final int EVENT_PREFERRED_NETWORK_MODE_CHANGED = 11;
    private static final int EVENT_INITIALIZE = 12;


    private NetworkTypeController mNetworkTypeController;
    private NetworkTypeController mNetworkTypeController;
    private PersistableBundle mBundle;
    private PersistableBundle mBundle;