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

Commit 524d6b83 authored by Vinit Nayak's avatar Vinit Nayak Committed by Android (Google) Code Review
Browse files

Merge "Shows AppPairs in previous tasks" into sc-v2-dev

parents 31bd6633 4d57e709
Loading
Loading
Loading
Loading
+0 −5
Original line number Original line Diff line number Diff line
@@ -1809,13 +1809,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                mGestureState.updateLastStartedTaskId(taskId);
                mGestureState.updateLastStartedTaskId(taskId);
                boolean hasTaskPreviouslyAppeared = mGestureState.getPreviouslyAppearedTaskIds()
                boolean hasTaskPreviouslyAppeared = mGestureState.getPreviouslyAppearedTaskIds()
                        .contains(taskId);
                        .contains(taskId);
                boolean isOldTaskSplit = LauncherSplitScreenListener.INSTANCE.getNoCreate()
                        .getRunningSplitTaskIds().length > 0;
                nextTask.launchTask(success -> {
                nextTask.launchTask(success -> {
                    resultCallback.accept(success);
                    resultCallback.accept(success);
                    if (isOldTaskSplit) {
                        SystemUiProxy.INSTANCE.getNoCreate().exitSplitScreen(taskId);
                    }
                    if (success) {
                    if (success) {
                        if (hasTaskPreviouslyAppeared) {
                        if (hasTaskPreviouslyAppeared) {
                            onRestartPreviouslyAppearedTask();
                            onRestartPreviouslyAppearedTask();
+15 −2
Original line number Original line Diff line number Diff line
@@ -27,12 +27,14 @@ import android.util.SparseBooleanArray;


import androidx.annotation.VisibleForTesting;
import androidx.annotation.VisibleForTesting;


import com.android.quickstep.util.GroupTask;
import com.android.launcher3.util.LooperExecutor;
import com.android.launcher3.util.LooperExecutor;
import com.android.systemui.shared.recents.model.GroupTask;
import com.android.launcher3.util.SplitConfigurationOptions;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.system.KeyguardManagerCompat;
import com.android.systemui.shared.system.KeyguardManagerCompat;
import com.android.wm.shell.recents.IRecentTasksListener;
import com.android.wm.shell.recents.IRecentTasksListener;
import com.android.wm.shell.util.GroupedRecentTaskInfo;
import com.android.wm.shell.util.GroupedRecentTaskInfo;
import com.android.wm.shell.util.StagedSplitBounds;


import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Collections;
@@ -192,12 +194,23 @@ public class RecentTasksList {
                                tmpLockedUsers.get(task2Key.userId) /* isLocked */);
                                tmpLockedUsers.get(task2Key.userId) /* isLocked */);
                task2.setLastSnapshotData(taskInfo2);
                task2.setLastSnapshotData(taskInfo2);
            }
            }
            allTasks.add(new GroupTask(task1, task2));
            final SplitConfigurationOptions.StagedSplitBounds launcherSplitBounds =
                    convertSplitBounds(rawTask.mStagedSplitBounds);
            allTasks.add(new GroupTask(task1, task2, launcherSplitBounds));
        }
        }


        return allTasks;
        return allTasks;
    }
    }


    private SplitConfigurationOptions.StagedSplitBounds convertSplitBounds(
            StagedSplitBounds shellSplitBounds) {
        return shellSplitBounds == null ?
                null :
                new SplitConfigurationOptions.StagedSplitBounds(
                        shellSplitBounds.leftTopBounds, shellSplitBounds.rightBottomBounds,
                        shellSplitBounds.leftTopTaskId, shellSplitBounds.rightBottomTaskId);
    }

    private ArrayList<GroupTask> copyOf(ArrayList<GroupTask> tasks) {
    private ArrayList<GroupTask> copyOf(ArrayList<GroupTask> tasks) {
        ArrayList<GroupTask> newTasks = new ArrayList<>();
        ArrayList<GroupTask> newTasks = new ArrayList<>();
        for (int i = 0; i < tasks.size(); i++) {
        for (int i = 0; i < tasks.size(); i++) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -34,7 +34,7 @@ import com.android.launcher3.icons.IconProvider;
import com.android.launcher3.icons.IconProvider.IconChangeListener;
import com.android.launcher3.icons.IconProvider.IconChangeListener;
import com.android.launcher3.util.Executors.SimpleThreadFactory;
import com.android.launcher3.util.Executors.SimpleThreadFactory;
import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.systemui.shared.recents.model.GroupTask;
import com.android.quickstep.util.GroupTask;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.ActivityManagerWrapper;
+5 −5
Original line number Original line Diff line number Diff line
@@ -20,7 +20,7 @@ import android.content.Context;


import androidx.annotation.Nullable;
import androidx.annotation.Nullable;


import com.android.launcher3.util.SplitConfigurationOptions;
import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.LauncherSplitScreenListener;
import com.android.quickstep.util.LauncherSplitScreenListener;
import com.android.quickstep.util.TaskViewSimulator;
import com.android.quickstep.util.TaskViewSimulator;
@@ -33,7 +33,7 @@ import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 */
 */
public class RemoteTargetGluer {
public class RemoteTargetGluer {
    private RemoteTargetHandle[] mRemoteTargetHandles;
    private RemoteTargetHandle[] mRemoteTargetHandles;
    private SplitConfigurationOptions.StagedSplitBounds mStagedSplitBounds;
    private StagedSplitBounds mStagedSplitBounds;


    /**
    /**
     * Use this constructor if remote targets are split-screen independent
     * Use this constructor if remote targets are split-screen independent
@@ -108,9 +108,9 @@ public class RemoteTargetGluer {
            primaryTaskTarget = targets.findTask(splitIds[0]);
            primaryTaskTarget = targets.findTask(splitIds[0]);
            secondaryTaskTarget = targets.findTask(splitIds[1]);
            secondaryTaskTarget = targets.findTask(splitIds[1]);


            mStagedSplitBounds = new SplitConfigurationOptions.StagedSplitBounds(
            mStagedSplitBounds = new StagedSplitBounds(
                    primaryTaskTarget.screenSpaceBounds,
                    primaryTaskTarget.screenSpaceBounds,
                    secondaryTaskTarget.screenSpaceBounds);
                    secondaryTaskTarget.screenSpaceBounds, splitIds[0], splitIds[1]);
            mRemoteTargetHandles[0].mTransformParams.setTargetSet(
            mRemoteTargetHandles[0].mTransformParams.setTargetSet(
                    createRemoteAnimationTargetsForTarget(primaryTaskTarget, targets));
                    createRemoteAnimationTargetsForTarget(primaryTaskTarget, targets));
            mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(primaryTaskTarget,
            mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(primaryTaskTarget,
@@ -135,7 +135,7 @@ public class RemoteTargetGluer {
        return mRemoteTargetHandles;
        return mRemoteTargetHandles;
    }
    }


    public SplitConfigurationOptions.StagedSplitBounds getStagedSplitBounds() {
    public StagedSplitBounds getStagedSplitBounds() {
        return mStagedSplitBounds;
        return mStagedSplitBounds;
    }
    }


+0 −47
Original line number Original line Diff line number Diff line
@@ -572,53 +572,6 @@ public class SystemUiProxy implements ISystemUiProxy,
        mPendingSplitScreenListener = null;
        mPendingSplitScreenListener = null;
    }
    }


    public void setSideStageVisibility(boolean visible) {
        if (mSplitScreen != null) {
            try {
                mSplitScreen.setSideStageVisibility(visible);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call setSideStageVisibility");
            }
        }
    }

    /**
     * To be called whenever the user exits out of split screen apps (either by launching another
     * app or by swiping home)
     * @param topTaskId The taskId of the new app that was launched. System will then move this task
     *                  to the front of what the user sees while removing all other split stages.
     *                  If swiping to home (or there is no task to put at the top), can pass in -1.
     */
    public void exitSplitScreen(int topTaskId) {
        if (mSplitScreen != null) {
            try {
                mSplitScreen.exitSplitScreen(topTaskId);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call exitSplitScreen");
            }
        }
    }

    public void exitSplitScreenOnHide(boolean exitSplitScreenOnHide) {
        if (mSplitScreen != null) {
            try {
                mSplitScreen.exitSplitScreenOnHide(exitSplitScreenOnHide);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call exitSplitScreen");
            }
        }
    }

    public void startTask(int taskId, int stage, int position, Bundle options) {
        if (mSplitScreen != null) {
            try {
                mSplitScreen.startTask(taskId, stage, position, options);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call startTask");
            }
        }
    }

    /** Start multiple tasks in split-screen simultaneously. */
    /** Start multiple tasks in split-screen simultaneously. */
    public void startTasks(int mainTaskId, Bundle mainOptions, int sideTaskId, Bundle sideOptions,
    public void startTasks(int mainTaskId, Bundle mainOptions, int sideTaskId, Bundle sideOptions,
            @SplitConfigurationOptions.StagePosition int sidePosition,
            @SplitConfigurationOptions.StagePosition int sidePosition,
Loading