Consolidate two different onTransitionCancelled implementations

There was previously two different onTransitionCancelled(), one in
BaseActivityInterface and one in AnimationFactory. They are pretty
similar and the differences seem subtle and not necessary. In this
bug, the AnimationFactory version was going to mStartState instead
of StateManager#getRestState() (which is the same, unless mStartState
disables restore). Instead, always use the mActivityInterface
implemenation, which seems more robust.

Test: Open app A, open app B, quick switch from B to A, swipe home
during that transition, then touch nav region during home transtion;
ensure we don't goToState(BACKGROUND_APP) in the subsequent
onTransitionCanceled().

Fixes: 184583037

Change-Id: I315a5087b12413d88c3ccc1e3245a55a76a73e62
This commit is contained in:
Tony Wickham 2021-04-06 12:07:02 -07:00
parent 2e0eee4d63
commit b77fa8da52
2 changed files with 2 additions and 13 deletions

View File

@ -317,9 +317,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
mStateCallback.runOnceAtState(STATE_LAUNCHER_PRESENT | STATE_HANDLER_INVALIDATED,
this::invalidateHandlerWithLauncher);
mStateCallback.runOnceAtState(STATE_HANDLER_INVALIDATED | STATE_RESUME_LAST_TASK,
this::notifyTransitionCancelled);
this::resetStateForAnimationCancel);
mStateCallback.runOnceAtState(STATE_HANDLER_INVALIDATED | STATE_FINISH_WITH_NO_END,
this::notifyTransitionCancelled);
this::resetStateForAnimationCancel);
if (!LIVE_TILE.get()) {
mStateCallback.addChangeListener(STATE_APP_CONTROLLER_RECEIVED | STATE_LAUNCHER_PRESENT
@ -1370,10 +1370,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
mActivity.getRootView().setOnApplyWindowInsetsListener(null);
}
private void notifyTransitionCancelled() {
mAnimationFactory.onTransitionCancelled();
}
private void resetStateForAnimationCancel() {
boolean wasVisible = mWasLauncherAlreadyVisible || mGestureStarted;
mActivityInterface.onTransitionCancelled(wasVisible);

View File

@ -366,8 +366,6 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
void createActivityInterface(long transitionLength);
default void onTransitionCancelled() { }
/**
* @param attached Whether to show RecentsView alongside the app window. If false, recents
* will be hidden by some property we can animate, e.g. alpha.
@ -433,11 +431,6 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
}
}
@Override
public void onTransitionCancelled() {
mActivity.getStateManager().goToState(mStartState, false /* animate */);
}
@Override
public void setRecentsAttachedToAppWindow(boolean attached, boolean animate) {
if (mIsAttachedToWindow == attached && animate) {