Bug 710178 - ASSERTION: Battery API: When charging and level at 1.0, remaining time should be 0. Please fix your backend. r=mounir
--- a/hal/windows/WindowsBattery.cpp
+++ b/hal/windows/WindowsBattery.cpp
@@ -218,19 +218,25 @@ GetCurrentBatteryInformation(hal::Batter
return;
}
aBatteryInfo->level() =
status.BatteryLifePercent == 255 ? kDefaultLevel
: ((double)status.BatteryLifePercent) / 100.0;
aBatteryInfo->charging() = (status.ACLineStatus != 0);
if (status.ACLineStatus != 0) {
- aBatteryInfo->remainingTime() =
- status.BatteryFullLifeTime == (DWORD)-1 ? kUnknownRemainingTime
- : status.BatteryFullLifeTime;
+ if (aBatteryInfo->level() == 1.0) {
+ // GetSystemPowerStatus API may returns -1 for BatteryFullLifeTime.
+ // So, if battery is 100%, set kDefaultRemainingTime at force.
+ aBatteryInfo->remainingTime() = kDefaultRemainingTime;
+ } else {
+ aBatteryInfo->remainingTime() =
+ status.BatteryFullLifeTime == (DWORD)-1 ? kUnknownRemainingTime
+ : status.BatteryFullLifeTime;
+ }
} else {
aBatteryInfo->remainingTime() =
status.BatteryLifeTime == (DWORD)-1 ? kUnknownRemainingTime
: status.BatteryLifeTime;
}
}
} // hal_impl