Merge "Changing GridMigrationTask to use ModelDbController directly instead of using content uris" into udc-dev
diff --git a/quickstep/src/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java b/quickstep/src/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java
index 89aba90..e1ce9b1 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java
@@ -359,17 +359,6 @@
             return true;
         });
         sandboxCategory.addPreference(launchOverviewTutorialPreference);
-        Preference launchAssistantTutorialPreference = new Preference(context);
-        launchAssistantTutorialPreference.setKey("launchAssistantTutorial");
-        launchAssistantTutorialPreference.setTitle("Launch Assistant Tutorial");
-        launchAssistantTutorialPreference.setSummary("Learn how to use the Assistant gesture");
-        launchAssistantTutorialPreference.setOnPreferenceClickListener(preference -> {
-            startActivity(launchSandboxIntent
-                    .putExtra("use_tutorial_menu", false)
-                    .putExtra("tutorial_steps", new String[] {"ASSISTANT"}));
-            return true;
-        });
-        sandboxCategory.addPreference(launchAssistantTutorialPreference);
         Preference launchSandboxModeTutorialPreference = new Preference(context);
         launchSandboxModeTutorialPreference.setKey("launchSandboxMode");
         launchSandboxModeTutorialPreference.setTitle("Launch Sandbox Mode");
diff --git a/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialController.java
deleted file mode 100644
index 40c600f..0000000
--- a/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialController.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep.interaction;
-
-import android.graphics.PointF;
-
-import com.android.launcher3.R;
-import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureResult;
-import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult;
-
-/** A {@link TutorialController} for the Assistant tutorial. */
-final class AssistantGestureTutorialController extends TutorialController {
-
-    AssistantGestureTutorialController(AssistantGestureTutorialFragment fragment,
-                                       TutorialType tutorialType) {
-        super(fragment, tutorialType);
-    }
-
-    @Override
-    public void onBackGestureAttempted(BackGestureResult result) {
-        switch (mTutorialType) {
-            case ASSISTANT:
-                switch (result) {
-                    case BACK_COMPLETED_FROM_LEFT:
-                    case BACK_COMPLETED_FROM_RIGHT:
-                    case BACK_CANCELLED_FROM_LEFT:
-                    case BACK_CANCELLED_FROM_RIGHT:
-                        showFeedback(R.string.assistant_gesture_feedback_swipe_too_far_from_corner);
-                        break;
-                }
-                break;
-            case ASSISTANT_COMPLETE:
-                if (result == BackGestureResult.BACK_COMPLETED_FROM_LEFT
-                        || result == BackGestureResult.BACK_COMPLETED_FROM_RIGHT) {
-                    mTutorialFragment.close();
-                }
-                break;
-        }
-    }
-
-
-    @Override
-    public void onNavBarGestureAttempted(NavBarGestureResult result, PointF finalVelocity) {
-        switch (mTutorialType) {
-            case ASSISTANT:
-                switch (result) {
-                    case HOME_GESTURE_COMPLETED:
-                    case OVERVIEW_GESTURE_COMPLETED:
-                    case HOME_NOT_STARTED_TOO_FAR_FROM_EDGE:
-                    case OVERVIEW_NOT_STARTED_TOO_FAR_FROM_EDGE:
-                    case HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION:
-                    case HOME_OR_OVERVIEW_CANCELLED:
-                        showFeedback(R.string.assistant_gesture_feedback_swipe_too_far_from_corner);
-                        break;
-                    case ASSISTANT_COMPLETED:
-                        showRippleEffect(null);
-                        showFeedback(R.string.assistant_gesture_tutorial_playground_subtitle);
-                        break;
-                    case ASSISTANT_NOT_STARTED_BAD_ANGLE:
-                        showFeedback(R.string.assistant_gesture_feedback_swipe_not_diagonal);
-                        break;
-                    case ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT:
-                        showFeedback(R.string.assistant_gesture_feedback_swipe_not_long_enough);
-                        break;
-                }
-                break;
-            case ASSISTANT_COMPLETE:
-                if (result == NavBarGestureResult.HOME_GESTURE_COMPLETED) {
-                    mTutorialFragment.close();
-                }
-                break;
-        }
-    }
-
-    @Override
-    public void setAssistantProgress(float progress) {
-        // TODO: Create an animation.
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialFragment.java
deleted file mode 100644
index 90a1c36..0000000
--- a/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialFragment.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep.interaction;
-
-import android.view.MotionEvent;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-
-import com.android.launcher3.logging.StatsLogManager;
-import com.android.quickstep.interaction.TutorialController.TutorialType;
-
-/** Shows the Home gesture interactive tutorial. */
-public class AssistantGestureTutorialFragment extends TutorialFragment {
-
-    public AssistantGestureTutorialFragment(boolean fromTutorialMenu) {
-        super(fromTutorialMenu);
-    }
-
-    @Override
-    TutorialController createController(TutorialType type) {
-        return new AssistantGestureTutorialController(this, type);
-    }
-
-    @Override
-    Class<? extends TutorialController> getControllerClass() {
-        return AssistantGestureTutorialController.class;
-    }
-
-    @Override
-    public boolean onTouch(View view, MotionEvent motionEvent) {
-        if (motionEvent.getAction() == MotionEvent.ACTION_DOWN && mTutorialController != null) {
-            mTutorialController.setRippleHotspot(motionEvent.getX(), motionEvent.getY());
-        }
-        return super.onTouch(view, motionEvent);
-    }
-
-    @Override
-    void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
-        // No-Op: tutorial step not currently shown to users
-    }
-
-    @Override
-    void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
-        // No-Op: tutorial step not currently shown to users
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java
index e1f0924..ab76fb4 100644
--- a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java
@@ -205,9 +205,6 @@
                 case HOME_GESTURE_COMPLETED:
                 case OVERVIEW_GESTURE_COMPLETED:
                 case HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION:
-                case ASSISTANT_COMPLETED:
-                case ASSISTANT_NOT_STARTED_BAD_ANGLE:
-                case ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT:
                 default:
                     showFeedback(R.string.back_gesture_feedback_swipe_in_nav_bar);
 
diff --git a/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java b/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java
index 57874d9..6cee690 100644
--- a/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java
+++ b/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java
@@ -15,11 +15,7 @@
  */
 package com.android.quickstep.interaction;
 
-import static com.android.launcher3.Utilities.squaredHypot;
 import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC;
-import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.ASSISTANT_COMPLETED;
-import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.ASSISTANT_NOT_STARTED_BAD_ANGLE;
-import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.HOME_GESTURE_COMPLETED;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.HOME_NOT_STARTED_TOO_FAR_FROM_EDGE;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.HOME_OR_OVERVIEW_CANCELLED;
@@ -27,24 +23,16 @@
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.OVERVIEW_GESTURE_COMPLETED;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.OVERVIEW_NOT_STARTED_TOO_FAR_FROM_EDGE;
 
-import android.animation.ValueAnimator;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Point;
 import android.graphics.PointF;
-import android.graphics.RectF;
-import android.os.SystemClock;
-import android.view.Display;
-import android.view.GestureDetector;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnTouchListener;
-import android.view.ViewConfiguration;
 
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.R;
-import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.NavigationMode;
@@ -52,46 +40,25 @@
 import com.android.quickstep.util.MotionPauseDetector;
 import com.android.quickstep.util.NavBarPosition;
 import com.android.quickstep.util.TriggerSwipeUpTouchTracker;
-import com.android.systemui.shared.system.QuickStepContract;
 
-/** Utility class to handle Home and Assistant gestures. */
+/** Utility class to handle Home gesture. */
 public class NavBarGestureHandler implements OnTouchListener,
         TriggerSwipeUpTouchTracker.OnSwipeUpListener, MotionPauseDetector.OnMotionPauseListener {
 
     private static final String LOG_TAG = "NavBarGestureHandler";
-    private static final long RETRACT_GESTURE_ANIMATION_DURATION_MS = 300;
-
     private final Context mContext;
     private final Point mDisplaySize = new Point();
     private final TriggerSwipeUpTouchTracker mSwipeUpTouchTracker;
     private final int mBottomGestureHeight;
-    private final GestureDetector mAssistantGestureDetector;
-    private final int mAssistantAngleThreshold;
-    private final RectF mAssistantLeftRegion = new RectF();
-    private final RectF mAssistantRightRegion = new RectF();
-    private final float mAssistantDragDistThreshold;
-    private final float mAssistantFlingDistThreshold;
-    private final long mAssistantTimeThreshold;
-    private final float mAssistantSquaredSlop;
-    private final PointF mAssistantStartDragPos = new PointF();
     private final PointF mDownPos = new PointF();
     private final PointF mLastPos = new PointF();
     private final MotionPauseDetector mMotionPauseDetector;
-    private boolean mTouchCameFromAssistantCorner;
     private boolean mTouchCameFromNavBar;
-    private boolean mPassedAssistantSlop;
-    private boolean mAssistantGestureActive;
-    private boolean mLaunchedAssistant;
-    private long mAssistantDragStartTime;
-    private float mAssistantDistance;
-    private float mAssistantTimeFraction;
-    private float mAssistantLastProgress;
     @Nullable
     private NavBarGestureAttemptCallback mGestureCallback;
 
     NavBarGestureHandler(Context context) {
         mContext = context;
-        final Display display = mContext.getDisplay();
         DisplayController.Info displayInfo = DisplayController.INSTANCE.get(mContext).getInfo();
         final int displayRotation = displayInfo.rotation;
         Point currentSize = displayInfo.currentSize;
@@ -105,27 +72,6 @@
         final Resources resources = context.getResources();
         mBottomGestureHeight =
                 ResourceUtils.getNavbarSize(ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, resources);
-        mAssistantDragDistThreshold =
-                resources.getDimension(R.dimen.gestures_assistant_drag_threshold);
-        mAssistantFlingDistThreshold =
-                resources.getDimension(R.dimen.gestures_assistant_fling_threshold);
-        mAssistantTimeThreshold =
-                resources.getInteger(R.integer.assistant_gesture_min_time_threshold);
-        mAssistantAngleThreshold =
-                resources.getInteger(R.integer.assistant_gesture_corner_deg_threshold);
-
-        mAssistantGestureDetector = new GestureDetector(context, new AssistantGestureListener());
-        int assistantWidth = resources.getDimensionPixelSize(R.dimen.gestures_assistant_width);
-        final float assistantHeight = Math.max(mBottomGestureHeight,
-                QuickStepContract.getWindowCornerRadius(context));
-        mAssistantLeftRegion.bottom = mAssistantRightRegion.bottom = mDisplaySize.y;
-        mAssistantLeftRegion.top = mAssistantRightRegion.top = mDisplaySize.y - assistantHeight;
-        mAssistantLeftRegion.left = 0;
-        mAssistantLeftRegion.right = assistantWidth;
-        mAssistantRightRegion.right = mDisplaySize.x;
-        mAssistantRightRegion.left = mDisplaySize.x - assistantWidth;
-        float slop = ViewConfiguration.get(context).getScaledTouchSlop();
-        mAssistantSquaredSlop = slop * slop;
     }
 
     void registerNavBarGestureAttemptCallback(NavBarGestureAttemptCallback callback) {
@@ -138,7 +84,7 @@
 
     @Override
     public void onSwipeUp(boolean wasFling, PointF finalVelocity) {
-        if (mGestureCallback == null || mAssistantGestureActive) {
+        if (mGestureCallback == null) {
             return;
         }
         if (mTouchCameFromNavBar) {
@@ -153,7 +99,7 @@
 
     @Override
     public void onSwipeUpCancelled() {
-        if (mGestureCallback != null && !mAssistantGestureActive) {
+        if (mGestureCallback != null) {
             mGestureCallback.onNavBarGestureAttempted(HOME_OR_OVERVIEW_CANCELLED, new PointF());
         }
     }
@@ -166,52 +112,16 @@
             case MotionEvent.ACTION_DOWN:
                 mDownPos.set(event.getX(), event.getY());
                 mLastPos.set(mDownPos);
-                mTouchCameFromAssistantCorner =
-                        mAssistantLeftRegion.contains(event.getX(), event.getY())
-                                || mAssistantRightRegion.contains(event.getX(), event.getY());
-                mAssistantGestureActive = mTouchCameFromAssistantCorner;
-                mTouchCameFromNavBar = !mTouchCameFromAssistantCorner
-                        && mDownPos.y >= mDisplaySize.y - mBottomGestureHeight;
+                mTouchCameFromNavBar = mDownPos.y >= mDisplaySize.y - mBottomGestureHeight;
                 if (!mTouchCameFromNavBar && mGestureCallback != null) {
                     mGestureCallback.setNavBarGestureProgress(null);
                 }
-                mLaunchedAssistant = false;
                 mSwipeUpTouchTracker.init();
                 mMotionPauseDetector.clear();
                 mMotionPauseDetector.setOnMotionPauseListener(this);
                 break;
             case MotionEvent.ACTION_MOVE:
                 mLastPos.set(event.getX(), event.getY());
-                if (!mAssistantGestureActive) {
-                    break;
-                }
-
-                if (!mPassedAssistantSlop) {
-                    // Normal gesture, ensure we pass the slop before we start tracking the gesture
-                    if (squaredHypot(mLastPos.x - mDownPos.x, mLastPos.y - mDownPos.y)
-                            > mAssistantSquaredSlop) {
-
-                        mPassedAssistantSlop = true;
-                        mAssistantStartDragPos.set(mLastPos.x, mLastPos.y);
-                        mAssistantDragStartTime = SystemClock.uptimeMillis();
-
-                        mAssistantGestureActive = isValidAssistantGestureAngle(
-                                mDownPos.x - mLastPos.x, mDownPos.y - mLastPos.y);
-                        if (!mAssistantGestureActive && mGestureCallback != null) {
-                            mGestureCallback.onNavBarGestureAttempted(
-                                    ASSISTANT_NOT_STARTED_BAD_ANGLE, new PointF());
-                        }
-                    }
-                } else {
-                    // Movement
-                    mAssistantDistance = (float) Math.hypot(mLastPos.x - mAssistantStartDragPos.x,
-                            mLastPos.y - mAssistantStartDragPos.y);
-                    if (mAssistantDistance >= 0) {
-                        final long diff = SystemClock.uptimeMillis() - mAssistantDragStartTime;
-                        mAssistantTimeFraction = Math.min(diff * 1f / mAssistantTimeThreshold, 1);
-                        updateAssistantProgress();
-                    }
-                }
                 break;
             case MotionEvent.ACTION_UP:
             case MotionEvent.ACTION_CANCEL:
@@ -222,35 +132,19 @@
                     intercepted = true;
                     break;
                 }
-                if (mAssistantGestureActive && !mLaunchedAssistant && mGestureCallback != null) {
-                    mGestureCallback.onNavBarGestureAttempted(
-                            ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT, new PointF());
-                    ValueAnimator animator = ValueAnimator.ofFloat(mAssistantLastProgress, 0)
-                            .setDuration(RETRACT_GESTURE_ANIMATION_DURATION_MS);
-                    animator.addUpdateListener(valueAnimator -> {
-                        float progress = (float) valueAnimator.getAnimatedValue();
-                        mGestureCallback.setAssistantProgress(progress);
-                    });
-                    animator.setInterpolator(Interpolators.DEACCEL_2);
-                    animator.start();
-                }
-                mPassedAssistantSlop = false;
                 break;
         }
         if (mTouchCameFromNavBar && mGestureCallback != null) {
             mGestureCallback.setNavBarGestureProgress(event.getY() - mDownPos.y);
         }
         mSwipeUpTouchTracker.onMotionEvent(event);
-        mAssistantGestureDetector.onTouchEvent(event);
         mMotionPauseDetector.addPosition(event);
         mMotionPauseDetector.setDisallowPause(mLastPos.y >= mDisplaySize.y - mBottomGestureHeight);
         return intercepted;
     }
 
     boolean onInterceptTouch(MotionEvent event) {
-        return mAssistantLeftRegion.contains(event.getX(), event.getY())
-                || mAssistantRightRegion.contains(event.getX(), event.getY())
-                || event.getY() >= mDisplaySize.y - mBottomGestureHeight;
+        return event.getY() >= mDisplaySize.y - mBottomGestureHeight;
     }
 
     @Override
@@ -263,39 +157,6 @@
         VibratorWrapper.INSTANCE.get(mContext).vibrate(OVERVIEW_HAPTIC);
     }
 
-    /**
-     * Determine if angle is larger than threshold for assistant detection
-     */
-    private boolean isValidAssistantGestureAngle(float deltaX, float deltaY) {
-        float angle = (float) Math.toDegrees(Math.atan2(deltaY, deltaX));
-
-        // normalize so that angle is measured clockwise from horizontal in the bottom right corner
-        // and counterclockwise from horizontal in the bottom left corner
-        angle = angle > 90 ? 180 - angle : angle;
-        return (angle > mAssistantAngleThreshold && angle < 90);
-    }
-
-    private void updateAssistantProgress() {
-        if (!mLaunchedAssistant) {
-            mAssistantLastProgress =
-                    Math.min(mAssistantDistance * 1f / mAssistantDragDistThreshold, 1)
-                            * mAssistantTimeFraction;
-            if (mAssistantDistance >= mAssistantDragDistThreshold && mAssistantTimeFraction >= 1) {
-                startAssistant(new PointF());
-            } else if (mGestureCallback != null) {
-                mGestureCallback.setAssistantProgress(mAssistantLastProgress);
-            }
-        }
-    }
-
-    private void startAssistant(PointF velocity) {
-        if (mGestureCallback != null) {
-            mGestureCallback.onNavBarGestureAttempted(ASSISTANT_COMPLETED, velocity);
-        }
-        VibratorWrapper.INSTANCE.get(mContext).vibrate(VibratorWrapper.EFFECT_CLICK);
-        mLaunchedAssistant = true;
-    }
-
     enum NavBarGestureResult {
         UNKNOWN,
         HOME_GESTURE_COMPLETED,
@@ -304,9 +165,6 @@
         OVERVIEW_NOT_STARTED_TOO_FAR_FROM_EDGE,
         HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION,  // Side swipe on nav bar.
         HOME_OR_OVERVIEW_CANCELLED,
-        ASSISTANT_COMPLETED,
-        ASSISTANT_NOT_STARTED_BAD_ANGLE,
-        ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT,
     }
 
     /** Callback to let the UI react to attempted nav bar gestures. */
@@ -319,27 +177,5 @@
 
         /** Indicates how far a touch originating in the nav bar has moved from the nav bar. */
         default void setNavBarGestureProgress(@Nullable Float displacement) {}
-
-        /** Indicates the progress of an Assistant gesture. */
-        default void setAssistantProgress(float progress) {}
-    }
-
-    private class AssistantGestureListener extends GestureDetector.SimpleOnGestureListener {
-        @Override
-        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
-            if (!mLaunchedAssistant && mTouchCameFromAssistantCorner) {
-                PointF velocity = new PointF(velocityX, velocityY);
-                if (!isValidAssistantGestureAngle(velocityX, -velocityY)) {
-                    if (mGestureCallback != null) {
-                        mGestureCallback.onNavBarGestureAttempted(ASSISTANT_NOT_STARTED_BAD_ANGLE,
-                                velocity);
-                    }
-                } else if (mAssistantDistance >= mAssistantFlingDistThreshold) {
-                    mAssistantLastProgress = 1;
-                    startAssistant(velocity);
-                }
-            }
-            return true;
-        }
     }
 }
diff --git a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java
index 160e431..dfbcf4d 100644
--- a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java
@@ -111,6 +111,7 @@
                     case BACK_COMPLETED_FROM_RIGHT:
                     case BACK_CANCELLED_FROM_LEFT:
                     case BACK_CANCELLED_FROM_RIGHT:
+                    case BACK_NOT_STARTED_TOO_FAR_FROM_EDGE:
                         showFeedback(R.string.overview_gesture_feedback_swipe_too_far_from_edge);
                         break;
                 }
