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

Commit 964d1647 authored by Tony Wickham's avatar Tony Wickham Committed by Android (Google) Code Review
Browse files

Merge "Gracefully handle failed task launches during quick switch" into ub-launcher3-qt-dev

parents f97355a1 e8836dc0
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -61,4 +61,9 @@ public abstract class GoActivityControlHelper<T extends BaseDraggingActivity> im
        // Go does not support live tiles.
        return false;
    }

    @Override
    public void onLaunchTaskFailed(T activity) {
        // Go does not support gestures from one task to another.
    }
}
+11 −1
Original line number Diff line number Diff line
@@ -15,6 +15,9 @@
 */
package com.android.launcher3.uioverrides.states;

import android.os.Handler;
import android.os.Looper;

import com.android.launcher3.Launcher;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.quickstep.views.RecentsView;
@@ -27,6 +30,8 @@ import com.android.quickstep.views.TaskView;
 */
public class QuickSwitchState extends BackgroundAppState {

    private static final String TAG = "QuickSwitchState";

    public QuickSwitchState(int id) {
        super(id, LauncherLogProto.ContainerType.APP);
    }
@@ -48,7 +53,12 @@ public class QuickSwitchState extends BackgroundAppState {
    public void onStateTransitionEnd(Launcher launcher) {
        TaskView tasktolaunch = launcher.<RecentsView>getOverviewPanel().getTaskViewAt(0);
        if (tasktolaunch != null) {
            tasktolaunch.launchTask(false);
            tasktolaunch.launchTask(false, success -> {
                if (!success) {
                    launcher.getStateManager().goToState(OVERVIEW);
                    tasktolaunch.notifyTaskLaunchFailed(TAG);
                }
            }, new Handler(Looper.getMainLooper()));
        } else {
            launcher.getStateManager().goToState(NORMAL);
        }
+6 −0
Original line number Diff line number Diff line
@@ -224,4 +224,10 @@ public final class FallbackActivityControllerHelper implements
    public boolean isInLiveTileMode() {
        return false;
    }

    @Override
    public void onLaunchTaskFailed(RecentsActivity activity) {
        // TODO: probably go back to overview instead.
        activity.<RecentsView>getOverviewPanel().startHome();
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -506,4 +506,9 @@ public final class LauncherActivityControllerHelper implements ActivityControlHe
        return launcher != null && launcher.getStateManager().getState() == OVERVIEW &&
                launcher.isStarted();
    }

    @Override
    public void onLaunchTaskFailed(Launcher launcher) {
        launcher.getStateManager().goToState(OVERVIEW);
    }
}
 No newline at end of file
+14 −1
Original line number Diff line number Diff line
@@ -746,6 +746,9 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
                        ? 0 : (progress - mShiftAtGestureStart) / (1 - mShiftAtGestureStart));
    }

    /**
     * @param windowProgress 0 == app, 1 == overview
     */
    private void updateSysUiFlags(float windowProgress) {
        if (mRecentsView != null) {
            TaskView centermostTask = mRecentsView.getTaskViewAt(mRecentsView
@@ -1247,7 +1250,17 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
                if (!mCanceled) {
                    TaskView nextTask = mRecentsView.getTaskView(taskId);
                    if (nextTask != null) {
                        nextTask.launchTask(false /* animate */, true /* freezeTaskList */);
                        nextTask.launchTask(false /* animate */, true /* freezeTaskList */,
                                success -> {
                            if (!success) {
                                // We couldn't launch the task, so take user to overview so they can
                                // decide what to do instead of staying in this broken state.
                                endLauncherTransitionController();
                                mActivityControlHelper.onLaunchTaskFailed(mActivity);
                                nextTask.notifyTaskLaunchFailed(TAG);
                                updateSysUiFlags(1 /* windowProgress == overview */);
                            }
                        }, mMainThreadHandler);
                        doLogGesture(NEW_TASK);
                    }
                    reset();
Loading