RESTRICT AUTOMERGE Add extra battery indication logging am: 067b0ad918

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21872054

Change-Id: I9eb67ab65bc2fc92b3a8ff983cd656c20d08d10d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Beverly
2023-03-13 15:30:06 +00:00
committed by Automerger Merge Worker
6 changed files with 72 additions and 26 deletions

View File

@@ -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++) {

View File

@@ -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) {

View File

@@ -657,4 +657,15 @@ constructor(@KeyguardUpdateMonitorLog private val logBuffer: LogBuffer) {
}
)
}
fun logHandleBatteryUpdate(isInteresting: Boolean) {
logBuffer.log(
TAG,
DEBUG,
{
bool1 = isInteresting
},
{ "handleBatteryUpdate: $bool1" }
)
}
}

View File

@@ -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;
}

View File

@@ -76,6 +76,7 @@ public class KeyguardIndicationTextView extends TextView {
if (mLastAnimator != null) {
mLastAnimator.cancel();
}
mMessage = "";
setText("");
}

View File

@@ -1030,24 +1030,6 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
NumberFormat.getPercentInstance().format(80 / 100f)));
}
@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();