Remove unused paramater to finish

the finishWCTCallback forces a sync transaction on finish
and this conflicts with normal transition stuff, so we actually
never use it. This CL removes it since it is deadcode.

Bug: 293889797
Test: N/A, code is dead already.
Change-Id: I27da152c8c9ec7be1ac22a236ceface4e5d497b9
Merged-In: I27da152c8c9ec7be1ac22a236ceface4e5d497b9
This commit is contained in:
Evan Rosky
2023-06-28 10:58:30 -07:00
parent ae856b4054
commit ffea444597
25 changed files with 104 additions and 143 deletions

View File

@@ -80,13 +80,8 @@ interface IWindowOrganizerController {
* Finishes a transition. This must be called for all created transitions.
* @param transitionToken Which transition to finish
* @param t Changes to make before finishing but in the same SF Transaction. Can be null.
* @param callback Called when t is finished applying.
* @return An ID for the sync operation (see {@link #applySyncTransaction}. This will be
* negative if no sync transaction was attached (null t or callback)
*/
int finishTransition(in IBinder transitionToken,
in @nullable WindowContainerTransaction t,
in IWindowContainerTransactionCallback callback);
void finishTransition(in IBinder transitionToken, in @nullable WindowContainerTransaction t);
/** @return An interface enabling the management of task organizers. */
ITaskOrganizerController getTaskOrganizerController();

View File

@@ -115,19 +115,15 @@ public class WindowOrganizer {
* Finishes a running transition.
* @param transitionToken The transition to finish. Can't be null.
* @param t A set of window operations to apply before finishing.
* @param callback A sync callback (if provided). See {@link #applySyncTransaction}.
* @return An ID for the sync operation if performed. See {@link #applySyncTransaction}.
*
* @hide
*/
@SuppressLint("ExecutorRegistration")
@RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS)
public int finishTransition(@NonNull IBinder transitionToken,
@Nullable WindowContainerTransaction t,
@Nullable WindowContainerTransactionCallback callback) {
public void finishTransition(@NonNull IBinder transitionToken,
@Nullable WindowContainerTransaction t) {
try {
return getWindowOrganizerController().finishTransition(transitionToken, t,
callback != null ? callback.mInterface : null);
getWindowOrganizerController().finishTransition(transitionToken, t);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}

View File

@@ -186,6 +186,6 @@ public class ActivityEmbeddingController implements Transitions.TransitionHandle
if (callback == null) {
throw new IllegalStateException("No finish callback found");
}
callback.onTransitionFinished(null /* wct */, null /* wctCB */);
callback.onTransitionFinished(null /* wct */);
}
}

View File

@@ -241,7 +241,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
public void onAnimationEnd(Animator animation) {
mDesktopModeWindowDecoration.hideResizeVeil();
mTransitions.getMainExecutor().execute(
() -> finishCallback.onTransitionFinished(null, null));
() -> finishCallback.onTransitionFinished(null));
}
});
animator.start();
@@ -272,7 +272,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
startT.apply();
mTransitions.getMainExecutor().execute(
() -> finishCallback.onTransitionFinished(null, null));
() -> finishCallback.onTransitionFinished(null));
return true;
}
@@ -324,7 +324,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
mOnAnimationFinishedCallback.accept(finishT);
}
mTransitions.getMainExecutor().execute(
() -> finishCallback.onTransitionFinished(null, null));
() -> finishCallback.onTransitionFinished(null));
}
});
@@ -378,7 +378,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
mOnAnimationFinishedCallback.accept(finishT);
}
mTransitions.getMainExecutor().execute(
() -> finishCallback.onTransitionFinished(null, null));
() -> finishCallback.onTransitionFinished(null));
}
});
animator.start();

View File

@@ -168,7 +168,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
mOnAnimationFinishedCallback.accept(finishT);
}
mTransitions.getMainExecutor().execute(
() -> finishCallback.onTransitionFinished(null, null));
() -> finishCallback.onTransitionFinished(null));
}
});
animator.start();

View File

@@ -104,7 +104,7 @@ class ToggleResizeDesktopTaskTransitionHandler(
.setWindowCrop(leash, endBounds.width(), endBounds.height())
.show(leash)
windowDecor.hideResizeVeil()
finishCallback.onTransitionFinished(null, null)
finishCallback.onTransitionFinished(null)
boundsAnimator = null
}
)

View File

