Show charging status in addition to trust granted

If the device is kept unlocked, it displays 'Kept unlocked by TrustAgent' and will not show charging state.
This adds the charging state below the unlocked message

Test: m, atest KeyguardIndicationControllerTest, check keyguard
Fixes: 150780409
Change-Id: I6b3515167c990c27fa89b3742d72db98657768b0
This commit is contained in:
Scott Warner
2020-01-21 09:45:56 -05:00
committed by Lucas Dupin
parent 13b8cec66f
commit 778db3306a
3 changed files with 52 additions and 7 deletions

View File

@@ -1425,6 +1425,9 @@
<!-- Indication on the keyguard that appears when the user disables trust agents until the next time they unlock manually. [CHAR LIMIT=NONE] -->
<string name="keyguard_indication_trust_disabled">Device will stay locked until you manually unlock</string>
<!-- Indication on the keyguard that appears when trust agents unlocks the device and device is plugged in. [CHAR LIMIT=NONE] -->
<string name="keyguard_indication_trust_unlocked_plugged_in"><xliff:g id="keyguard_indication" example="Kept unlocked by TrustAgent">%1$s</xliff:g>\n<xliff:g id="power_indication" example="Charging Slowly">%2$s</xliff:g></string>
<!-- Title of notification educating the user about enabling notifications on the lockscreen. [CHAR LIMIT=40] -->
<string name="hidden_notifications_title">Get notifications faster</string>

View File

@@ -284,6 +284,14 @@ public class KeyguardIndicationController implements StateListener,
return mContext.getString(R.string.keyguard_indication_trust_unlocked);
}
/**
* Sets if the device is plugged in
*/
@VisibleForTesting
void setPowerPluggedIn(boolean plugged) {
mPowerPluggedIn = plugged;
}
/**
* Returns the indication text indicating that trust is currently being managed.
*
@@ -382,29 +390,48 @@ public class KeyguardIndicationController implements StateListener,
int userId = KeyguardUpdateMonitor.getCurrentUser();
String trustGrantedIndication = getTrustGrantedIndication();
String trustManagedIndication = getTrustManagedIndication();
String powerIndication = null;
if (mPowerPluggedIn) {
powerIndication = computePowerIndication();
}
if (!mKeyguardUpdateMonitor.isUserUnlocked(userId)) {
mTextView.switchIndication(com.android.internal.R.string.lockscreen_storage_locked);
mTextView.setTextColor(mInitialTextColorState);
} else if (!TextUtils.isEmpty(mTransientIndication)) {
mTextView.switchIndication(mTransientIndication);
if (powerIndication != null) {
String indication = mContext.getResources().getString(
R.string.keyguard_indication_trust_unlocked_plugged_in,
mTransientIndication, powerIndication);
mTextView.switchIndication(indication);
} else {
mTextView.switchIndication(mTransientIndication);
}
mTextView.setTextColor(mTransientTextColorState);
} else if (!TextUtils.isEmpty(trustGrantedIndication)
&& mKeyguardUpdateMonitor.getUserHasTrust(userId)) {
mTextView.switchIndication(trustGrantedIndication);
if (powerIndication != null) {
String indication = mContext.getResources().getString(
R.string.keyguard_indication_trust_unlocked_plugged_in,
trustGrantedIndication, powerIndication);
mTextView.switchIndication(indication);
} else {
mTextView.switchIndication(trustGrantedIndication);
}
mTextView.setTextColor(mInitialTextColorState);
} else if (!TextUtils.isEmpty(mAlignmentIndication)) {
mTextView.switchIndication(mAlignmentIndication);
mTextView.setTextColor(Utils.getColorError(mContext));
} else if (mPowerPluggedIn) {
String indication = computePowerIndication();
if (DEBUG_CHARGING_SPEED) {
indication += ", " + (mChargingWattage / 1000) + " mW";
powerIndication += ", " + (mChargingWattage / 1000) + " mW";
}
mTextView.setTextColor(mInitialTextColorState);
if (animate) {
animateText(mTextView, indication);
animateText(mTextView, powerIndication);
} else {
mTextView.switchIndication(indication);
mTextView.switchIndication(powerIndication);
}
} else if (!TextUtils.isEmpty(trustManagedIndication)
&& mKeyguardUpdateMonitor.getUserTrustIsManaged(userId)
@@ -469,7 +496,8 @@ public class KeyguardIndicationController implements StateListener,
});
}
private String computePowerIndication() {
@VisibleForTesting
String computePowerIndication() {
if (mPowerCharged) {
return mContext.getResources().getString(R.string.keyguard_charged);
}

View File

@@ -403,4 +403,18 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
verify(mStatusBarStateController).addCallback(eq(mController));
verify(mKeyguardUpdateMonitor, times(2)).registerCallback(any());
}
@Test
public void unlockMethodCache_listenerUpdatesPluggedIndication() {
createController();
when(mKeyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(true);
mController.setPowerPluggedIn(true);
mController.setVisible(true);
String powerIndication = mController.computePowerIndication();
String pluggedIndication = mContext.getString(R.string.keyguard_indication_trust_unlocked);
pluggedIndication = mContext.getString(
R.string.keyguard_indication_trust_unlocked_plugged_in,
pluggedIndication, powerIndication);
assertThat(mTextView.getText()).isEqualTo(pluggedIndication);
}
}