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

This commit is contained in:
Eran Messeri
2020-05-20 20:51:36 +00:00
committed by Android (Google) Code Review

View File

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