Update owner info with other keyguard indications

Also update the logout view with the other keyguard indications.

We still update the disclosure indication separately since we don't want
to trigger an IPC call each update.

Test: manual
Fixes: 180325775
Change-Id: Ibf5f349c80a771d8b33184dde71811137c808f3d
This commit is contained in:
Beverly
2021-02-17 10:29:55 -05:00
committed by Beverly Tai
parent d36b7acced
commit 3c6fcb412e

View File

@@ -208,7 +208,6 @@ public class KeyguardIndicationController implements KeyguardStateController.Cal
mLockScreenMode);
updateIndication(false /* animate */);
updateDisclosure();
updateOwnerInfo();
if (mBroadcastReceiver == null) {
// Update the disclosure proactively to avoid IPC on the critical path.
mBroadcastReceiver = new BroadcastReceiver() {
@@ -261,18 +260,21 @@ public class KeyguardIndicationController implements KeyguardStateController.Cal
}
/**
* Doesn't include owner information or disclosure which get triggered separately.
* Doesn't include disclosure which gets triggered separately.
*/
private void updateIndications(boolean animate, int userId) {
updateOwnerInfo();
updateBattery(animate);
updateUserLocked(userId);
updateTransient();
updateTrust(userId, getTrustGrantedIndication(), getTrustManagedIndication());
updateAlignment();
updateLogoutView();
updateResting();
}
private void updateDisclosure() {
// avoid calling this method since it has an IPC
if (whitelistIpcs(this::isOrganizationOwnedDevice)) {
final CharSequence organizationName = getOrganizationOwnedDeviceOrganizationName();
final CharSequence disclosure = organizationName != null
@@ -291,7 +293,34 @@ public class KeyguardIndicationController implements KeyguardStateController.Cal
}
if (isKeyguardLayoutEnabled()) {
updateIndication(false); // resting indication may need to update
updateResting();
}
}
private void updateOwnerInfo() {
if (!isKeyguardLayoutEnabled()) {
mRotateTextViewController.hideIndication(INDICATION_TYPE_OWNER_INFO);
return;
}
String info = mLockPatternUtils.getDeviceOwnerInfo();
if (info == null) {
// Use the current user owner information if enabled.
final boolean ownerInfoEnabled = mLockPatternUtils.isOwnerInfoEnabled(
KeyguardUpdateMonitor.getCurrentUser());
if (ownerInfoEnabled) {
info = mLockPatternUtils.getOwnerInfo(KeyguardUpdateMonitor.getCurrentUser());
}
}
if (info != null) {
mRotateTextViewController.updateIndication(
INDICATION_TYPE_OWNER_INFO,
new KeyguardIndication.Builder()
.setMessage(info)
.setTextColor(mInitialTextColorState)
.build(),
false);
} else {
mRotateTextViewController.hideIndication(INDICATION_TYPE_OWNER_INFO);
}
}
@@ -400,56 +429,34 @@ public class KeyguardIndicationController implements KeyguardStateController.Cal
private void updateLogoutView() {
if (!isKeyguardLayoutEnabled()) {
mRotateTextViewController.hideIndication(INDICATION_TYPE_LOGOUT);
return;
}
final boolean shouldShowLogout = mKeyguardUpdateMonitor.isLogoutEnabled()
&& KeyguardUpdateMonitor.getCurrentUser() != UserHandle.USER_SYSTEM;
String logoutString = shouldShowLogout ? mContext.getResources().getString(
com.android.internal.R.string.global_action_logout) : null;
mRotateTextViewController.updateIndication(
INDICATION_TYPE_LOGOUT,
new KeyguardIndication.Builder()
.setMessage(logoutString)
.setTextColor(mInitialTextColorState)
.setBackground(mContext.getDrawable(
com.android.systemui.R.drawable.logout_button_background))
.setClickListener((view) -> {
int currentUserId = KeyguardUpdateMonitor.getCurrentUser();
try {
mIActivityManager.switchUser(UserHandle.USER_SYSTEM);
mIActivityManager.stopUser(currentUserId, true /* force */, null);
} catch (RemoteException re) {
Log.e(TAG, "Failed to logout user", re);
}
})
.build(),
false);
updateIndication(false); // resting indication may need to update
}
private void updateOwnerInfo() {
if (!isKeyguardLayoutEnabled()) {
return;
}
String info = mLockPatternUtils.getDeviceOwnerInfo();
if (info == null) {
// Use the current user owner information if enabled.
final boolean ownerInfoEnabled = mLockPatternUtils.isOwnerInfoEnabled(
KeyguardUpdateMonitor.getCurrentUser());
if (ownerInfoEnabled) {
info = mLockPatternUtils.getOwnerInfo(KeyguardUpdateMonitor.getCurrentUser());
}
}
if (info != null) {
if (shouldShowLogout) {
mRotateTextViewController.updateIndication(
INDICATION_TYPE_OWNER_INFO,
INDICATION_TYPE_LOGOUT,
new KeyguardIndication.Builder()
.setMessage(info)
.setMessage(mContext.getResources().getString(
com.android.internal.R.string.global_action_logout))
.setTextColor(mInitialTextColorState)
.setBackground(mContext.getDrawable(
com.android.systemui.R.drawable.logout_button_background))
.setClickListener((view) -> {
int currentUserId = KeyguardUpdateMonitor.getCurrentUser();
try {
mIActivityManager.switchUser(UserHandle.USER_SYSTEM);
mIActivityManager.stopUser(currentUserId, true /* force */,
null);
} catch (RemoteException re) {
Log.e(TAG, "Failed to logout user", re);
}
})
.build(),
false);
} else {
updateIndication(false); // resting indication may need to update
mRotateTextViewController.hideIndication(INDICATION_TYPE_LOGOUT);
}
}
@@ -1042,7 +1049,6 @@ public class KeyguardIndicationController implements KeyguardStateController.Cal
@Override
public void onUserSwitchComplete(int userId) {
if (mVisible) {
updateOwnerInfo();
updateIndication(false);
}
}
@@ -1057,7 +1063,7 @@ public class KeyguardIndicationController implements KeyguardStateController.Cal
@Override
public void onLogoutEnabledChanged() {
if (mVisible) {
updateLogoutView();
updateIndication(false);
}
}