[Settings] Mobile data usage code refactor

Code refactor

Bug: 151751844
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataUsagePreferenceControllerTest
Change-Id: Ie1870523ce83e6a1fc56fe9bc4c61708e0e745c4
This commit is contained in:
Bonian Chen
2020-04-22 17:43:49 +08:00
parent 7db5840dfe
commit 0fef82fbd1

View File

@@ -35,7 +35,6 @@ import com.android.settingslib.net.DataUsageController;
public class DataUsagePreferenceController extends TelephonyBasePreferenceController { public class DataUsagePreferenceController extends TelephonyBasePreferenceController {
private NetworkTemplate mTemplate; private NetworkTemplate mTemplate;
private DataUsageController.DataUsageInfo mDataUsageInfo;
public DataUsagePreferenceController(Context context, String key) { public DataUsagePreferenceController(Context context, String key) {
super(context, key); super(context, key);
@@ -68,18 +67,12 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro
preference.setEnabled(false); preference.setEnabled(false);
return; return;
} }
long usageLevel = mDataUsageInfo.usageLevel; final CharSequence summary = getDataUsageSummary(mContext, mSubId);
if (usageLevel <= 0L) { if (summary == null) {
final DataUsageController controller = new DataUsageController(mContext); preference.setEnabled(false);
usageLevel = controller.getHistoricalUsageLevel(mTemplate); } else {
} preference.setEnabled(true);
final boolean enabled = usageLevel > 0L; preference.setSummary(summary);
preference.setEnabled(enabled);
if (enabled) {
preference.setSummary(mContext.getString(R.string.data_usage_template,
DataUsageUtils.formatDataUsage(mContext, mDataUsageInfo.usageLevel),
mDataUsageInfo.period));
} }
} }
@@ -90,9 +83,22 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro
return; return;
} }
mTemplate = DataUsageUtils.getDefaultTemplate(mContext, mSubId); mTemplate = DataUsageUtils.getDefaultTemplate(mContext, mSubId);
}
final DataUsageController controller = new DataUsageController(mContext); private CharSequence getDataUsageSummary(Context context, int subId) {
controller.setSubscriptionId(mSubId); final DataUsageController controller = new DataUsageController(context);
mDataUsageInfo = controller.getDataUsageInfo(mTemplate); controller.setSubscriptionId(subId);
final DataUsageController.DataUsageInfo usageInfo = controller.getDataUsageInfo(mTemplate);
long usageLevel = usageInfo.usageLevel;
if (usageLevel <= 0L) {
usageLevel = controller.getHistoricalUsageLevel(mTemplate);
}
if (usageLevel <= 0L) {
return null;
}
return context.getString(R.string.data_usage_template,
DataUsageUtils.formatDataUsage(context, usageLevel), usageInfo.period);
} }
} }