Add some more logging to settings battery stuff

This CL adds logging to areas which are possible suspects for
the slowdown some people have been reporting in the
PowerUsageAdvanced screen. It times the time it takes for various
battery stats methods as well as the time it takes to draw things.

Test: still build (only adds logging)
Bug: 62959645
Bug: 63442960
Change-Id: I7e6c5e83e33a931057c9fdef14d3bef84f514940
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java b/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java
index a966beb..b944577 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryPreference.java
@@ -32,6 +32,7 @@
  * subsystem/app type.
  */
 public class BatteryHistoryPreference extends Preference {
+    private static final String TAG = "BatteryHistoryPreference";
 
     private CharSequence mSummary;
     private TextView mSummaryView;
@@ -73,6 +74,7 @@
     @Override
     public void onBindViewHolder(PreferenceViewHolder view) {
         super.onBindViewHolder(view);
+        final long startTime = System.currentTimeMillis();
         if (mBatteryInfo == null) {
             return;
         }
@@ -88,5 +90,6 @@
         UsageView usageView = (UsageView) view.findViewById(R.id.battery_usage);
         usageView.findViewById(R.id.label_group).setAlpha(.7f);
         mBatteryInfo.bindHistory(usageView);
+        BatteryUtils.logRuntime(TAG, "onBindViewHolder", startTime);
     }
 }
diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java
index 0a9cfd3..a0e56c1 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfo.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfo.java
@@ -136,14 +136,19 @@
 
     public static void getBatteryInfo(final Context context, final Callback callback,
             boolean shortString) {
+        final long startTime = System.currentTimeMillis();
         BatteryStatsHelper statsHelper = new BatteryStatsHelper(context, true);
         statsHelper.create((Bundle) null);
+        BatteryUtils.logRuntime(LOG_TAG, "time to make batteryStatsHelper", startTime);
         BatteryInfo.getBatteryInfo(context, callback, statsHelper, shortString);
     }
 
     public static void getBatteryInfo(final Context context, final Callback callback,
             BatteryStatsHelper statsHelper, boolean shortString) {
-        getBatteryInfo(context, callback, statsHelper.getStats(), shortString);
+        final long startTime = System.currentTimeMillis();
+        BatteryStats stats = statsHelper.getStats();
+        BatteryUtils.logRuntime(LOG_TAG, "time for getStats", startTime);
+        getBatteryInfo(context, callback, stats, shortString);
     }
 
     public static void getBatteryInfo(final Context context, final Callback callback,
@@ -181,7 +186,9 @@
 
             @Override
             protected void onPostExecute(BatteryInfo batteryInfo) {
+                final long startTime = System.currentTimeMillis();
                 callback.onBatteryInfoLoaded(batteryInfo);
+                BatteryUtils.logRuntime(LOG_TAG, "time for callback", startTime);
             }
         }.execute();
     }
diff --git a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
index 90344ce..712b9ad 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
@@ -167,6 +167,7 @@
 
     @Override
     protected void refreshUi() {
+        final long startTime = System.currentTimeMillis();
         final Context context = getContext();
         if (context == null) {
             return;
@@ -186,6 +187,7 @@
         }
 
         BatteryEntry.startRequestQueue();
+        BatteryUtils.logRuntime(TAG, "refreshUI", startTime);
     }
 
     @VisibleForTesting
diff --git a/src/com/android/settings/fuelgauge/PowerUsageBase.java b/src/com/android/settings/fuelgauge/PowerUsageBase.java
index 51f5f39..88edb7a 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageBase.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageBase.java
@@ -37,6 +37,7 @@
     // +1 to allow ordering for PowerUsageSummary.
     @VisibleForTesting
     static final int MENU_STATS_REFRESH = Menu.FIRST + 1;
+    private static final String TAG = "PowerUsageBase";
 
     protected BatteryStatsHelper mStatsHelper;
     protected UserManager mUm;
