| 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);
|
|
|