Add abnormal interpolation info to log unexpected conditions

Bug: 184807417
Test: make SettingsRoboTests
Change-Id: I11156c85b6b955dd505b41a9a41be0756638f1dd
diff --git a/src/com/android/settings/fuelgauge/BatteryChartView.java b/src/com/android/settings/fuelgauge/BatteryChartView.java
index 8e83cb9..e2e7f8f 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartView.java
+++ b/src/com/android/settings/fuelgauge/BatteryChartView.java
@@ -111,6 +111,10 @@
 
     /** Sets all levels value to draw the trapezoid shape */
     public void setLevels(int[] levels) {
+        if (levels == null) {
+            mLevels = null;
+            return;
+        }
         // We should provide trapezoid count + 1 data to draw all trapezoids.
         mLevels = levels.length == mTrapezoidCount + 1 ? levels : null;
         setClickable(false);
diff --git a/src/com/android/settings/fuelgauge/BatteryHistEntry.java b/src/com/android/settings/fuelgauge/BatteryHistEntry.java
index 6130fff..d83d814 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistEntry.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistEntry.java
@@ -16,6 +16,7 @@
 import android.content.ContentValues;
 import android.database.Cursor;
 import android.os.BatteryConsumer;
+import android.util.Log;
 
 import java.time.Duration;
 
@@ -310,6 +311,14 @@
             lowerHistEntry == null ? 0 : lowerHistEntry.mBackgroundUsageTimeInMs,
             upperHistEntry.mBackgroundUsageTimeInMs,
             ratio);
+        // Checks whether there is any abnoaml cases!
+        if (upperHistEntry.mConsumePower < consumePower
+                || upperHistEntry.mForegroundUsageTimeInMs < foregroundUsageTimeInMs
+                || upperHistEntry.mBackgroundUsageTimeInMs < backgroundUsageTimeInMs) {
+            Log.w(TAG, String.format(
+                "abnormal interpolation:\nupper:%s\nlower:%s",
+                upperHistEntry, lowerHistEntry));
+        }
         final double batteryLevel =
             lowerHistEntry == null
                 ? upperHistEntry.mBatteryLevel