Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92bd2094 authored by Eran Messeri's avatar Eran Messeri Committed by Automerger Merge Worker
Browse files

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

Change-Id: I79a7a487ed1741060d1848f4683c35a5269aba49
parents 80b502c5 e38ac17b
Loading
Loading
Loading
Loading
+26 −5
Original line number Diff line number Diff line
@@ -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
                // 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;
            }