[Settings] Mobile data usage code refactor

Code refactor

Bug: 151751844
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataUsagePreferenceControllerTest
Change-Id: Ie1870523ce83e6a1fc56fe9bc4c61708e0e745c4
diff --git a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java
index b260657..4499881 100644
--- a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java
+++ b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java
@@ -35,7 +35,6 @@
 public class DataUsagePreferenceController extends TelephonyBasePreferenceController {
 
     private NetworkTemplate mTemplate;
-    private DataUsageController.DataUsageInfo mDataUsageInfo;
 
     public DataUsagePreferenceController(Context context, String key) {
         super(context, key);
@@ -68,18 +67,12 @@
             preference.setEnabled(false);
             return;
         }
-        long usageLevel = mDataUsageInfo.usageLevel;
-        if (usageLevel <= 0L) {
-            final DataUsageController controller = new DataUsageController(mContext);
-            usageLevel = controller.getHistoricalUsageLevel(mTemplate);
-        }
-        final boolean enabled = usageLevel > 0L;
-        preference.setEnabled(enabled);
-
-        if (enabled) {
-            preference.setSummary(mContext.getString(R.string.data_usage_template,
-                    DataUsageUtils.formatDataUsage(mContext, mDataUsageInfo.usageLevel),
-                    mDataUsageInfo.period));
+        final CharSequence summary = getDataUsageSummary(mContext, mSubId);
+        if (summary == null) {
+            preference.setEnabled(false);
+        } else {
+            preference.setEnabled(true);
+            preference.setSummary(summary);
         }
     }
 
@@ -90,9 +83,22 @@
             return;
         }
         mTemplate = DataUsageUtils.getDefaultTemplate(mContext, mSubId);
+    }
 
-        final DataUsageController controller = new DataUsageController(mContext);
-        controller.setSubscriptionId(mSubId);
-        mDataUsageInfo = controller.getDataUsageInfo(mTemplate);
+    private CharSequence getDataUsageSummary(Context context, int subId) {
+        final DataUsageController controller = new DataUsageController(context);
+        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);
     }
 }