@@ -130,7 +130,7 @@ public class FreeformTaskTransitionHandler
if (!animations.isEmpty()) return;
mMainExecutor.execute(() -> {
mAnimations.remove(transition);
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
finishCallback.onTransitionFinished(null /* wct */);
});
};
for (TransitionInfo.Change change : info.getChanges()) {

View File

@@ -19,7 +19,6 @@ package com.android.wm.shell.keyguard;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM;
import static android.view.WindowManager.KEYGUARD_VISIBILITY_TRANSIT_FLAGS;
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_APPEARING;
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_OCCLUDING;
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_UNOCCLUDING;
import static android.view.WindowManager.TRANSIT_SLEEP;
@@ -169,7 +168,7 @@ public class KeyguardTransitionHandler implements Transitions.TransitionHandler
// Post our finish callback to let startAnimation finish first.
mMainExecutor.executeDelayed(() -> {
mStartedTransitions.remove(transition);
finishCallback.onTransitionFinished(wct, null);
finishCallback.onTransitionFinished(wct);
}, 0);
}
});
@@ -206,7 +205,7 @@ public class KeyguardTransitionHandler implements Transitions.TransitionHandler
// implementing an AIDL interface.
Log.wtf(TAG, "RemoteException thrown from KeyguardService transition", e);
}
nextFinishCallback.onTransitionFinished(null, null);
nextFinishCallback.onTransitionFinished(null);
} else if (nextInfo.getType() == TRANSIT_SLEEP) {
// An empty SLEEP transition comes in as a signal to abort transitions whenever a sleep
// token is held. In cases where keyguard is showing, we are running the animation for

View File

@@ -447,7 +447,7 @@ public class PipTransition extends PipTransitionController {
// handler if there is a pending PiP animation.
final Transitions.TransitionFinishCallback finishCallback = mFinishCallback;
mFinishCallback = null;
finishCallback.onTransitionFinished(wct, null /* callback */);
finishCallback.onTransitionFinished(wct);
}
@Override
@@ -456,7 +456,7 @@ public class PipTransition extends PipTransitionController {
// for example, when app crashes while in PiP and exit transition has not started
mCurrentPipTaskToken = null;
if (mFinishCallback == null) return;
mFinishCallback.onTransitionFinished(null /* wct */, null /* callback */);
mFinishCallback.onTransitionFinished(null /* wct */);
mFinishCallback = null;
mFinishTransaction = null;
}
@@ -586,7 +586,7 @@ public class PipTransition extends PipTransitionController {
final boolean useLocalLeash = activitySc != null;
final boolean toFullscreen = pipChange.getEndAbsBounds().equals(
mPipBoundsState.getDisplayBounds());
mFinishCallback = (wct, wctCB) -> {
mFinishCallback = (wct) -> {
mPipOrganizer.onExitPipFinished(taskInfo);
// TODO(b/286346098): remove the OPEN app flicker completely
@@ -610,7 +610,7 @@ public class PipTransition extends PipTransitionController {
mPipAnimationController.resetAnimatorState();
finishTransaction.remove(pipLeash);
}
finishCallback.onTransitionFinished(wct, wctCB);
finishCallback.onTransitionFinished(wct);
};
mFinishTransaction = finishTransaction;
@@ -750,7 +750,7 @@ public class PipTransition extends PipTransitionController {
finishTransaction.setWindowCrop(info.getChanges().get(0).getLeash(),
mPipDisplayLayoutState.getDisplayBounds());
mPipOrganizer.onExitPipFinished(taskInfo);
finishCallback.onTransitionFinished(null, null);
finishCallback.onTransitionFinished(null);
}
/** Whether we should handle the given {@link TransitionInfo} animation as entering PIP. */
@@ -1045,7 +1045,7 @@ public class PipTransition extends PipTransitionController {
startTransaction.apply();
mPipOrganizer.onExitPipFinished(taskInfo);
finishCallback.onTransitionFinished(null, null);
finishCallback.onTransitionFinished(null);
}
private void resetPrevPip(@NonNull TransitionInfo.Change prevPipTaskChange,

View File

@@ -771,7 +771,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler {
Slog.e(TAG, "Error sending appeared tasks to recents animation", e);
}
}
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
finishCallback.onTransitionFinished(null /* wct */);
}
/** For now, just set-up a jump-cut to the new activity. */
@@ -937,7 +937,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler {
}
}
cleanUp();
finishCB.onTransitionFinished(wct.isEmpty() ? null : wct, null /* wctCB */);
finishCB.onTransitionFinished(wct.isEmpty() ? null : wct);
}
@Override

