[Settings] Support the display of data usage when SIM inactive

SIM can be inactive but remain existed within slot.
Therefore, change the design here.

Bug: 143996139
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataUsageSummaryPreferenceControllerTest
Change-Id: I24ec529b120b2801f7b9089b07d32bdd1038883f
This commit is contained in:
Bonian Chen
2020-04-23 19:48:36 +08:00
parent cb0a251c38
commit bc10c00149
2 changed files with 10 additions and 56 deletions

View File

@@ -120,14 +120,14 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
mContext.getSystemService(NetworkPolicyManager.class);
mPolicyEditor = new NetworkPolicyEditor(policyManager);
mHasMobileData = SubscriptionManager.isValidSubscriptionId(mSubId)
&& DataUsageUtils.hasMobileData(mContext);
mHasMobileData = DataUsageUtils.hasMobileData(mContext);
mDataUsageController = new DataUsageController(mContext);
mDataUsageController.setSubscriptionId(mSubId);
mDataInfoController = new DataUsageInfoController();
if (mHasMobileData) {
final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId);
if (subInfo != null) {
mDataUsageTemplate = R.string.cell_data_template;
} else if (DataUsageUtils.hasWifiRadio(mContext)) {
mDataUsageTemplate = R.string.wifi_data_template;
@@ -180,18 +180,16 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
@VisibleForTesting
SubscriptionInfo getSubscriptionInfo(int subscriptionId) {
if (!mHasMobileData) {
return null;
}
return ProxySubscriptionManager.getInstance(mContext)
.getAccessibleSubscriptionInfo(subscriptionId);
}
@VisibleForTesting
boolean hasSim() {
return DataUsageUtils.hasSim(mContext);
}
@Override
public int getAvailabilityStatus(int subId) {
return hasSim()
return (getSubscriptionInfo(subId) != null)
|| DataUsageUtils.hasWifiRadio(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
@@ -199,16 +197,15 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
public void updateState(Preference preference) {
DataUsageSummaryPreference summaryPreference = (DataUsageSummaryPreference) preference;
final boolean isSimCardAdded = hasSim();
if (!isSimCardAdded) {
final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId);
if (subInfo == null) {
mDefaultTemplate = NetworkTemplate.buildTemplateWifiWildcard();
}
final DataUsageController.DataUsageInfo info =
mDataUsageController.getDataUsageInfo(mDefaultTemplate);
final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId);
if (isSimCardAdded) {
if (subInfo != null) {
mDataInfoController.updateDataLimit(info, mPolicyEditor.getPolicy(mDefaultTemplate));
summaryPreference.setWifiMode(/* isWifiMode */ false,
/* usagePeriod */ null, /* isSingleWifi */ false);