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

Commit af06141f authored by Pavel Grafov's avatar Pavel Grafov
Browse files

Pass profile userId to notifyLockedProfile

When the stack originates in the primary user and then a profile
activity is added on top, RunningTaskInfo.userId will reflect the
primary user, but this is not the user for which WorkLockActivity should
be launched. With this CL profile userId is passed along the
RunningTaskInfo into onTaskProfileLocked, so that WorkLockActivity is
started for the right user.

Bug: 279024529
Test: atest WmTests:RootWindowContainerTests SystemUITests WMShellUnitTests WMShellTest
Change-Id: I7755243edf73546dc840d0107d0a6bdb695eb45d
parent b0ed44a8
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -137,7 +137,7 @@ oneway interface ITaskStackListener {
     * activities inside it belong to a managed profile user, and that user has just
     * activities inside it belong to a managed profile user, and that user has just
     * been locked.
     * been locked.
     */
     */
    void onTaskProfileLocked(in ActivityManager.RunningTaskInfo taskInfo);
    void onTaskProfileLocked(in ActivityManager.RunningTaskInfo taskInfo, int userId);


    /**
    /**
     * Called when a task snapshot got updated.
     * Called when a task snapshot got updated.
+11 −1
Original line number Original line Diff line number Diff line
@@ -154,8 +154,18 @@ public abstract class TaskStackListener extends ITaskStackListener.Stub {
    }
    }


    @Override
    @Override
    public void onTaskProfileLocked(RunningTaskInfo taskInfo, int userId)
            throws RemoteException {
        onTaskProfileLocked(taskInfo);
    }

    /**
     * @deprecated see {@link #onTaskProfileLocked(RunningTaskInfo, int)}
     */
    @Deprecated
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    public void onTaskProfileLocked(RunningTaskInfo taskInfo) throws RemoteException {
    public void onTaskProfileLocked(RunningTaskInfo taskInfo)
            throws RemoteException {
    }
    }


    @Override
    @Override
+1 −1
Original line number Original line Diff line number Diff line
@@ -38,7 +38,7 @@ public interface TaskStackListenerCallback {


    default void onTaskStackChanged() { }
    default void onTaskStackChanged() { }


    default void onTaskProfileLocked(RunningTaskInfo taskInfo) { }
    default void onTaskProfileLocked(RunningTaskInfo taskInfo, int userId) { }


    default void onTaskDisplayChanged(int taskId, int newDisplayId) { }
    default void onTaskDisplayChanged(int taskId, int newDisplayId) { }


+4 −3
Original line number Original line Diff line number Diff line
@@ -150,8 +150,8 @@ public class TaskStackListenerImpl extends TaskStackListener implements Handler.
    }
    }


    @Override
    @Override
    public void onTaskProfileLocked(ActivityManager.RunningTaskInfo taskInfo) {
    public void onTaskProfileLocked(ActivityManager.RunningTaskInfo taskInfo, int userId) {
        mMainHandler.obtainMessage(ON_TASK_PROFILE_LOCKED, taskInfo).sendToTarget();
        mMainHandler.obtainMessage(ON_TASK_PROFILE_LOCKED, userId, 0, taskInfo).sendToTarget();
    }
    }


    @Override
    @Override
@@ -348,8 +348,9 @@ public class TaskStackListenerImpl extends TaskStackListener implements Handler.
                case ON_TASK_PROFILE_LOCKED: {
                case ON_TASK_PROFILE_LOCKED: {
                    final ActivityManager.RunningTaskInfo
                    final ActivityManager.RunningTaskInfo
                            info = (ActivityManager.RunningTaskInfo) msg.obj;
                            info = (ActivityManager.RunningTaskInfo) msg.obj;
                    final int userId = msg.arg1;
                    for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) {
                    for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) {
                        mTaskStackListeners.get(i).onTaskProfileLocked(info);
                        mTaskStackListeners.get(i).onTaskProfileLocked(info, userId);
                    }
                    }
                    break;
                    break;
                }
                }
+3 −3
Original line number Original line Diff line number Diff line
@@ -112,9 +112,9 @@ public class TaskStackListenerImplTest extends ShellTestCase {
    @Test
    @Test
    public void testOnTaskProfileLocked() {
    public void testOnTaskProfileLocked() {
        ActivityManager.RunningTaskInfo info = mock(ActivityManager.RunningTaskInfo.class);
        ActivityManager.RunningTaskInfo info = mock(ActivityManager.RunningTaskInfo.class);
        mImpl.onTaskProfileLocked(info);
        mImpl.onTaskProfileLocked(info, 0);
        verify(mCallback).onTaskProfileLocked(eq(info));
        verify(mCallback).onTaskProfileLocked(eq(info), eq(0));
        verify(mOtherCallback).onTaskProfileLocked(eq(info));
        verify(mOtherCallback).onTaskProfileLocked(eq(info), eq(0));
    }
    }


    @Test
    @Test
Loading