View File

@@ -43,7 +43,6 @@ import android.window.RemoteTransition;
import android.window.TransitionInfo;
import android.window.WindowContainerToken;
import android.window.WindowContainerTransaction;
import android.window.WindowContainerTransactionCallback;
import com.android.internal.protolog.common.ProtoLog;
import com.android.wm.shell.common.TransactionPool;
@@ -109,7 +108,7 @@ class SplitScreenTransitions {
if (pendingTransition.mCanceled) {
// The pending transition was canceled, so skip playing animation.
startTransaction.apply();
onFinish(null /* wct */, null /* wctCB */);
onFinish(null /* wct */);
return;
}
@@ -211,7 +210,7 @@ class SplitScreenTransitions {
}
}
t.apply();
onFinish(null /* wct */, null /* wctCB */);
onFinish(null /* wct */);
}
/** Play animation for drag divider dismiss transition. */
@@ -238,7 +237,7 @@ class SplitScreenTransitions {
mAnimations.remove(va);
if (animated) {
mTransitions.getMainExecutor().execute(() -> {
onFinish(null /* wct */, null /* wctCB */);
onFinish(null /* wct */);
});
}
});
@@ -250,7 +249,7 @@ class SplitScreenTransitions {
}
}
startTransaction.apply();
onFinish(null /* wct */, null /* wctCB */);
onFinish(null /* wct */);
}
/** Play animation for resize transition. */
@@ -283,7 +282,7 @@ class SplitScreenTransitions {
mAnimations.remove(va);
if (animated) {
mTransitions.getMainExecutor().execute(() -> {
onFinish(null /* wct */, null /* wctCB */);
onFinish(null /* wct */);
});
}
});
@@ -291,7 +290,7 @@ class SplitScreenTransitions {
}
startTransaction.apply();
onFinish(null /* wct */, null /* wctCB */);
onFinish(null /* wct */);
}
boolean isPendingTransition(IBinder transition) {
@@ -391,7 +390,7 @@ class SplitScreenTransitions {
if (mPendingResize != null) {
mPendingResize.cancel(null);
mAnimations.clear();
onFinish(null /* wct */, null /* wctCB */);
onFinish(null /* wct */);
}
IBinder transition = mTransitions.startTransition(TRANSIT_CHANGE, wct, handler);
@@ -450,7 +449,7 @@ class SplitScreenTransitions {
}
}
void onFinish(WindowContainerTransaction wct, WindowContainerTransactionCallback wctCB) {
void onFinish(WindowContainerTransaction wct) {
if (!mAnimations.isEmpty()) return;
if (wct == null) wct = new WindowContainerTransaction();
@@ -470,7 +469,7 @@ class SplitScreenTransitions {
mOnFinish.run();
if (mFinishCallback != null) {
mFinishCallback.onTransitionFinished(wct /* wct */, wctCB /* wctCB */);
mFinishCallback.onTransitionFinished(wct /* wct */);
mFinishCallback = null;
}
}
@@ -495,7 +494,7 @@ class SplitScreenTransitions {
mTransactionPool.release(transaction);
mTransitions.getMainExecutor().execute(() -> {
mAnimations.remove(va);
onFinish(null /* wct */, null /* wctCB */);
onFinish(null /* wct */);
});
}
});

View File

@@ -404,7 +404,7 @@ public class TaskViewTransitions implements Transitions.TransitionHandler {
}
// No animation, just show it immediately.
startTransaction.apply();
finishCallback.onTransitionFinished(wct, null /* wctCB */);
finishCallback.onTransitionFinished(wct);
startNextTransition();
return true;
}

View File

