From 2e109565621ea06d6518719167afc043eb11decb Mon Sep 17 00:00:00 2001 From: Alexander Koskovich Date: Wed, 30 Oct 2024 17:49:38 -0400 Subject: [PATCH] Add a mobile data toggle for setup mIsInSetupWizard was moved to top of NetworkProviderSetting's onCreate so it is available for addPreferences(). Change-Id: I9299c3033e96bcd30450ec239f14fb5daa800d63 --- res/xml/network_provider_settings.xml | 7 ++++ .../network/NetworkProviderSettings.java | 24 +++++++++++-- .../MobileDataPreferenceController.java | 35 ++++++++++--------- .../telephony/MobileNetworkSettings.java | 2 +- ...DataPreferenceControllerComponentTest.java | 2 +- .../MobileDataPreferenceControllerTest.java | 2 +- 6 files changed, 50 insertions(+), 22 deletions(-) diff --git a/res/xml/network_provider_settings.xml b/res/xml/network_provider_settings.xml index 74ec948713c..d30dcb26302 100644 --- a/res/xml/network_provider_settings.xml +++ b/res/xml/network_provider_settings.xml @@ -42,6 +42,13 @@ android:summary="@string/to_switch_networks_disconnect_ethernet" android:icon="@drawable/ic_settings_ethernet"/> + + mSubscriptionInfoEntityList = new ArrayList<>(); private List mMobileNetworkInfoEntityList = new ArrayList<>(); private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; @@ -75,10 +74,10 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon MobileNetworkInfoEntity mMobileNetworkInfoEntity; public MobileDataPreferenceController(Context context, String key, Lifecycle lifecycle, - LifecycleOwner lifecycleOwner, int subId) { + int subId, boolean isInSetupWizard) { this(context, key); mSubId = subId; - mLifecycleOwner = lifecycleOwner; + mIsInSetupWizard = isInSetupWizard; if (lifecycle != null) { lifecycle.addObserver(this); } @@ -92,12 +91,13 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon @Override public int getAvailabilityStatus(int subId) { - if (Flags.isDualSimOnboardingEnabled()) { + if ((Flags.isDualSimOnboardingEnabled() && !mIsInSetupWizard) + || mSubscriptionManager.getActiveSubscriptionInfo(subId) == null + || !mSubscriptionManager.isUsableSubscriptionId(subId) + || !DataUsageUtils.hasMobileData(mContext)) { return CONDITIONALLY_UNAVAILABLE; } - return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID - ? AVAILABLE - : AVAILABLE_UNSEARCHABLE; + return AVAILABLE; } @Override @@ -106,14 +106,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon mPreference = screen.findPreference(getPreferenceKey()); } - @OnLifecycleEvent(ON_START) - public void onStart() { - mMobileNetworkRepository.addRegister(mLifecycleOwner, this, mSubId); + @Override + public void onResume(@NonNull LifecycleOwner owner) { + mMobileNetworkRepository.addRegister(owner, this, mSubId); mMobileNetworkRepository.updateEntity(); } - @OnLifecycleEvent(ON_STOP) - public void onStop() { + @Override + public void onPause(@NonNull LifecycleOwner owner) { mMobileNetworkRepository.removeRegister(this); } @@ -174,6 +174,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon return; } + mPreference.setVisible(isAvailable()); mPreference.setChecked(isChecked()); if (mSubscriptionInfoEntity.isOpportunistic) { mPreference.setEnabled(false); diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java index d934c99634b..0d3490d3d97 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java +++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java @@ -197,7 +197,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme new SmsDefaultSubscriptionController(context, KEY_SMS_PREF, getSettingsLifecycle(), this), new MobileDataPreferenceController(context, KEY_MOBILE_DATA_PREF, - getSettingsLifecycle(), this, mSubId), + getSettingsLifecycle(), mSubId, false), new ConvertToEsimPreferenceController(context, KEY_CONVERT_TO_ESIM_PREF, getSettingsLifecycle(), this, mSubId), eid); } diff --git a/tests/componenttests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerComponentTest.java b/tests/componenttests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerComponentTest.java index df3dd2effd2..1078bcdc3f9 100644 --- a/tests/componenttests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerComponentTest.java +++ b/tests/componenttests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerComponentTest.java @@ -131,7 +131,7 @@ public class MobileDataPreferenceControllerComponentTest { URL url = new URL("https://www.google.net"); MobileDataPreferenceController controller = new MobileDataPreferenceController( mInstrumentation.getTargetContext(), "mobile_data", mLifecycle, - mLifecycleOwner, sSubscriptionId); + sSubscriptionId, false); FragmentManager manager = ((FragmentActivity) activity).getSupportFragmentManager(); controller.init(manager, sSubscriptionId, mock(SubscriptionInfoEntity.class), mock( MobileNetworkInfoEntity.class)); diff --git a/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java index 6897c018207..3704242efdc 100644 --- a/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java @@ -109,7 +109,7 @@ public class MobileDataPreferenceControllerTest { mPreference = new SwitchPreference(mContext); mController = new MobileDataPreferenceController(mContext, "mobile_data", mLifecycle, - mLifecycleOwner, SUB_ID); + SUB_ID, false); mController.init(mFragmentManager, SUB_ID, mSubInfo1, mNetworkInfo1); mPreference.setKey(mController.getPreferenceKey()); mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner);