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

Commit bfa0fae8 authored by Schneider Victor-tulias's avatar Schneider Victor-tulias Committed by Android (Google) Code Review
Browse files

Merge "Add null-check to findLastActiveTaskAndRunCallback" into udc-dev

parents 3dca7b3c ab51f211
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -98,7 +98,6 @@ import com.android.launcher3.testing.shared.TestProtocol;
import com.android.launcher3.touch.ItemClickHandler;
import com.android.launcher3.touch.ItemClickHandler.ItemClickProxy;
import com.android.launcher3.util.ActivityOptionsWrapper;
import com.android.launcher3.util.ComponentKey;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.Executors;
import com.android.launcher3.util.NavigationMode;
@@ -939,9 +938,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
        if (recents == null) {
            return;
        }
        ComponentKey componentToBeLaunched = new ComponentKey(info.getTargetComponent(), info.user);
        recents.getSplitSelectController().findLastActiveTaskAndRunCallback(
                componentToBeLaunched,
                info.getComponentKey(),
                foundTask -> {
                    if (foundTask != null) {
                        TaskView foundTaskView =
+2 −7
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import com.android.launcher3.Utilities;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.ItemInfoWithIcon;
import com.android.launcher3.popup.SystemShortcut;
import com.android.launcher3.util.ComponentKey;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.SplitConfigurationOptions;
import com.android.quickstep.util.GroupTask;
@@ -205,11 +204,8 @@ public class TaskbarUIController {
            return;
        }

        ComponentKey componentToBeStaged = new ComponentKey(
                splitSelectSource.itemInfo.getTargetComponent(),
                splitSelectSource.itemInfo.user);
        recentsView.getSplitSelectController().findLastActiveTaskAndRunCallback(
                componentToBeStaged,
                splitSelectSource.itemInfo.getComponentKey(),
                foundTask -> {
                    splitSelectSource.alreadyRunningTaskId = foundTask == null
                            ? INVALID_TASK_ID
@@ -225,9 +221,8 @@ public class TaskbarUIController {
     */
    public void triggerSecondAppForSplit(ItemInfoWithIcon info, Intent intent, View startingView) {
        RecentsView recents = getRecentsView();
        ComponentKey secondAppComponent = new ComponentKey(info.getTargetComponent(), info.user);
        recents.getSplitSelectController().findLastActiveTaskAndRunCallback(
                secondAppComponent,
                info.getComponentKey(),
                foundTask -> {
                    if (foundTask != null) {
                        TaskView foundTaskView = recents.getTaskViewByTaskId(foundTask.key.id);
+1 −5
Original line number Diff line number Diff line
@@ -142,7 +142,6 @@ import com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchControlle
import com.android.launcher3.uioverrides.touchcontrollers.TransposedQuickSwitchTouchController;
import com.android.launcher3.uioverrides.touchcontrollers.TwoButtonNavbarTouchController;
import com.android.launcher3.util.ActivityOptionsWrapper;
import com.android.launcher3.util.ComponentKey;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.Executors;
import com.android.launcher3.util.IntSet;
@@ -601,13 +600,10 @@ public class QuickstepLauncher extends Launcher {
    @Override
    public void startSplitSelection(SplitSelectSource splitSelectSource) {
        RecentsView recentsView = getOverviewPanel();
        ComponentKey componentToBeStaged = new ComponentKey(
                splitSelectSource.itemInfo.getTargetComponent(),
                splitSelectSource.itemInfo.user);
        // Check if there is already an instance of this app running, if so, initiate the split
        // using that.
        mSplitSelectStateController.findLastActiveTaskAndRunCallback(
                componentToBeStaged,
                splitSelectSource.itemInfo.getComponentKey(),
                foundTask -> {
                    splitSelectSource.alreadyRunningTaskId = foundTask == null
                            ? INVALID_TASK_ID
+8 −4
Original line number Diff line number Diff line
@@ -202,13 +202,17 @@ public class SplitSelectStateController {
     * Pulls the list of active Tasks from RecentsModel, and finds the most recently active Task
     * matching a given ComponentName. Then uses that Task (which could be null) with the given
     * callback.
     *
     * <p>
     * Used in various task-switching or splitscreen operations when we need to check if there is a
     * currently running Task of a certain type and use the most recent one.
     */
    public void findLastActiveTaskAndRunCallback(ComponentKey componentKey,
            Consumer<Task> callback) {
    public void findLastActiveTaskAndRunCallback(
            @Nullable ComponentKey componentKey, Consumer<Task> callback) {
        mRecentTasksModel.getTasks(taskGroups -> {
            if (componentKey == null) {
                callback.accept(null);
                return;
            }
            Task lastActiveTask = null;
            // Loop through tasks in reverse, since they are ordered with most-recent tasks last.
            for (int i = taskGroups.size() - 1; i >= 0; i--) {
@@ -233,7 +237,7 @@ public class SplitSelectStateController {
     * Checks if a given Task is the most recently-active Task of type componentName. Used for
     * selecting already-running Tasks for splitscreen.
     */
    public boolean isInstanceOfComponent(@Nullable Task task, ComponentKey componentKey) {
    public boolean isInstanceOfComponent(@Nullable Task task, @NonNull ComponentKey componentKey) {
        // Exclude the task that is already staged
        if (task == null || task.key.id == mInitialTaskId) {
            return false;
+7 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ import com.android.launcher3.logger.LauncherAtom.TaskSwitcherContainer;
import com.android.launcher3.logger.LauncherAtom.WallpapersContainer;
import com.android.launcher3.logger.LauncherAtomExtensions.ExtendedContainers;
import com.android.launcher3.model.ModelWriter;
import com.android.launcher3.util.ComponentKey;
import com.android.launcher3.util.ContentWriter;
import com.android.launcher3.util.SettingsCache;

@@ -211,6 +212,12 @@ public class ItemInfo {
        return Optional.ofNullable(getIntent()).map(Intent::getComponent).orElse(mComponentName);
    }

    @Nullable
    public final ComponentKey getComponentKey() {
        ComponentName targetComponent = getTargetComponent();
        return targetComponent == null ? null : new ComponentKey(targetComponent, user);
    }

    /**
     * Returns this item's package name.
     *