From 1c4a1989f335908ea09c8f7f717e4a2c26e81d2d Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Thu, 6 Oct 2022 11:16:53 +0000 Subject: [PATCH] [Settings] Change the way in InternetPreferenceController for getting the subscription info from room db part4 Bug: 254405469 Test: atest InternetPreferenceControllerTest Change-Id: I7f3b471ca1fcabd3c44b82fff8af7002fa2fbc24 --- .../network/InternetPreferenceController.java | 71 +++++++++++++------ .../network/MobileNetworkRepository.java | 3 +- .../network/NetworkDashboardFragment.java | 2 +- .../InternetPreferenceControllerTest.java | 5 +- ...NetworkProviderCallsSmsControllerTest.java | 4 +- ...oviderDownloadedSimListControllerTest.java | 2 +- .../NetworkProviderSimListControllerTest.java | 3 +- 7 files changed, 62 insertions(+), 28 deletions(-) diff --git a/src/com/android/settings/network/InternetPreferenceController.java b/src/com/android/settings/network/InternetPreferenceController.java index 48cc884da61..e5a86906eaa 100644 --- a/src/com/android/settings/network/InternetPreferenceController.java +++ b/src/com/android/settings/network/InternetPreferenceController.java @@ -29,11 +29,13 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; +import android.util.Log; import androidx.annotation.IdRes; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; +import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -43,9 +45,14 @@ import com.android.settings.widget.SummaryUpdater; import com.android.settings.wifi.WifiSummaryUpdater; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; +import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; +import com.android.settingslib.mobile.dataservice.UiccInfoEntity; import com.android.settingslib.utils.ThreadUtils; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -53,7 +60,7 @@ import java.util.Map; */ public class InternetPreferenceController extends AbstractPreferenceController implements LifecycleObserver, SummaryUpdater.OnSummaryChangeListener, - InternetUpdater.InternetChangeListener { + InternetUpdater.InternetChangeListener, MobileNetworkRepository.MobileNetworkCallback { public static final String KEY = "internet_settings"; @@ -61,6 +68,9 @@ public class InternetPreferenceController extends AbstractPreferenceController i private final WifiSummaryUpdater mSummaryHelper; private InternetUpdater mInternetUpdater; private @InternetUpdater.InternetType int mInternetType; + private LifecycleOwner mLifecycleOwner; + private MobileNetworkRepository mMobileNetworkRepository; + private List mSubInfoEntityList = new ArrayList<>(); @VisibleForTesting static Map sIconMap = new HashMap<>(); @@ -81,7 +91,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i sSummaryMap.put(INTERNET_ETHERNET, R.string.to_switch_networks_disconnect_ethernet); } - public InternetPreferenceController(Context context, Lifecycle lifecycle) { + public InternetPreferenceController(Context context, Lifecycle lifecycle, + LifecycleOwner lifecycleOwner) { super(context); if (lifecycle == null) { throw new IllegalArgumentException("Lifecycle must be set"); @@ -89,6 +100,8 @@ public class InternetPreferenceController extends AbstractPreferenceController i mSummaryHelper = new WifiSummaryUpdater(mContext, this); mInternetUpdater = new InternetUpdater(context, lifecycle, this); mInternetType = mInternetUpdater.getInternetType(); + mLifecycleOwner = lifecycleOwner; + mMobileNetworkRepository = new MobileNetworkRepository(context, this); lifecycle.addObserver(this); } @@ -143,12 +156,14 @@ public class InternetPreferenceController extends AbstractPreferenceController i /** @OnLifecycleEvent(ON_RESUME) */ @OnLifecycleEvent(ON_RESUME) public void onResume() { + mMobileNetworkRepository.addRegister(mLifecycleOwner); mSummaryHelper.register(true); } /** @OnLifecycleEvent(ON_PAUSE) */ @OnLifecycleEvent(ON_PAUSE) public void onPause() { + mMobileNetworkRepository.removeRegister(); mSummaryHelper.register(false); } @@ -187,27 +202,43 @@ public class InternetPreferenceController extends AbstractPreferenceController i @VisibleForTesting void updateCellularSummary() { - final SubscriptionManager subscriptionManager = - mContext.getSystemService(SubscriptionManager.class); - if (subscriptionManager == null) { - return; + CharSequence summary = null; + for (SubscriptionInfoEntity subInfo : mSubInfoEntityList) { + if (subInfo.isSubscriptionVisible && subInfo.isActiveDataSubscriptionId) { + summary = subInfo.uniqueName; + break; + } else if (subInfo.isDefaultDataSubscription) { + summary = mContext.getString( + R.string.mobile_data_temp_using, subInfo.uniqueName); + } } - SubscriptionInfo subInfo = subscriptionManager.getActiveSubscriptionInfo( - SubscriptionManager.getActiveDataSubscriptionId()); - SubscriptionInfo defaultSubInfo = subscriptionManager.getDefaultDataSubscriptionInfo(); - subInfo = subscriptionManager.isSubscriptionVisible(subInfo) ? subInfo : defaultSubInfo; - if (subInfo == null) { + + if (summary == null) { return; } - CharSequence summary; - if (subInfo.equals(defaultSubInfo)) { - // DDS is active - summary = SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext); - } else { - summary = mContext.getString( - R.string.mobile_data_temp_using, - SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext)); - } mPreference.setSummary(summary); } + + @Override + public void onAvailableSubInfoChanged(List subInfoEntityList) { + if ((mSubInfoEntityList != null && + (subInfoEntityList.isEmpty() || !subInfoEntityList.equals(mSubInfoEntityList))) + || (!subInfoEntityList.isEmpty() && mSubInfoEntityList == null)) { + mSubInfoEntityList = subInfoEntityList; + updateState(mPreference); + } + } + + @Override + public void onActiveSubInfoChanged(List activeSubInfoList) { + } + + @Override + public void onAllUiccInfoChanged(List uiccInfoEntityList) { + } + + @Override + public void onAllMobileNetworkInfoChanged( + List mobileNetworkInfoEntityList) { + } } diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java index 2e8ef0eb361..3b7a7ba9d69 100644 --- a/src/com/android/settings/network/MobileNetworkRepository.java +++ b/src/com/android/settings/network/MobileNetworkRepository.java @@ -348,7 +348,8 @@ public class MobileNetworkRepository extends SubscriptionManager.OnSubscriptions mSubscriptionManager.getDefaultVoiceSubscriptionId() == mSubId, mSubscriptionManager.getDefaultSmsSubscriptionId() == mSubId, mSubscriptionManager.getDefaultDataSubscriptionId() == mSubId, - mSubscriptionManager.getDefaultSubscriptionId() == mSubId); + mSubscriptionManager.getDefaultSubscriptionId() == mSubId, + mSubscriptionManager.getActiveDataSubscriptionId() == mSubId); } } diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java index a94a1bf08fe..39cf1367be2 100644 --- a/src/com/android/settings/network/NetworkDashboardFragment.java +++ b/src/com/android/settings/network/NetworkDashboardFragment.java @@ -97,7 +97,7 @@ public class NetworkDashboardFragment extends DashboardFragment implements final MobilePlanPreferenceController mobilePlanPreferenceController = new MobilePlanPreferenceController(context, mobilePlanHost); final InternetPreferenceController internetPreferenceController = - new InternetPreferenceController(context, lifecycle); + new InternetPreferenceController(context, lifecycle, lifecycleOwner); final VpnPreferenceController vpnPreferenceController = new VpnPreferenceController(context); diff --git a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java index 6d9e49db9c2..65edb3e66c3 100644 --- a/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/InternetPreferenceControllerTest.java @@ -42,6 +42,7 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; @@ -73,6 +74,7 @@ public class InternetPreferenceControllerTest { private InternetPreferenceController mController; private PreferenceScreen mScreen; private Preference mPreference; + private LifecycleOwner mLifecycleOwner; @Before public void setUp() { @@ -84,7 +86,8 @@ public class InternetPreferenceControllerTest { when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(wifiManager); when(wifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_DISABLED); - mController = new InternetPreferenceController(mContext, mock(Lifecycle.class)); + mController = new InternetPreferenceController(mContext, mock(Lifecycle.class), + mLifecycleOwner); mController.sIconMap.put(INTERNET_WIFI, 0); if (Looper.myLooper() == null) { Looper.prepare(); diff --git a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java index 88cf775a64e..007251a5a42 100644 --- a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java +++ b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java @@ -170,8 +170,8 @@ public class NetworkProviderCallsSmsControllerTest { TelephonyManager.DEFAULT_PORT_INDEX, false, null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, "1234567890", true, "default", false, isValid, - true, isActive, isAvailable, isDefaultCall, - isDefaultSms, false, false); + true, isActive, isAvailable, isDefaultCall, isDefaultSms, false, false, + false); } @Test diff --git a/tests/unit/src/com/android/settings/network/NetworkProviderDownloadedSimListControllerTest.java b/tests/unit/src/com/android/settings/network/NetworkProviderDownloadedSimListControllerTest.java index dd61b5600c6..7dbef05fd2f 100644 --- a/tests/unit/src/com/android/settings/network/NetworkProviderDownloadedSimListControllerTest.java +++ b/tests/unit/src/com/android/settings/network/NetworkProviderDownloadedSimListControllerTest.java @@ -150,7 +150,7 @@ public class NetworkProviderDownloadedSimListControllerTest { mcc, mnc, countryIso, true, cardId, TelephonyManager.DEFAULT_PORT_INDEX, false, null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, "1234567890", true, defaultSimConfig.toString(), false, isValid, true, isActive, - isAvailable, isDefaultCall, isDefaultSms, isDefaultData, false); + isAvailable, isDefaultCall, isDefaultSms, isDefaultData, false, false); } private String setSummaryResId(String resName) { diff --git a/tests/unit/src/com/android/settings/network/NetworkProviderSimListControllerTest.java b/tests/unit/src/com/android/settings/network/NetworkProviderSimListControllerTest.java index 16f8afdf541..16995d50f45 100644 --- a/tests/unit/src/com/android/settings/network/NetworkProviderSimListControllerTest.java +++ b/tests/unit/src/com/android/settings/network/NetworkProviderSimListControllerTest.java @@ -156,8 +156,7 @@ public class NetworkProviderSimListControllerTest { mcc, mnc, countryIso, false, cardId, TelephonyManager.DEFAULT_PORT_INDEX, false, null, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM, displayName, false, "1234567890", true, defaultSimConfig.toString(), false, isValid, true, isActive, - isAvailable, - isDefaultCall, isDefaultSms, false, false); + isAvailable, isDefaultCall, isDefaultSms, false, false, false); } private String setSummaryResId(String resName, String value) {