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

Commit 56b35b9d authored by Samuel Fufa's avatar Samuel Fufa
Browse files

Send app launch events from TaskSwitcher

Sends AppTargetEvent with action launch and container CONTAINER_OVERVIEW to AppPredictor when user launches app form recents.

Bug: 155996363
Test: Manual
Change-Id: I3eb38f5737ecaeb07e59db460e8d809416132825
parent 5c33e250
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.animation.ObjectAnimator;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.UserHandle;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.Surface;
@@ -42,6 +43,7 @@ import com.android.launcher3.LauncherState;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.appprediction.PredictionUiStateManager;
import com.android.launcher3.appprediction.PredictionUiStateManager.Client;
import com.android.launcher3.model.AppLaunchTracker;
import com.android.launcher3.statehandlers.DepthController;
import com.android.launcher3.statemanager.StateManager.StateListener;
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
@@ -52,6 +54,7 @@ import com.android.quickstep.SysUINavigationMode;
import com.android.quickstep.util.TransformParams;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.RecentsExtraCard;
import com.android.systemui.shared.recents.model.Task;

/**
 * {@link RecentsView} used in Launcher activity
@@ -167,14 +170,21 @@ public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher>
    }

    @Override
    protected void onTaskLaunched(boolean success) {
    protected void onTaskLaunchAnimationEnd(boolean success) {
        if (success) {
            mActivity.getStateManager().goToState(NORMAL, false /* animate */);
        } else {
            LauncherState state = mActivity.getStateManager().getState();
            mActivity.getAllAppsController().setState(state);
        }
        super.onTaskLaunched(success);
        super.onTaskLaunchAnimationEnd(success);
    }

    @Override
    public void onTaskLaunched(Task task) {
        UserHandle user =  UserHandle.of(task.key.userId);
        AppLaunchTracker.INSTANCE.get(getContext()).onStartApp(task.getTopComponent(), user,
                AppLaunchTracker.CONTAINER_OVERVIEW);
    }

    @Override
+8 −3
Original line number Diff line number Diff line
@@ -1936,7 +1936,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
        mPendingAnimation.addEndListener((endState) -> {
            if (endState.isSuccess) {
                Consumer<Boolean> onLaunchResult = (result) -> {
                    onTaskLaunched(result);
                    onTaskLaunchAnimationEnd(result);
                    if (!result) {
                        tv.notifyTaskLaunchFailed(TAG);
                    }
@@ -1951,7 +1951,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
                            .log(LAUNCHER_TASK_LAUNCH_SWIPE_DOWN);
                }
            } else {
                onTaskLaunched(false);
                onTaskLaunchAnimationEnd(false);
            }
            mPendingAnimation = null;
        });
@@ -1963,12 +1963,17 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl

    public abstract boolean shouldUseMultiWindowTaskSizeStrategy();

    protected void onTaskLaunched(boolean success) {
    protected void onTaskLaunchAnimationEnd(boolean success) {
        if (success) {
            resetTaskVisuals();
        }
    }

    /**
     * Called when task activity is launched
     */
    public void onTaskLaunched(Task task){ }

    @Override
    protected void notifyPageSwitchListener(int prevPage) {
        super.notifyPageSwitchListener(prevPage);
+3 −1
Original line number Diff line number Diff line
@@ -30,7 +30,8 @@ import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.anim.Interpolators.TOUCH_RESPONSE_INTERPOLATOR;
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_ICON_TAP_OR_LONGPRESS;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent
        .LAUNCHER_TASK_ICON_TAP_OR_LONGPRESS;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_LAUNCH_TAP;

import android.animation.Animator;
@@ -384,6 +385,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
                            }
                        }, resultCallbackHandler);
            }
            getRecentsView().onTaskLaunched(mTask);
        }
    }

+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ public class AppLaunchTracker implements ResourceBasedOverride {
    public static final String CONTAINER_ALL_APPS = Integer.toString(ContainerType.ALLAPPS);
    public static final String CONTAINER_PREDICTIONS = Integer.toString(ContainerType.PREDICTION);
    public static final String CONTAINER_SEARCH = Integer.toString(ContainerType.SEARCHRESULT);
    public static final String CONTAINER_OVERVIEW = Integer.toString(ContainerType.OVERVIEW);


    public static final MainThreadInitializedObject<AppLaunchTracker> INSTANCE =