Index: content/public/android/java/src/org/chromium/content/browser/BatteryStatusManager.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/BatteryStatusManager.java b/content/public/android/java/src/org/chromium/content/browser/BatteryStatusManager.java |
index 5153143dcacb873dcbb20a30b792e80d1cec7c55..8e586ebe94c1f4d5079986eddeea4abce6354050 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/BatteryStatusManager.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/BatteryStatusManager.java |
@@ -91,13 +91,18 @@ class BatteryStatusManager { |
boolean present = ignoreBatteryPresentState() ? |
true : intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false); |
+ int pluggedStatus = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); |
- if (!present) { |
- // No battery, return default values. |
+ if (!present || pluggedStatus == -1) { |
+ // No battery or no plugged status: return default values. |
gotBatteryStatus(true, 0, Double.POSITIVE_INFINITY, 1); |
return; |
} |
+ boolean charging = pluggedStatus != 0; |
+ int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); |
+ boolean batteryFull = status == BatteryManager.BATTERY_STATUS_FULL; |
+ |
int current = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); |
int max = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); |
double level = (double)current / (double)max; |
@@ -106,12 +111,11 @@ class BatteryStatusManager { |
level = 1.0; |
} |
- int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); |
- boolean charging = !(status == BatteryManager.BATTERY_STATUS_DISCHARGING); |
- |
- // TODO(timvolodine) : add proper projection for chargingTime, dischargingTime. |
- double chargingTime = (status == BatteryManager.BATTERY_STATUS_FULL) ? |
- 0 : Double.POSITIVE_INFINITY; |
+ // Currently Android does not provide charging/discharging time, as a work-around |
+ // we could compute it manually based on level delta. |
+ // TODO(timvolodine): add proper projection for chargingTime, dischargingTime |
+ // (see crbug.com/401553). |
+ double chargingTime = (charging & batteryFull) ? 0 : Double.POSITIVE_INFINITY; |
double dischargingTime = Double.POSITIVE_INFINITY; |
gotBatteryStatus(charging, chargingTime, dischargingTime, level); |