diff options
| author | 2023-03-13 15:30:06 +0000 | |
|---|---|---|
| committer | 2023-03-13 15:30:06 +0000 | |
| commit | 570020dc90b9552aa01b580617ea3e130db4094c (patch) | |
| tree | b71a3dd0adf1bdcd2d0d6ecc31698ace7092c70b | |
| parent | a82c40045556a23e376a370d68393b51c96ae5f9 (diff) | |
| parent | 067b0ad9180edaf9711b2d7c63907b6a0fb4f639 (diff) | |
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>
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, |