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

Commit 27e50206 authored by Sarah Chin's avatar Sarah Chin Committed by Gerrit Code Review
Browse files

Merge changes I4e976920,If2a1e621

* changes:
  Update override network type on PCC changed event
  NetworkTypeController update on PCC changed for LTE/LTE+ switch
parents 68b044d5 3871bc78
Loading
Loading
Loading
Loading
+33 −32
Original line number Diff line number Diff line
@@ -608,15 +608,14 @@ public class NetworkTypeController extends StateMachine {
                    // ignored
                    break;
                case EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED:
                    if (!mIsPhysicalChannelConfig16Supported) {
                        // ignore
                        break;
                    }
                    if (mIsPhysicalChannelConfig16Supported) {
                        mPhysicalLinkState = getPhysicalLinkStateFromPhysicalChannelConfig();
                        if (mIsTimerResetEnabledForLegacyStateRRCIdle && !isPhysicalLinkActive()) {
                            resetAllTimers();
                        updateOverrideNetworkType();
                        }
                    }
                    // Update in case of LTE/LTE+ switch
                    updateOverrideNetworkType();
                    break;
                case EVENT_PHYSICAL_LINK_STATE_CHANGED:
                    AsyncResult ar = (AsyncResult) msg.obj;
@@ -681,20 +680,21 @@ public class NetworkTypeController extends StateMachine {
                    // ignore
                    break;
                case EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED:
                    if (!mIsPhysicalChannelConfig16Supported) {
                        // ignore
                        break;
                    }
                    if (mIsPhysicalChannelConfig16Supported) {
                        mPhysicalLinkState = getPhysicalLinkStateFromPhysicalChannelConfig();
                        if (isNrNotRestricted()) {
                            // NOT_RESTRICTED_RRC_IDLE -> NOT_RESTRICTED_RRC_CON
                            if (isPhysicalLinkActive()) {
                                transitionWithTimerTo(mLteConnectedState);
                                break;
                            }
                        } else {
                            log("NR state changed. Sending EVENT_NR_STATE_CHANGED");
                            sendMessage(EVENT_NR_STATE_CHANGED);
                        }
                    }
                    // Update in case of LTE/LTE+ switch
                    updateOverrideNetworkType();
                    break;
                case EVENT_PHYSICAL_LINK_STATE_CHANGED:
                    AsyncResult ar = (AsyncResult) msg.obj;
@@ -764,20 +764,21 @@ public class NetworkTypeController extends StateMachine {
                    // ignore
                    break;
                case EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED:
                    if (!mIsPhysicalChannelConfig16Supported) {
                        // ignore
                        break;
                    }
                    if (mIsPhysicalChannelConfig16Supported) {
                        mPhysicalLinkState = getPhysicalLinkStateFromPhysicalChannelConfig();
                        if (isNrNotRestricted()) {
                            // NOT_RESTRICTED_RRC_CON -> NOT_RESTRICTED_RRC_IDLE
                            if (!isPhysicalLinkActive()) {
                                transitionWithTimerTo(mIdleState);
                                break;
                            }
                        } else {
                            log("NR state changed. Sending EVENT_NR_STATE_CHANGED");
                            sendMessage(EVENT_NR_STATE_CHANGED);
                        }
                    }
                    // Update in case of LTE/LTE+ switch
                    updateOverrideNetworkType();
                    break;
                case EVENT_PHYSICAL_LINK_STATE_CHANGED:
                    AsyncResult ar = (AsyncResult) msg.obj;
+1 −1
Original line number Diff line number Diff line
@@ -1716,7 +1716,6 @@ public class ServiceStateTracker extends Handler {
                        log("EVENT_PHYSICAL_CHANNEL_CONFIG: size=" + list.size() + " list="
                                + list);
                    }
                    mPhone.notifyPhysicalChannelConfig(list);
                    mLastPhysicalChannelConfigList = list;
                    boolean hasChanged = false;
                    if (updateNrStateFromPhysicalChannelConfigs(list, mSS)) {
@@ -1730,6 +1729,7 @@ public class ServiceStateTracker extends Handler {
                    hasChanged |= RatRatcheter
                            .updateBandwidths(getBandwidthsFromConfigs(list), mSS);

                    mPhone.notifyPhysicalChannelConfig(list);
                    // Notify NR frequency, NR connection status or bandwidths changed.
                    if (hasChanged) {
                        mPhone.notifyServiceStateChanged(mSS);
+75 −1
Original line number Diff line number Diff line
@@ -478,7 +478,6 @@ public class NetworkTypeControllerTest extends TelephonyTest {
        mBundle.putInt(CarrierConfigManager.KEY_NR_ADVANCED_CAPABLE_PCO_ID_INT, 0xFF03);
        broadcastCarrierConfigs();


        mNetworkTypeController.sendMessage(EVENT_PCO_DATA_CHANGED,
                new AsyncResult(null, new PcoData(cid, "", 0xff03, contents), null));
        mNetworkTypeController.sendMessage(NetworkTypeController.EVENT_UPDATE);
@@ -565,6 +564,81 @@ public class NetworkTypeControllerTest extends TelephonyTest {
        assertEquals("not_restricted_rrc_con", getCurrentState().getName());
    }

    @Test
    public void testEventPhysicalChannelChangeFromLteToLteCaInLegacyState() throws Exception {
        testTransitionToCurrentStateLegacy();
        doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType();
        updateOverrideNetworkType();
        assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE,
                mNetworkTypeController.getOverrideNetworkType());

        doReturn(true).when(mServiceState).isUsingCarrierAggregation();
        doReturn(new int[] {30000}).when(mServiceState).getCellBandwidths();
        mNetworkTypeController.sendMessage(EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED);
        processAllMessages();

        assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA,
                mNetworkTypeController.getOverrideNetworkType());
    }

    @Test
    public void testEventPhysicalChannelChangeFromLteToLteCaInLteConnectedState() throws Exception {
        // Remove RRC idle/RRC connected from 5G override
        mBundle = mContextFixture.getCarrierConfigBundle();
        mBundle.putString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING,
                "connected_mmwave:5G_Plus,connected:5G");
        broadcastCarrierConfigs();

        // Transition to LTE connected state
        doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType();
        doReturn(NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED).when(mServiceState).getNrState();
        mNetworkTypeController.sendMessage(EVENT_PHYSICAL_LINK_STATE_CHANGED,
                new AsyncResult(null, DcController.PHYSICAL_LINK_ACTIVE, null));
        mNetworkTypeController.sendMessage(NetworkTypeController.EVENT_UPDATE);
        processAllMessages();
        assertEquals("not_restricted_rrc_con", getCurrentState().getName());
        assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE,
                mNetworkTypeController.getOverrideNetworkType());

        // LTE -> LTE+
        doReturn(true).when(mServiceState).isUsingCarrierAggregation();
        doReturn(new int[] {30000}).when(mServiceState).getCellBandwidths();
        mNetworkTypeController.sendMessage(EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED);
        processAllMessages();

        assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA,
                mNetworkTypeController.getOverrideNetworkType());
    }

    @Test
    public void testEventPhysicalChannelChangeFromLteToLteCaInIdleState() throws Exception {
        // Remove RRC idle/RRC connected from 5G override
        mBundle = mContextFixture.getCarrierConfigBundle();
        mBundle.putString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING,
                "connected_mmwave:5G_Plus,connected:5G");
        broadcastCarrierConfigs();

        // Transition to idle state
        doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType();
        doReturn(NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED).when(mServiceState).getNrState();
        mNetworkTypeController.sendMessage(EVENT_PHYSICAL_LINK_STATE_CHANGED,
                new AsyncResult(null, DcController.PHYSICAL_LINK_NOT_ACTIVE, null));
        mNetworkTypeController.sendMessage(NetworkTypeController.EVENT_UPDATE);
        processAllMessages();
        assertEquals("not_restricted_rrc_idle", getCurrentState().getName());
        assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE,
                mNetworkTypeController.getOverrideNetworkType());

        // LTE -> LTE+
        doReturn(true).when(mServiceState).isUsingCarrierAggregation();
        doReturn(new int[] {30000}).when(mServiceState).getCellBandwidths();
        mNetworkTypeController.sendMessage(EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED);
        processAllMessages();

        assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA,
                mNetworkTypeController.getOverrideNetworkType());
    }

    @Test
    public void testEventPhysicalLinkStateChanged() throws Exception {
        testTransitionToCurrentStateLteConnected();