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

Commit c023d496 authored by SongFerng Wang's avatar SongFerng Wang Committed by Automerger Merge Worker
Browse files

Merge "To fix bug, summary is wrong if nr_enabled_bool=false" into rvc-qpr-dev...

Merge "To fix bug, summary is wrong if nr_enabled_bool=false" into rvc-qpr-dev am: 3e5defe5 am: 94937319

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/12875667

Change-Id: I3b06b785b0ae6d907f7cd6f09d7830c5b8cdb0c3
parents 29c4b843 94937319
Loading
Loading
Loading
Loading
+41 −1
Original line number Diff line number Diff line
@@ -365,9 +365,15 @@ public class EnabledNetworkModePreferenceController extends
        }

        private int getPreferredNetworkMode() {
            return Settings.Global.getInt(mContext.getContentResolver(),
            int networkMode = Settings.Global.getInt(mContext.getContentResolver(),
                    Settings.Global.PREFERRED_NETWORK_MODE + mSubId,
                    TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE);
            if (!showNrList()) {
                Log.d(LOG_TAG, "Network mode :" + networkMode + " reduce NR");
                networkMode = reduceNrToLteNetworkType(networkMode);
            }
            Log.d(LOG_TAG, "getPreferredNetworkMode: " + networkMode);
            return networkMode;
        }

        private EnabledNetworks getEnabledNetworkType() {
@@ -635,6 +641,40 @@ public class EnabledNetworkModePreferenceController extends
            }
        }

        /**
         * Transform NR5G network mode to LTE network mode.
         *
         * @param networkType an 5G network mode.
         * @return the corresponding network mode without 5G.
         */
        private static int reduceNrToLteNetworkType(int networkType) {
            switch(networkType) {
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
                    return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA;
                case TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
                    return TelephonyManagerConstants
                            .NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
                default:
                    return networkType; // do nothing
            }
        }

        private void setPreferenceValueAndSummary() {
            setPreferenceValueAndSummary(getPreferredNetworkMode());
        }
+28 −1
Original line number Diff line number Diff line
@@ -221,6 +221,28 @@ public class EnabledNetworkModePreferenceControllerTest {
                        TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
    }

    @Test
    public void updateState_NrEnableBoolFalse_5gOptionHidden() {
        mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA);
        mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
        mPersistableBundle.putBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL, false);

        mController.init(mLifecycle, SUB_ID);
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
                TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA);

        mController.updateState(mPreference);

        assertThat(mPreference.getValue()).isEqualTo(
                String.valueOf(
                        TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
        assertThat(mPreference.getEntryValues())
                .asList()
                .doesNotContain(
                        String.valueOf(TelephonyManager.NETWORK_MODE_NR_LTE_GSM_WCDMA));
    }

    @Test
    public void updateState_GlobalDisAllowed5g_GlobalWithoutNR() {
        mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA);
@@ -393,6 +415,11 @@ public class EnabledNetworkModePreferenceControllerTest {
        } else if (networkMode == TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA) {
            mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
            mPersistableBundle.putBoolean(CarrierConfigManager.KEY_SUPPORT_TDSCDMA_BOOL, true);
        } else if (networkMode
                == TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA) {
            mockPhoneType(TelephonyManager.PHONE_TYPE_GSM);
            mPersistableBundle.putBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL, true);
            mPersistableBundle.putBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL, true);
        }
    }

@@ -407,6 +434,6 @@ public class EnabledNetworkModePreferenceControllerTest {
    }

    private void mockPhoneType(int phoneType) {
        doReturn(TelephonyManager.PHONE_TYPE_GSM).when(mTelephonyManager).getPhoneType();
        doReturn(phoneType).when(mTelephonyManager).getPhoneType();
    }
}