Merge "Unlock the work profile for remote input" into rvc-dev am: defcfd0b47

Change-Id: I1388c8b403d098c6cfb25772509bec68ce356e6d
This commit is contained in:
Eran Messeri
2020-05-20 21:00:26 +00:00
committed by Automerger Merge Worker

View File

@@ -28,6 +28,7 @@ import android.app.RemoteInput;
import android.app.RemoteInputHistoryItem;
import android.content.Context;
import android.content.Intent;
import android.content.pm.UserInfo;
import android.net.Uri;
import android.os.Handler;
import android.os.RemoteException;
@@ -401,15 +402,35 @@ public class NotificationRemoteInputManager implements Dumpable {
if (!mLockscreenUserManager.shouldAllowLockscreenRemoteInput()) {
final int userId = pendingIntent.getCreatorUserHandle().getIdentifier();
final boolean isLockedManagedProfile =
mUserManager.getUserInfo(userId).isManagedProfile()
&& mKeyguardManager.isDeviceLocked(userId);
final boolean isParentUserLocked;
if (isLockedManagedProfile) {
final UserInfo profileParent = mUserManager.getProfileParent(userId);
isParentUserLocked = (profileParent != null)
&& mKeyguardManager.isDeviceLocked(profileParent.id);
} else {
isParentUserLocked = false;
}
if (mLockscreenUserManager.isLockscreenPublicMode(userId)
|| mStatusBarStateController.getState() == StatusBarState.KEYGUARD) {
// Even if we don't have security we should go through this flow, otherwise we won't
// go to the shade
mCallback.onLockedRemoteInput(row, view);
// If the parent user is no longer locked, and the user to which the remote input
// is destined is a locked, managed profile, then onLockedWorkRemoteInput should be
// called to unlock it.
if (isLockedManagedProfile && !isParentUserLocked) {
mCallback.onLockedWorkRemoteInput(userId, row, view);
} else {
// Even if we don't have security we should go through this flow, otherwise
// we won't go to the shade.
mCallback.onLockedRemoteInput(row, view);
}
return true;
}
if (mUserManager.getUserInfo(userId).isManagedProfile()
&& mKeyguardManager.isDeviceLocked(userId)) {
if (isLockedManagedProfile) {
mCallback.onLockedWorkRemoteInput(userId, row, view);
return true;
}