[Settings] Change the way in InternetPreferenceController for getting the subscription info from room db part4

Bug: 254405469
Test: atest InternetPreferenceControllerTest
Change-Id: I7f3b471ca1fcabd3c44b82fff8af7002fa2fbc24
This commit is contained in:
Zoey Chen
2022-10-06 11:16:53 +00:00
parent 31a3bd2e03
commit 1c4a1989f3
7 changed files with 62 additions and 28 deletions

View File

@@ -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<SubscriptionInfoEntity> mSubInfoEntityList = new ArrayList<>();
@VisibleForTesting
static Map<Integer, Integer> 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<SubscriptionInfoEntity> subInfoEntityList) {
if ((mSubInfoEntityList != null &&
(subInfoEntityList.isEmpty() || !subInfoEntityList.equals(mSubInfoEntityList)))
|| (!subInfoEntityList.isEmpty() && mSubInfoEntityList == null)) {
mSubInfoEntityList = subInfoEntityList;
updateState(mPreference);
}
}
@Override
public void onActiveSubInfoChanged(List<SubscriptionInfoEntity> activeSubInfoList) {
}
@Override
public void onAllUiccInfoChanged(List<UiccInfoEntity> uiccInfoEntityList) {
}
@Override
public void onAllMobileNetworkInfoChanged(
List<MobileNetworkInfoEntity> mobileNetworkInfoEntityList) {
}
}