Merge "Support surrogate pairs when layouting text"
diff --git a/services/java/com/android/server/BatteryService.java b/services/java/com/android/server/BatteryService.java
index 5cf61bd..6ac35fd 100644
--- a/services/java/com/android/server/BatteryService.java
+++ b/services/java/com/android/server/BatteryService.java
@@ -136,7 +136,13 @@
final boolean isPowered() {
// assume we are powered if battery state is unknown so the "stay on while plugged in" option will work.
- return (mAcOnline || mUsbOnline || mBatteryStatus == BatteryManager.BATTERY_STATUS_UNKNOWN);
+ // Do not look at the plug status to check if we are powered.
+ // Charger can be plugged but not charging because of i.e. USB suspend,
+ // battery temperature reasons etc. We are powered only if battery is
+ // being charged. This function fill return false if charger is
+ // connected and battery is reported full.
+ return (mBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING ||
+ mBatteryStatus == BatteryManager.BATTERY_STATUS_UNKNOWN);
}
final boolean isPowered(int plugTypeSet) {
@@ -148,11 +154,13 @@
if (plugTypeSet == 0) {
return false;
}
+
+ // we are not powered when plug is connected and not charging
int plugTypeBit = 0;
- if (mAcOnline) {
+ if (mAcOnline && mBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING) {
plugTypeBit |= BatteryManager.BATTERY_PLUGGED_AC;
}
- if (mUsbOnline) {
+ if (mUsbOnline && mBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING) {
plugTypeBit |= BatteryManager.BATTERY_PLUGGED_USB;
}
return (plugTypeSet & plugTypeBit) != 0;
@@ -183,7 +191,11 @@
private final void shutdownIfNoPower() {
// shut down gracefully if our battery is critically low and we are not powered.
// wait until the system has booted before attempting to display the shutdown dialog.
- if (mBatteryLevel == 0 && !isPowered() && ActivityManagerNative.isSystemReady()) {
+ // Also shutdown if battery is reported to be 'dead' independent of
+ // battery level and power supply.
+ if (((mBatteryLevel == 0 && !isPowered()) ||
+ mBatteryHealth == BatteryManager.BATTERY_HEALTH_DEAD) &&
+ ActivityManagerNative.isSystemReady()) {
Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);