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