@@ -40,7 +40,6 @@ import android.view.WindowManager;
import android.window.TransitionInfo;
import android.window.TransitionRequestInfo;
import android.window.WindowContainerTransaction;
import android.window.WindowContainerTransactionCallback;
import com.android.internal.protolog.common.ProtoLog;
import com.android.wm.shell.common.split.SplitScreenUtils;
@@ -124,14 +123,7 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
mTransition = transition;
}
void joinFinishArgs(WindowContainerTransaction wct,
WindowContainerTransactionCallback wctCB) {
if (wctCB != null) {
// Technically can probably support 1, but don't want to encourage CB usage since
// it creates instabliity, so just throw.
throw new IllegalArgumentException("Can't mix transitions that require finish"
+ " sync callback");
}
void joinFinishArgs(WindowContainerTransaction wct) {
if (wct != null) {
if (mFinishWCT == null) {
mFinishWCT = wct;
@@ -389,12 +381,12 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
info.getChanges().remove(i);
}
}
Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
Transitions.TransitionFinishCallback finishCB = (wct) -> {
--mixed.mInFlightSubAnimations;
mixed.joinFinishArgs(wct, wctCB);
mixed.joinFinishArgs(wct);
if (mixed.mInFlightSubAnimations > 0) return;
mActiveTransitions.remove(mixed);
finishCallback.onTransitionFinished(mixed.mFinishWCT, wctCB);
finishCallback.onTransitionFinished(mixed.mFinishWCT);
};
if (pipChange == null) {
if (mixed.mLeftoversHandler != null) {
@@ -461,15 +453,15 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
return false;
}
final boolean isGoingHome = homeIsOpening;
Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
Transitions.TransitionFinishCallback finishCB = (wct) -> {
--mixed.mInFlightSubAnimations;
mixed.joinFinishArgs(wct, wctCB);
mixed.joinFinishArgs(wct);
if (mixed.mInFlightSubAnimations > 0) return;
mActiveTransitions.remove(mixed);
if (isGoingHome) {
mSplitHandler.onTransitionAnimationComplete();
}
finishCallback.onTransitionFinished(mixed.mFinishWCT, wctCB);
finishCallback.onTransitionFinished(mixed.mFinishWCT);
};
if (isGoingHome || mSplitHandler.getSplitItemPosition(pipChange.getLastParent())
!= SPLIT_POSITION_UNDEFINED) {
@@ -586,12 +578,12 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
// We need to split the transition into 2 parts: the split part and the display part.
mixed.mInFlightSubAnimations = 2;
Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
Transitions.TransitionFinishCallback finishCB = (wct) -> {
--mixed.mInFlightSubAnimations;
mixed.joinFinishArgs(wct, wctCB);
mixed.joinFinishArgs(wct);
if (mixed.mInFlightSubAnimations > 0) return;
mActiveTransitions.remove(mixed);
finishCallback.onTransitionFinished(mixed.mFinishWCT, null /* wctCB */);
finishCallback.onTransitionFinished(mixed.mFinishWCT);
};
// Dispatch the display change. This will most-likely be taken by the default handler.
@@ -614,7 +606,7 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
// Split-screen is only interested in the recents transition finishing (and merging), so
// just wrap finish and start recents animation directly.
Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
Transitions.TransitionFinishCallback finishCB = (wct) -> {
mixed.mInFlightSubAnimations = 0;
mActiveTransitions.remove(mixed);
// If pair-to-pair switching, the post-recents clean-up isn't needed.
@@ -626,7 +618,7 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
mSplitHandler.onRecentsPairToPairAnimationFinish(wct);
}
mSplitHandler.onTransitionAnimationComplete();
finishCallback.onTransitionFinished(wct, wctCB);
finishCallback.onTransitionFinished(wct);
};
mixed.mInFlightSubAnimations = 1;
mSplitHandler.onRecentsInSplitAnimationStart(info);
@@ -644,11 +636,11 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
@NonNull SurfaceControl.Transaction startTransaction,
@NonNull SurfaceControl.Transaction finishTransaction,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
final Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
final Transitions.TransitionFinishCallback finishCB = (wct) -> {
mixed.mInFlightSubAnimations--;
if (mixed.mInFlightSubAnimations == 0) {
mActiveTransitions.remove(mixed);
finishCallback.onTransitionFinished(wct, wctCB);
finishCallback.onTransitionFinished(wct);
}
};
mixed.mInFlightSubAnimations++;
@@ -693,11 +685,11 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
@NonNull SurfaceControl.Transaction startTransaction,
@NonNull SurfaceControl.Transaction finishTransaction,
@NonNull Transitions.TransitionFinishCallback finishCallback) {
final Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
final Transitions.TransitionFinishCallback finishCB = (wct) -> {
mixed.mInFlightSubAnimations--;
if (mixed.mInFlightSubAnimations > 0) return;
mActiveTransitions.remove(mixed);
finishCallback.onTransitionFinished(wct, wctCB);
finishCallback.onTransitionFinished(wct);
};
mixed.mInFlightSubAnimations = 1;
// Sync pip state.

View File

@@ -300,7 +300,7 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
// immediately finishes since there is no animation for screen-wake.
if (info.getType() == WindowManager.TRANSIT_WAKE && !info.isKeyguardGoingAway()) {
startTransaction.apply();
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
finishCallback.onTransitionFinished(null /* wct */);
return true;
}
@@ -309,7 +309,7 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
|| (info.getFlags() & WindowManager.TRANSIT_FLAG_INVISIBLE) != 0) {
startTransaction.apply();
finishTransaction.apply();
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
finishCallback.onTransitionFinished(null /* wct */);
return true;
}
@@ -323,7 +323,7 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
final Runnable onAnimFinish = () -> {
if (!animations.isEmpty()) return;
mAnimations.remove(transition);
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
finishCallback.onTransitionFinished(null /* wct */);
};
final List<Consumer<SurfaceControl.Transaction>> postStartTransactionCallbacks =

View File

@@ -68,7 +68,7 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
final IBinder.DeathRecipient remoteDied = () -> {
Log.e(Transitions.TAG, "Remote transition died, finishing");
mMainExecutor.execute(
() -> finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */));
() -> finishCallback.onTransitionFinished(null /* wct */));
};
IRemoteTransitionFinishedCallback cb = new IRemoteTransitionFinishedCallback.Stub() {
@Override
@@ -81,7 +81,7 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
finishTransaction.merge(sct);
}
mMainExecutor.execute(() -> {
finishCallback.onTransitionFinished(wct, null /* wctCB */);
finishCallback.onTransitionFinished(wct);
});
}
};
@@ -104,7 +104,7 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
if (mRemote.asBinder() != null) {
mRemote.asBinder().unlinkToDeath(remoteDied, 0 /* flags */);
}
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
finishCallback.onTransitionFinished(null /* wct */);
}
return true;
}
@@ -122,8 +122,7 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
// remote applied the transaction, but applying twice will break surfaceflinger
// so just assume the worst-case and clear the local transaction.
t.clear();
mMainExecutor.execute(
() -> finishCallback.onTransitionFinished(wct, null /* wctCB */));
mMainExecutor.execute(() -> finishCallback.onTransitionFinished(wct));
}
};
try {

View File

@@ -133,7 +133,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
}
mMainExecutor.execute(() -> {
mRequestedRemotes.remove(transition);
finishCallback.onTransitionFinished(wct, null /* wctCB */);
finishCallback.onTransitionFinished(wct);
});
}
};
@@ -153,8 +153,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
Log.e(Transitions.TAG, "Error running remote transition.", e);
unhandleDeath(remote.asBinder(), finishCallback);
mRequestedRemotes.remove(transition);
mMainExecutor.execute(
() -> finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */));
mMainExecutor.execute(() -> finishCallback.onTransitionFinished(null /* wct */));
}
return true;
}
@@ -210,7 +209,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
+ "that the mergeTarget's RemoteTransition impl erroneously "
+ "accepted/ran the merge request after finishing the mergeTarget");
}
finishCallback.onTransitionFinished(wct, null /* wctCB */);
finishCallback.onTransitionFinished(wct);
});
}
};
@@ -316,8 +315,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
}
}
for (int i = mPendingFinishCallbacks.size() - 1; i >= 0; --i) {
mPendingFinishCallbacks.get(i).onTransitionFinished(
null /* wct */, null /* wctCB */);
mPendingFinishCallbacks.get(i).onTransitionFinished(null /* wct */);
}
mPendingFinishCallbacks.clear();
});

