Add BatteryInfo logging to settings

This Cl adds a few log statements to BatteryInfo to try
and determine what the bottleneck in the Battery Settings
Advanced page could be.

Test: robotests still pass
Bug: 62959645
Change-Id: I1ff712d97bc8be78873c63e187edbffa8e10cd21
diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java
index 5eada88..b0f2f84 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfo.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfo.java
@@ -46,6 +46,7 @@
     public String statusLabel;
     private boolean mCharging;
     private BatteryStats mStats;
+    private static final String LOG_TAG = "BatteryInfo";
     private long timePeriod;
 
     public interface Callback {
@@ -132,6 +133,7 @@
         new AsyncTask<Void, Void, BatteryInfo>() {
             @Override
             protected BatteryInfo doInBackground(Void... params) {
+                final long startTime = System.currentTimeMillis();
                 PowerUsageFeatureProvider provider =
                         FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context);
                 final BatteryUtils batteryUtils = BatteryUtils.getInstance(context);
@@ -144,17 +146,19 @@
                 // 0 means we are discharging, anything else means charging
                 boolean discharging =
                         batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0;
+
                 if (discharging && provider != null
                         && provider.isEnhancedBatteryPredictionEnabled(context)) {
+                    final long prediction = provider.getEnhancedBatteryPrediction(context);
+                    BatteryUtils.logRuntime(LOG_TAG, "time for enhanced BatteryInfo", startTime);
                     return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
-                            elapsedRealtimeUs, shortString,
-                            utils.convertMsToUs(provider.getEnhancedBatteryPrediction(context)),
-                            true);
+                            elapsedRealtimeUs, shortString, utils.convertMsToUs(prediction), true);
                 } else {
+                    long prediction = discharging
+                            ? stats.computeBatteryTimeRemaining(elapsedRealtimeUs) : 0;
+                    BatteryUtils.logRuntime(LOG_TAG, "time for regular BatteryInfo", startTime);
                     return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
-                            elapsedRealtimeUs, shortString,
-                            discharging ? stats.computeBatteryTimeRemaining(elapsedRealtimeUs) : 0,
-                            false);
+                            elapsedRealtimeUs, shortString, prediction, false);
                 }
             }
 
@@ -176,6 +180,7 @@
     public static BatteryInfo getBatteryInfo(Context context, Intent batteryBroadcast,
             BatteryStats stats, long elapsedRealtimeUs, boolean shortString, long drainTimeUs,
             boolean basedOnUsage) {
+        final long startTime = System.currentTimeMillis();
         BatteryInfo info = new BatteryInfo();
         info.mStats = stats;
         info.batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
@@ -232,6 +237,7 @@
                                 chargeStatusLabel);
             }
         }
+        BatteryUtils.logRuntime(LOG_TAG, "time for getBatteryInfo", startTime);
         return info;
     }
 
diff --git a/src/com/android/settings/fuelgauge/BatteryInfoLoader.java b/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
index e85acc5..efaca30 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
@@ -33,7 +33,9 @@
  * when not available.
  */
 public class BatteryInfoLoader extends AsyncLoader<BatteryInfo>{
+
     BatteryStatsHelper mStatsHelper;
+    private static final String LOG_TAG = "BatteryInfoLoader";
 
     public BatteryInfoLoader(Context context, BatteryStatsHelper batteryStatsHelper) {
         super(context);
@@ -47,6 +49,7 @@
 
     @Override
     public BatteryInfo loadInBackground() {
+        final long startTime = System.currentTimeMillis();
         Context context = getContext();
         PowerUsageFeatureProvider powerUsageFeatureProvider =
                 FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context);
@@ -67,19 +70,20 @@
             final Uri queryUri = powerUsageFeatureProvider.getEnhancedBatteryPredictionUri();
             cursor = context.getContentResolver().query(queryUri, null, null, null, null);
         }
+        BatteryStats stats = mStatsHelper.getStats();
+        batteryUtils.logRuntime(LOG_TAG, "BatteryInfoLoader post query", startTime);
         if (cursor != null && cursor.moveToFirst()) {
             long enhancedEstimate = powerUsageFeatureProvider.getTimeRemainingEstimate(cursor);
-            batteryInfo = BatteryInfo.getBatteryInfo(context, batteryBroadcast,
-                    mStatsHelper.getStats(), elapsedRealtimeUs, false /* shortString */,
+            batteryInfo = BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
+                    elapsedRealtimeUs, false /* shortString */,
                     batteryUtils.convertMsToUs(enhancedEstimate), true /* basedOnUsage */);
         } else {
-            BatteryStats stats = mStatsHelper.getStats();
             batteryInfo = BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
                     elapsedRealtimeUs, false /* shortString */,
                     discharging ? 0 : stats.computeBatteryTimeRemaining(elapsedRealtimeUs),
                     false /* basedOnUsage */);
         }
-
+        batteryUtils.logRuntime(LOG_TAG, "BatteryInfoLoader.loadInBackground", startTime);
         return batteryInfo;
     }
 }
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index 7dc7800..b8646f7 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -285,6 +285,10 @@
 
     }
 
+    public static void logRuntime(String tag, String message, long startTime) {
+        Log.d(tag, message + ": " + (System.currentTimeMillis() - startTime) + "ms");
+    }
+
     /**
      * Find package uid from package name
      *