@@ -89,7 +90,9 @@
     protected abstract void refreshUi();
 
     protected void updatePreference(BatteryHistoryPreference historyPref) {
+        final long startTime = System.currentTimeMillis();
         historyPref.setStats(mStatsHelper);
+        BatteryUtils.logRuntime(TAG, "updatePreference", startTime);
     }
 
     @Override
diff --git a/src/com/android/settings/graph/UsageGraph.java b/src/com/android/settings/graph/UsageGraph.java
index b4c4501..5a4a9cd 100644
--- a/src/com/android/settings/graph/UsageGraph.java
+++ b/src/com/android/settings/graph/UsageGraph.java
@@ -29,15 +29,18 @@
 import android.graphics.Shader.TileMode;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.util.SparseIntArray;
 import android.util.TypedValue;
 import android.view.View;
 
+import com.android.settings.fuelgauge.BatteryUtils;
 import com.android.settingslib.R;
 
 public class UsageGraph extends View {
 
     private static final int PATH_DELIM = -1;
+    public static final String LOG_TAG = "UsageGraph";
 
     private final Paint mLinePaint;
     private final Paint mFillPaint;
@@ -108,10 +111,12 @@
     }
 
     void setMax(int maxX, int maxY) {
+        final long startTime = System.currentTimeMillis();
         mMaxX = maxX;
         mMaxY = maxY;
         calculateLocalPaths();
         postInvalidate();
+        BatteryUtils.logRuntime(LOG_TAG, "setMax", startTime);
     }
 
     void setDividerLoc(int height) {
@@ -133,6 +138,7 @@
 
     private void addPathAndUpdate(SparseIntArray points, SparseIntArray paths,
             SparseIntArray localPaths) {
+        final long startTime = System.currentTimeMillis();
         for (int i = 0, size = points.size(); i < size; i++) {
             paths.put(points.keyAt(i), points.valueAt(i));
         }
@@ -140,6 +146,7 @@
         paths.put(points.keyAt(points.size() - 1) + 1, PATH_DELIM);
         calculateLocalPaths(paths, localPaths);
         postInvalidate();
+        BatteryUtils.logRuntime(LOG_TAG, "addPathAndUpdate", startTime);
     }
 
     void setAccentColor(int color) {
@@ -151,9 +158,11 @@
 
     @Override
     protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+        final long startTime = System.currentTimeMillis();
         super.onSizeChanged(w, h, oldw, oldh);
         updateGradient();
         calculateLocalPaths();
+        BatteryUtils.logRuntime(LOG_TAG, "onSizeChanged", startTime);
     }
 
     private void calculateLocalPaths() {
@@ -162,6 +171,7 @@
     }
 
     private void calculateLocalPaths(SparseIntArray paths, SparseIntArray localPaths) {
+        final long startTime = System.currentTimeMillis();
         if (getWidth() == 0) {
             return;
         }
@@ -194,6 +204,7 @@
                 localPaths.put(lx, ly);
             }
         }
+        BatteryUtils.logRuntime(LOG_TAG,"calculateLocalPaths", startTime);
     }
 
     private boolean hasDiff(int x1, int x2) {
@@ -220,6 +231,7 @@
 
     @Override
     protected void onDraw(Canvas canvas) {
+        final long startTime = System.currentTimeMillis();
         // Draw lines across the top, middle, and bottom.
         if (mMiddleDividerLoc != 0) {
             drawDivider(0, canvas, mTopDividerTint);
@@ -235,6 +247,7 @@
         drawLinePath(canvas, mLocalProjectedPaths, mDottedPaint);
         drawFilledPath(canvas, mLocalPaths, mFillPaint);
         drawLinePath(canvas, mLocalPaths, mLinePaint);
+        BatteryUtils.logRuntime(LOG_TAG, "onDraw", startTime);
     }
 
     private void drawLinePath(Canvas canvas, SparseIntArray localPaths, Paint paint) {