View File

@@ -43,7 +43,7 @@ class SleepHandler implements Transitions.TransitionHandler {
@NonNull Transitions.TransitionFinishCallback finishCallback) {
mSleepTransitions.remove(transition);
startTransaction.apply();
finishCallback.onTransitionFinished(null, null);
finishCallback.onTransitionFinished(null);
return true;
}

View File

@@ -62,7 +62,6 @@ import android.window.TransitionInfo;
import android.window.TransitionMetrics;
import android.window.TransitionRequestInfo;
import android.window.WindowContainerTransaction;
import android.window.WindowContainerTransactionCallback;
import android.window.WindowOrganizer;
import androidx.annotation.BinderThread;
@@ -829,7 +828,7 @@ public class Transitions implements RemoteCallable<Transitions>,
ready.mStartT.apply();
}
// finish now since there's nothing to animate. Calls back into processReadyQueue
onFinish(ready, null, null);
onFinish(ready, null);
return;
}
playTransition(ready);
@@ -849,7 +848,7 @@ public class Transitions implements RemoteCallable<Transitions>,
+ " in case they can be merged", ready, playing);
mTracer.logMergeRequested(ready.mInfo.getDebugId(), playing.mInfo.getDebugId());
playing.mHandler.mergeAnimation(ready.mToken, ready.mInfo, ready.mStartT,
playing.mToken, (wct, cb) -> onMerged(playing, ready));
playing.mToken, (wct) -> onMerged(playing, ready));
}
private void onMerged(@NonNull ActiveTransition playing, @NonNull ActiveTransition merged) {
@@ -899,7 +898,7 @@ public class Transitions implements RemoteCallable<Transitions>,
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " try firstHandler %s",
active.mHandler);
boolean consumed = active.mHandler.startAnimation(active.mToken, active.mInfo,
active.mStartT, active.mFinishT, (wct, cb) -> onFinish(active, wct, cb));
active.mStartT, active.mFinishT, (wct) -> onFinish(active, wct));
if (consumed) {
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " animated by firstHandler");
mTracer.logDispatched(active.mInfo.getDebugId(), active.mHandler);
@@ -908,7 +907,7 @@ public class Transitions implements RemoteCallable<Transitions>,
}
// Otherwise give every other handler a chance
active.mHandler = dispatchTransition(active.mToken, active.mInfo, active.mStartT,
active.mFinishT, (wct, cb) -> onFinish(active, wct, cb), active.mHandler);
active.mFinishT, (wct) -> onFinish(active, wct), active.mHandler);
}
/**
@@ -985,8 +984,7 @@ public class Transitions implements RemoteCallable<Transitions>,
}
private void onFinish(ActiveTransition active,
@Nullable WindowContainerTransaction wct,
@Nullable WindowContainerTransactionCallback wctCB) {
@Nullable WindowContainerTransaction wct) {
final Track track = mTracks.get(active.getTrack());
if (track.mActiveTransition != active) {
Log.e(TAG, "Trying to finish a non-running transition. Either remote crashed or "
@@ -1035,11 +1033,11 @@ public class Transitions implements RemoteCallable<Transitions>,
// Now perform all the finish callbacks (starting with the playing one and then all the
// transitions merged into it).
releaseSurfaces(active.mInfo);
mOrganizer.finishTransition(active.mToken, wct, wctCB);
mOrganizer.finishTransition(active.mToken, wct);
if (active.mMerged != null) {
for (int iM = 0; iM < active.mMerged.size(); ++iM) {
ActiveTransition merged = active.mMerged.get(iM);
mOrganizer.finishTransition(merged.mToken, null /* wct */, null /* wctCB */);
mOrganizer.finishTransition(merged.mToken, null /* wct */);
releaseSurfaces(merged.mInfo);
}
active.mMerged.clear();
@@ -1178,7 +1176,7 @@ public class Transitions implements RemoteCallable<Transitions>,
forceFinish.mHandler.onTransitionConsumed(
forceFinish.mToken, true /* aborted */, null /* finishTransaction */);
}
onFinish(forceFinish, null, null);
onFinish(forceFinish, null);
}
}
if (track.isIdle() || mReadyDuringSync.isEmpty()) {
@@ -1198,7 +1196,7 @@ public class Transitions implements RemoteCallable<Transitions>,
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " Attempt to merge sync %s"
+ " into %s via a SLEEP proxy", nextSync, playing);
playing.mHandler.mergeAnimation(nextSync.mToken, dummyInfo, dummyT,
playing.mToken, (wct, cb) -> {});
playing.mToken, (wct) -> {});
// it's possible to complete immediately. If that happens, just repeat the signal
// loop until we either finish everything or start playing an animation that isn't
// finishing immediately.
@@ -1226,11 +1224,8 @@ public class Transitions implements RemoteCallable<Transitions>,
* The transition must not touch the surfaces after this has been called.
*
* @param wct A WindowContainerTransaction to run along with the transition clean-up.
* @param wctCB A sync callback that will be run when the transition clean-up is done and
* wct has been applied.
*/
void onTransitionFinished(@Nullable WindowContainerTransaction wct,
@Nullable WindowContainerTransactionCallback wctCB);
void onTransitionFinished(@Nullable WindowContainerTransaction wct);
}
/**

View File

@@ -169,7 +169,7 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene
animator.stop();
}
mFinishCallback.onTransitionFinished(null, null);
mFinishCallback.onTransitionFinished(null);
mFinishCallback = null;
mTransition = null;
}
@@ -193,7 +193,7 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene
}
// Apply changes happening during the unfold animation immediately
t.apply();
finishCallback.onTransitionFinished(null, null);
finishCallback.onTransitionFinished(null);
}
}

View File

@@ -168,7 +168,7 @@ public class VeiledResizeTaskPositioner implements DragPositioningCallback,
startTransaction.apply();
mDesktopWindowDecoration.hideResizeVeil();
mCtrlType = CTRL_TYPE_UNDEFINED;
finishCallback.onTransitionFinished(null, null);
finishCallback.onTransitionFinished(null);
return true;
}

View File

@@ -92,7 +92,7 @@ public class ActivityEmbeddingAnimationRunnerTests extends ActivityEmbeddingAnim
.build();
final Animator animator = mAnimRunner.createAnimator(
info, mStartTransaction, mFinishTransaction,
() -> mFinishCallback.onTransitionFinished(null /* wct */, null /* wctCB */),
() -> mFinishCallback.onTransitionFinished(null /* wct */),
new ArrayList());
// The animation should be empty when it is behind starting window.

