Loading src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +16 −2 Original line number Diff line number Diff line Loading @@ -29,9 +29,12 @@ import android.telephony.TelephonyManager; import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.ListPreference; import androidx.preference.ListPreferenceDialogFragmentCompat; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading Loading @@ -67,6 +70,7 @@ public class EnabledNetworkModePreferenceController extends private SubscriptionsChangeListener mSubscriptionsListener; private int mCallState = TelephonyManager.CALL_STATE_IDLE; private PhoneCallStateTelephonyCallback mTelephonyCallback; private FragmentManager mFragmentManager; public EnabledNetworkModePreferenceController(Context context, String key) { super(context, key); Loading Loading @@ -151,7 +155,16 @@ public class EnabledNetworkModePreferenceController extends listPreference.setEntryValues(mBuilder.getEntryValues()); listPreference.setValue(Integer.toString(mBuilder.getSelectedEntryValue())); listPreference.setSummary(mBuilder.getSummary()); listPreference.setEnabled(isCallStateIdle()); boolean listPreferenceEnabled = isCallStateIdle(); listPreference.setEnabled(listPreferenceEnabled); if (!listPreferenceEnabled) { // If dialog is already opened when ListPreference disabled, dismiss them. for (Fragment fragment : mFragmentManager.getFragments()) { if (fragment instanceof ListPreferenceDialogFragmentCompat) { ((ListPreferenceDialogFragmentCompat) fragment).dismiss(); } } } } @Override Loading @@ -169,8 +182,9 @@ public class EnabledNetworkModePreferenceController extends return false; } void init(int subId) { void init(int subId, FragmentManager fragmentManager) { mSubId = subId; mFragmentManager = fragmentManager; mTelephonyManager = mContext.getSystemService(TelephonyManager.class) .createForSubscriptionId(mSubId); mBuilder = new PreferenceEntriesBuilder(mContext, mSubId); Loading src/com/android/settings/network/telephony/MobileNetworkSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme use(CarrierPreferenceController.class).init(mSubId); use(DataUsagePreferenceController.class).init(mSubId); use(PreferredNetworkModePreferenceController.class).init(mSubId); use(EnabledNetworkModePreferenceController.class).init(mSubId); use(EnabledNetworkModePreferenceController.class).init(mSubId, getParentFragmentManager()); use(DataServiceSetupPreferenceController.class).init(mSubId); use(Enable2gPreferenceController.class).init(mSubId); use(CarrierWifiTogglePreferenceController.class).init(getLifecycle(), mSubId); Loading tests/unit/src/com/android/settings/network/EnabledNetworkModePreferenceControllerTest.java→tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java +16 −10 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading Loading @@ -46,6 +46,7 @@ import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.LifecycleOwner; import androidx.preference.ListPreference; import androidx.preference.PreferenceManager; Loading @@ -64,6 +65,8 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.Collections; @RunWith(AndroidJUnit4.class) public class EnabledNetworkModePreferenceControllerTest { private static final int SUB_ID = 2; Loading @@ -80,6 +83,8 @@ public class EnabledNetworkModePreferenceControllerTest { private CarrierConfigCache mCarrierConfigCache; @Mock private ServiceState mServiceState; @Mock private FragmentManager mFragmentManager; private PersistableBundle mPersistableBundle; private EnabledNetworkModePreferenceController mController; Loading Loading @@ -111,7 +116,8 @@ public class EnabledNetworkModePreferenceControllerTest { mController = new EnabledNetworkModePreferenceController(mContext, KEY); mockAllowedNetworkTypes(ALLOWED_ALL_NETWORK_TYPE); mockAccessFamily(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA); mController.init(SUB_ID); when(mFragmentManager.getFragments()).thenReturn(Collections.emptyList()); mController.init(SUB_ID, mFragmentManager); mPreference.setKey(mController.getPreferenceKey()); } Loading Loading @@ -205,7 +211,7 @@ public class EnabledNetworkModePreferenceControllerTest { public void updateState_5gWorldPhone_GlobalHasNr() { mockAllowedNetworkTypes(ALLOWED_ALL_NETWORK_TYPE); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true); mController.updateState(mPreference); Loading @@ -221,7 +227,7 @@ public class EnabledNetworkModePreferenceControllerTest { mockAllowedNetworkTypes(ALLOWED_ALL_NETWORK_TYPE); mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); // NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = NR | LTE | RAF_TD_SCDMA | GSM | WCDMA when(mTelephonyManager.getAllowedNetworkTypesForReason( Loading @@ -241,7 +247,7 @@ public class EnabledNetworkModePreferenceControllerTest { mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); // NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = NR | LTE | RAF_TD_SCDMA | GSM | WCDMA when(mTelephonyManager.getAllowedNetworkTypesForReason( Loading @@ -261,7 +267,7 @@ public class EnabledNetworkModePreferenceControllerTest { mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); // NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = NR | LTE | RAF_TD_SCDMA | GSM | WCDMA when(mTelephonyManager.getAllowedNetworkTypesForReason( Loading @@ -281,7 +287,7 @@ public class EnabledNetworkModePreferenceControllerTest { mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); // NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = LTE | CDMA | EVDO | GSM | WCDMA when(mTelephonyManager.getAllowedNetworkTypesForReason( Loading @@ -304,7 +310,7 @@ public class EnabledNetworkModePreferenceControllerTest { public void updateState_GlobalDisAllowed5g_GlobalWithoutNR() { mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true); // NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA = NR | LTE | CDMA | EVDO | GSM | WCDMA Loading @@ -324,7 +330,7 @@ public class EnabledNetworkModePreferenceControllerTest { public void updateState_GlobalDisAllowed5g_SelectOnGlobal() { mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true); // NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA = NR | LTE | CDMA | EVDO | GSM | WCDMA Loading Loading @@ -497,7 +503,7 @@ public class EnabledNetworkModePreferenceControllerTest { mPersistableBundle.putBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL, true); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL, true); } mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); } private void mockAllowedNetworkTypes(long allowedNetworkType) { Loading Loading
src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +16 −2 Original line number Diff line number Diff line Loading @@ -29,9 +29,12 @@ import android.telephony.TelephonyManager; import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.ListPreference; import androidx.preference.ListPreferenceDialogFragmentCompat; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading Loading @@ -67,6 +70,7 @@ public class EnabledNetworkModePreferenceController extends private SubscriptionsChangeListener mSubscriptionsListener; private int mCallState = TelephonyManager.CALL_STATE_IDLE; private PhoneCallStateTelephonyCallback mTelephonyCallback; private FragmentManager mFragmentManager; public EnabledNetworkModePreferenceController(Context context, String key) { super(context, key); Loading Loading @@ -151,7 +155,16 @@ public class EnabledNetworkModePreferenceController extends listPreference.setEntryValues(mBuilder.getEntryValues()); listPreference.setValue(Integer.toString(mBuilder.getSelectedEntryValue())); listPreference.setSummary(mBuilder.getSummary()); listPreference.setEnabled(isCallStateIdle()); boolean listPreferenceEnabled = isCallStateIdle(); listPreference.setEnabled(listPreferenceEnabled); if (!listPreferenceEnabled) { // If dialog is already opened when ListPreference disabled, dismiss them. for (Fragment fragment : mFragmentManager.getFragments()) { if (fragment instanceof ListPreferenceDialogFragmentCompat) { ((ListPreferenceDialogFragmentCompat) fragment).dismiss(); } } } } @Override Loading @@ -169,8 +182,9 @@ public class EnabledNetworkModePreferenceController extends return false; } void init(int subId) { void init(int subId, FragmentManager fragmentManager) { mSubId = subId; mFragmentManager = fragmentManager; mTelephonyManager = mContext.getSystemService(TelephonyManager.class) .createForSubscriptionId(mSubId); mBuilder = new PreferenceEntriesBuilder(mContext, mSubId); Loading
src/com/android/settings/network/telephony/MobileNetworkSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -260,7 +260,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme use(CarrierPreferenceController.class).init(mSubId); use(DataUsagePreferenceController.class).init(mSubId); use(PreferredNetworkModePreferenceController.class).init(mSubId); use(EnabledNetworkModePreferenceController.class).init(mSubId); use(EnabledNetworkModePreferenceController.class).init(mSubId, getParentFragmentManager()); use(DataServiceSetupPreferenceController.class).init(mSubId); use(Enable2gPreferenceController.class).init(mSubId); use(CarrierWifiTogglePreferenceController.class).init(getLifecycle(), mSubId); Loading
tests/unit/src/com/android/settings/network/EnabledNetworkModePreferenceControllerTest.java→tests/unit/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java +16 −10 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading Loading @@ -46,6 +46,7 @@ import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.LifecycleOwner; import androidx.preference.ListPreference; import androidx.preference.PreferenceManager; Loading @@ -64,6 +65,8 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.Collections; @RunWith(AndroidJUnit4.class) public class EnabledNetworkModePreferenceControllerTest { private static final int SUB_ID = 2; Loading @@ -80,6 +83,8 @@ public class EnabledNetworkModePreferenceControllerTest { private CarrierConfigCache mCarrierConfigCache; @Mock private ServiceState mServiceState; @Mock private FragmentManager mFragmentManager; private PersistableBundle mPersistableBundle; private EnabledNetworkModePreferenceController mController; Loading Loading @@ -111,7 +116,8 @@ public class EnabledNetworkModePreferenceControllerTest { mController = new EnabledNetworkModePreferenceController(mContext, KEY); mockAllowedNetworkTypes(ALLOWED_ALL_NETWORK_TYPE); mockAccessFamily(TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA); mController.init(SUB_ID); when(mFragmentManager.getFragments()).thenReturn(Collections.emptyList()); mController.init(SUB_ID, mFragmentManager); mPreference.setKey(mController.getPreferenceKey()); } Loading Loading @@ -205,7 +211,7 @@ public class EnabledNetworkModePreferenceControllerTest { public void updateState_5gWorldPhone_GlobalHasNr() { mockAllowedNetworkTypes(ALLOWED_ALL_NETWORK_TYPE); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true); mController.updateState(mPreference); Loading @@ -221,7 +227,7 @@ public class EnabledNetworkModePreferenceControllerTest { mockAllowedNetworkTypes(ALLOWED_ALL_NETWORK_TYPE); mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); // NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = NR | LTE | RAF_TD_SCDMA | GSM | WCDMA when(mTelephonyManager.getAllowedNetworkTypesForReason( Loading @@ -241,7 +247,7 @@ public class EnabledNetworkModePreferenceControllerTest { mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); // NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = NR | LTE | RAF_TD_SCDMA | GSM | WCDMA when(mTelephonyManager.getAllowedNetworkTypesForReason( Loading @@ -261,7 +267,7 @@ public class EnabledNetworkModePreferenceControllerTest { mockEnabledNetworkMode(TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); // NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = NR | LTE | RAF_TD_SCDMA | GSM | WCDMA when(mTelephonyManager.getAllowedNetworkTypesForReason( Loading @@ -281,7 +287,7 @@ public class EnabledNetworkModePreferenceControllerTest { mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); // NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = LTE | CDMA | EVDO | GSM | WCDMA when(mTelephonyManager.getAllowedNetworkTypesForReason( Loading @@ -304,7 +310,7 @@ public class EnabledNetworkModePreferenceControllerTest { public void updateState_GlobalDisAllowed5g_GlobalWithoutNR() { mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true); // NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA = NR | LTE | CDMA | EVDO | GSM | WCDMA Loading @@ -324,7 +330,7 @@ public class EnabledNetworkModePreferenceControllerTest { public void updateState_GlobalDisAllowed5g_SelectOnGlobal() { mockAccessFamily(TelephonyManager.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); mockAllowedNetworkTypes(DISABLED_5G_NETWORK_TYPE); mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_WORLD_MODE_ENABLED_BOOL, true); // NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA = NR | LTE | CDMA | EVDO | GSM | WCDMA Loading Loading @@ -497,7 +503,7 @@ public class EnabledNetworkModePreferenceControllerTest { mPersistableBundle.putBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL, true); mPersistableBundle.putBoolean(CarrierConfigManager.KEY_LTE_ENABLED_BOOL, true); } mController.init(SUB_ID); mController.init(SUB_ID, mFragmentManager); } private void mockAllowedNetworkTypes(long allowedNetworkType) { Loading