summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java2
-rw-r--r--packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt37
-rw-r--r--packages/SystemUI/src/com/android/keyguard/logging/KeyguardUpdateMonitorLogger.kt11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java1
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java18
6 files changed, 72 insertions, 26 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index d83af60b1373..1ccde322628a 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -3375,8 +3375,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
*/
private void handleBatteryUpdate(BatteryStatus status) {
Assert.isMainThread();
- mLogger.d("handleBatteryUpdate");
final boolean batteryUpdateInteresting = isBatteryUpdateInteresting(mBatteryStatus, status);
+ mLogger.logHandleBatteryUpdate(batteryUpdateInteresting);
mBatteryStatus = status;
if (batteryUpdateInteresting) {
for (int i = 0; i < mCallbacks.size(); i++) {
diff --git a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt
index 51aca070b180..4d71a8952021 100644
--- a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt
+++ b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt
@@ -97,6 +97,21 @@ constructor(
)
}
+ fun logUpdateBatteryIndication(
+ powerIndication: String,
+ pluggedIn: Boolean,
+ ) {
+ buffer.log(
+ KeyguardIndicationController.TAG,
+ LogLevel.DEBUG,
+ {
+ str1 = powerIndication
+ bool1 = pluggedIn
+ },
+ { "updateBatteryIndication powerIndication:$str1 pluggedIn:$bool1" }
+ )
+ }
+
fun logKeyguardSwitchIndication(
type: Int,
message: String?,
@@ -112,6 +127,28 @@ constructor(
)
}
+ fun logRefreshBatteryInfo(
+ isChargingOrFull: Boolean,
+ powerPluggedIn: Boolean,
+ batteryLevel: Int,
+ batteryOverheated: Boolean
+ ) {
+ buffer.log(
+ KeyguardIndicationController.TAG,
+ LogLevel.DEBUG,
+ {
+ bool1 = isChargingOrFull
+ bool2 = powerPluggedIn
+ bool3 = batteryOverheated
+ int1 = batteryLevel
+ },
+ {
+ "refreshBatteryInfo isChargingOrFull:$bool1 powerPluggedIn:$bool2" +
+ " batteryOverheated:$bool3 batteryLevel:$int1"
+ }
+ )
+ }
+
fun getKeyguardSwitchIndicationNonSensitiveLog(type: Int, message: String?): String {
// only show the battery string. other strings may contain sensitive info
return if (type == KeyguardIndicationRotateTextViewController.INDICATION_TYPE_BATTERY) {
diff --git a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardUpdateMonitorLogger.kt b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardUpdateMonitorLogger.kt
index 2403d1116360..51628076953b 100644
--- a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardUpdateMonitorLogger.kt
+++ b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardUpdateMonitorLogger.kt
@@ -657,4 +657,15 @@ constructor(@KeyguardUpdateMonitorLog private val logBuffer: LogBuffer) {
}
)
}
+
+ fun logHandleBatteryUpdate(isInteresting: Boolean) {
+ logBuffer.log(
+ TAG,
+ DEBUG,
+ {
+ bool1 = isInteresting
+ },
+ { "handleBatteryUpdate: $bool1" }
+ )
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index f4782c2479b2..d5751f4a349f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -177,10 +177,12 @@ public class KeyguardIndicationController {
private boolean mVisible;
private boolean mOrganizationOwnedDevice;
+ // these all assume the device is plugged in (wired/wireless/docked) AND chargingOrFull:
private boolean mPowerPluggedIn;
private boolean mPowerPluggedInWired;
private boolean mPowerPluggedInWireless;
private boolean mPowerPluggedInDock;
+
private boolean mPowerCharged;
private boolean mBatteryOverheated;
private boolean mEnableBatteryDefender;
@@ -499,6 +501,7 @@ public class KeyguardIndicationController {
powerIndication += ", " + (mChargingWattage / 1000) + " mW";
}
+ mKeyguardLogger.logUpdateBatteryIndication(powerIndication, mPowerPluggedIn);
mRotateTextViewController.updateIndication(
INDICATION_TYPE_BATTERY,
new KeyguardIndication.Builder()
@@ -507,6 +510,7 @@ public class KeyguardIndicationController {
.build(),
animate);
} else {
+ mKeyguardLogger.log(TAG, LogLevel.DEBUG, "hide battery indication");
// don't show the charging information if device isn't plugged in
mRotateTextViewController.hideIndication(INDICATION_TYPE_BATTERY);
}
@@ -885,6 +889,9 @@ public class KeyguardIndicationController {
updateLockScreenIndications(animate, getCurrentUser());
}
+ /**
+ * Assumption: device is charging
+ */
protected String computePowerIndication() {
int chargingId;
if (mBatteryOverheated) {
@@ -1035,6 +1042,12 @@ public class KeyguardIndicationController {
}
}
+ /**
+ * KeyguardUpdateMonitor only sends "interesting" battery updates
+ * {@link KeyguardUpdateMonitor#isBatteryUpdateInteresting}.
+ * Therefore, make sure to always check plugged in state along with any charging status
+ * change, or else we could end up with stale state.
+ */
@Override
public void onRefreshBatteryInfo(BatteryStatus status) {
boolean isChargingOrFull = status.status == BatteryManager.BATTERY_STATUS_CHARGING
@@ -1050,7 +1063,9 @@ public class KeyguardIndicationController {
mBatteryLevel = status.level;
mBatteryPresent = status.present;
mBatteryOverheated = status.isOverheated();
+ // when the battery is overheated, device doesn't charge so only guard on pluggedIn:
mEnableBatteryDefender = mBatteryOverheated && status.isPluggedIn();
+
try {
mChargingTimeRemaining = mPowerPluggedIn
? mBatteryInfo.computeChargeTimeRemaining() : -1;
@@ -1058,14 +1073,10 @@ public class KeyguardIndicationController {
mKeyguardLogger.log(TAG, ERROR, "Error calling IBatteryStats", e);
mChargingTimeRemaining = -1;
}
+
+ mKeyguardLogger.logRefreshBatteryInfo(isChargingOrFull, mPowerPluggedIn, mBatteryLevel,
+ mBatteryOverheated);
updateDeviceEntryIndication(!wasPluggedIn && mPowerPluggedInWired);
- if (mDozing) {
- if (!wasPluggedIn && mPowerPluggedIn) {
- showTransientIndication(computePowerIndication());
- } else if (wasPluggedIn && !mPowerPluggedIn) {
- hideTransientIndication();
- }
- }
}
@Override
@@ -1317,6 +1328,10 @@ public class KeyguardIndicationController {
}
}
+ protected boolean isPluggedInAndCharging() {
+ return mPowerPluggedIn;
+ }
+
private boolean isCurrentUser(int userId) {
return getCurrentUser() == userId;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java
index b1553b0d306f..9d30cb4c4852 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java
@@ -76,6 +76,7 @@ public class KeyguardIndicationTextView extends TextView {
if (mLastAnimator != null) {
mLastAnimator.cancel();
}
+ mMessage = "";
setText("");
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java
index 406826b860d4..b7dfea7bf7c5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java
@@ -1031,24 +1031,6 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
}
@Test
- public void onRefreshBatteryInfo_pluggedWithOverheat_presentChargingLimited() {
- createController();
- BatteryStatus status = new BatteryStatus(BatteryManager.BATTERY_STATUS_DISCHARGING,
- 80 /* level */, BatteryManager.BATTERY_PLUGGED_AC,
- BatteryManager.BATTERY_HEALTH_OVERHEAT, 0 /* maxChargingWattage */,
- true /* present */);
-
- mController.getKeyguardCallback().onRefreshBatteryInfo(status);
- mController.setVisible(true);
-
- verifyIndicationMessage(
- INDICATION_TYPE_BATTERY,
- mContext.getString(
- R.string.keyguard_plugged_in_charging_limited,
- NumberFormat.getPercentInstance().format(80 / 100f)));
- }
-
- @Test
public void onRefreshBatteryInfo_fullChargedWithOverheat_presentChargingLimited() {
createController();
BatteryStatus status = new BatteryStatus(BatteryManager.BATTERY_STATUS_CHARGING,