View File

@@ -75,7 +75,7 @@ abstract class ActivityEmbeddingAnimationTestBase extends ShellTestCase {
assertNotNull(mAnimRunner);
mAnimSpec = mAnimRunner.mAnimationSpec;
assertNotNull(mAnimSpec);
mFinishCallback = (wct, wctCB) -> {};
mFinishCallback = (wct) -> {};
spyOn(mController);
spyOn(mAnimRunner);
spyOn(mAnimSpec);

View File

@@ -217,12 +217,10 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
doReturn(animator).when(mAnimRunner).createAnimator(any(), any(), any(), any(), any());
mController.startAnimation(mTransition, info, mStartTransaction,
mFinishTransaction, mFinishCallback);
verify(mFinishCallback, never()).onTransitionFinished(any(), any());
verify(mFinishCallback, never()).onTransitionFinished(any());
mController.mergeAnimation(mTransition, info, new SurfaceControl.Transaction(),
mTransition,
(wct, cb) -> {
});
verify(mFinishCallback).onTransitionFinished(any(), any());
mTransition, (wct) -> {});
verify(mFinishCallback).onTransitionFinished(any());
}
@Test
@@ -238,9 +236,9 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
mController.startAnimation(mTransition, info, mStartTransaction,
mFinishTransaction, mFinishCallback);
verify(mFinishCallback, never()).onTransitionFinished(any(), any());
verify(mFinishCallback, never()).onTransitionFinished(any());
mController.onAnimationFinished(mTransition);
verify(mFinishCallback).onTransitionFinished(any(), any());
verify(mFinishCallback).onTransitionFinished(any());
// Should not call finish when the finish has already been called.
assertThrows(IllegalStateException.class,

View File

@@ -176,7 +176,7 @@ public class ShellTransitionTests extends ShellTestCase {
assertEquals(1, mDefaultHandler.activeCount());
mDefaultHandler.finishAll();
mMainExecutor.flushAll();
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), any(), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), any());
}
@Test
@@ -299,7 +299,7 @@ public class ShellTransitionTests extends ShellTestCase {
assertTrue(remoteCalled[0]);
mDefaultHandler.finishAll();
mMainExecutor.flushAll();
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), eq(remoteFinishWCT), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), eq(remoteFinishWCT));
}
@Test
@@ -449,7 +449,7 @@ public class ShellTransitionTests extends ShellTestCase {
assertTrue(remoteCalled[0]);
mDefaultHandler.finishAll();
mMainExecutor.flushAll();
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), any(), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), any());
}
@Test
@@ -524,20 +524,20 @@ public class ShellTransitionTests extends ShellTestCase {
// default handler doesn't merge by default, so it shouldn't increment active count.
assertEquals(1, mDefaultHandler.activeCount());
assertEquals(0, mDefaultHandler.mergeCount());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken1), any(), any());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any(), any());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken1), any());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any());
mDefaultHandler.finishAll();
mMainExecutor.flushAll();
// first transition finished
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any(), any());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any(), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any());
// But now the "queued" transition is running
assertEquals(1, mDefaultHandler.activeCount());
mDefaultHandler.finishAll();
mMainExecutor.flushAll();
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any(), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any());
}
@Test
@@ -565,15 +565,15 @@ public class ShellTransitionTests extends ShellTestCase {
// it should still only have 1 active, but then show 1 merged
assertEquals(1, mDefaultHandler.activeCount());
assertEquals(1, mDefaultHandler.mergeCount());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken1), any(), any());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken1), any());
// We don't tell organizer it is finished yet (since we still want to maintain ordering)
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any(), any());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any());
mDefaultHandler.finishAll();
mMainExecutor.flushAll();
// transition + merged all finished.
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any(), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any(), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any());
// Make sure nothing was queued
assertEquals(0, mDefaultHandler.activeCount());
}
@@ -599,8 +599,7 @@ public class ShellTransitionTests extends ShellTestCase {
requestStartTransition(transitions, transitTokenNotReady);
mDefaultHandler.setSimulateMerge(true);
mDefaultHandler.mFinishes.get(0).second.onTransitionFinished(
null /* wct */, null /* wctCB */);
mDefaultHandler.mFinishes.get(0).second.onTransitionFinished(null /* wct */);
// Make sure that the non-ready transition is not merged.
assertEquals(0, mDefaultHandler.mergeCount());
@@ -823,8 +822,8 @@ public class ShellTransitionTests extends ShellTestCase {
mDefaultHandler.finishAll();
mMainExecutor.flushAll();
// first transition finished
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any(), any());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any(), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any());
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any());
// But now the "queued" transition is running
assertEquals(1, mDefaultHandler.activeCount());
@@ -835,7 +834,7 @@ public class ShellTransitionTests extends ShellTestCase {
mDefaultHandler.finishAll();
mMainExecutor.flushAll();
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any(), any());
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any());
// runnable2 and runnable3 are executed after the second transition finishes because there
// are no other active transitions, runnable1 isn't executed again.
@@ -1449,13 +1448,13 @@ public class ShellTransitionTests extends ShellTestCase {
if (mFinishOnSync && info.getType() == TRANSIT_SLEEP) {
for (int i = 0; i < mFinishes.size(); ++i) {
if (mFinishes.get(i).first != mergeTarget) continue;
mFinishes.remove(i).second.onTransitionFinished(null, null);
mFinishes.remove(i).second.onTransitionFinished(null);
return;
}
}
if (!(mSimulateMerge || mShouldMerge.contains(transition))) return;
mMerged.add(transition);
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
finishCallback.onTransitionFinished(null /* wct */);
}
@Nullable
@@ -1478,7 +1477,7 @@ public class ShellTransitionTests extends ShellTestCase {
mFinishes;
mFinishes = new ArrayList<>();
for (int i = finishes.size() - 1; i >= 0; --i) {
finishes.get(i).second.onTransitionFinished(null /* wct */, null /* wctCB */);
finishes.get(i).second.onTransitionFinished(null /* wct */);
}
mShouldMerge.clear();
}
@@ -1486,7 +1485,7 @@ public class ShellTransitionTests extends ShellTestCase {
void finishOne() {
Pair<IBinder, Transitions.TransitionFinishCallback> fin = mFinishes.remove(0);
mMerged.clear();
fin.second.onTransitionFinished(null /* wct */, null /* wctCB */);
fin.second.onTransitionFinished(null /* wct */);
}
int activeCount() {

View File

@@ -382,18 +382,13 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
}
@Override
public int finishTransition(@NonNull IBinder transitionToken,
@Nullable WindowContainerTransaction t,
@Nullable IWindowContainerTransactionCallback callback) {
public void finishTransition(@NonNull IBinder transitionToken,
@Nullable WindowContainerTransaction t) {
enforceTaskPermission("finishTransition()");
final CallerInfo caller = new CallerInfo();
final long ident = Binder.clearCallingIdentity();
try {
synchronized (mGlobalLock) {
int syncId = -1;
if (t != null && callback != null) {
syncId = startSyncWithOrganizer(callback);
}
final Transition transition = Transition.fromBinder(transitionToken);
// apply the incoming transaction before finish in case it alters the visibility
// of the participants.
@@ -402,14 +397,10 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
// changes of the transition participants will only set visible-requested
// and still let finishTransition handle the participants.
mTransitionController.mFinishingTransition = transition;
applyTransaction(t, syncId, null /*transition*/, caller, transition);
applyTransaction(t, -1 /* syncId */, null /*transition*/, caller, transition);
}
mTransitionController.finishTransition(transition);
mTransitionController.mFinishingTransition = null;
if (syncId >= 0) {
setSyncReady(syncId);
}
return syncId;
}
} finally {
Binder.restoreCallingIdentity(ident);