Merge "RESTRICT AUTOMERGE Add extra battery indication logging" into tm-qpr-dev
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index d83af60..1ccde32 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -3375,8 +3375,8 @@
*/
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 51aca07..4d71a89 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 @@
)
}
+ 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 @@
)
}
+ 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 2403d11..5162807 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 @@
}
)
}
+
+ 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 f4782c2..d5751f4 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 @@
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 @@
powerIndication += ", " + (mChargingWattage / 1000) + " mW";
}
+ mKeyguardLogger.logUpdateBatteryIndication(powerIndication, mPowerPluggedIn);
mRotateTextViewController.updateIndication(
INDICATION_TYPE_BATTERY,
new KeyguardIndication.Builder()
@@ -507,6 +510,7 @@
.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 @@
updateLockScreenIndications(animate, getCurrentUser());
}
+ /**
+ * Assumption: device is charging
+ */
protected String computePowerIndication() {
int chargingId;
if (mBatteryOverheated) {
@@ -1035,6 +1042,12 @@
}
}
+ /**
+ * 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 @@
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 @@
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 @@
}
}
+ 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 b1553b0..9d30cb4 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 @@
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 406826b..b7dfea7 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 @@
}
@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,