diff --git a/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialController.java b/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialController.java
index 19b7933..f0bd4f9 100644
--- a/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialController.java
@@ -49,10 +49,6 @@
     @Override
     public void onNavBarGestureAttempted(NavBarGestureResult result, PointF finalVelocity) {
         switch (result) {
-            case ASSISTANT_COMPLETED:
-                showRippleEffect(null);
-                showFeedback(R.string.sandbox_mode_assistant_gesture_feedback_successful);
-                break;
             case HOME_GESTURE_COMPLETED:
                 animateFakeTaskViewHome(finalVelocity, () -> {
                     showFeedback(R.string.sandbox_mode_home_gesture_feedback_successful);
diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
index 3faa7e4..25de605 100644
--- a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
@@ -117,9 +117,6 @@
             case OVERVIEW_NAVIGATION:
             case OVERVIEW_NAVIGATION_COMPLETE:
                 return new OverviewGestureTutorialFragment(fromTutorialMenu);
-            case ASSISTANT:
-            case ASSISTANT_COMPLETE:
-                return new AssistantGestureTutorialFragment(fromTutorialMenu);
             case SANDBOX_MODE:
                 return new SandboxModeTutorialFragment(fromTutorialMenu);
             default:
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java b/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
index 2ae512a..e8cadab 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
@@ -23,7 +23,6 @@
 
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.ui.TaplTestsLauncher3;
-import com.android.launcher3.util.rule.TestStabilityRule;
 import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
 
 import org.junit.After;
@@ -61,10 +60,6 @@
     }
 
     @Test
-    // TODO (b/270201357): When this test is proven stable, remove this TestStabilityRule and
-    //  introduce into presubmit as well.
-    @TestStabilityRule.Stability(
-            flavors = TestStabilityRule.LOCAL | TestStabilityRule.PLATFORM_POSTSUBMIT)
     @PortraitLandscape
     @TaskbarModeSwitch
     public void testSplitAppFromHomeWithItself() throws Exception {