Merge "Make sure that a recents-launch with remote gets its own transition" into tm-qpr-dev am: 965f031691
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20121490 Change-Id: I712b88b69d78d9804e066c510bd51dc86956b97b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -50,6 +50,7 @@ import android.util.Slog;
|
||||
import android.util.SparseArray;
|
||||
import android.view.RemoteAnimationAdapter;
|
||||
import android.view.WindowManager;
|
||||
import android.window.RemoteTransition;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.util.ArrayUtils;
|
||||
@@ -566,14 +567,39 @@ public class ActivityStartController {
|
||||
return false;
|
||||
}
|
||||
mService.mRootWindowContainer.startPowerModeLaunchIfNeeded(true /* forceSend */, r);
|
||||
final ActivityMetricsLogger.LaunchingState launchingState =
|
||||
mSupervisor.getActivityMetricsLogger().notifyActivityLaunching(intent);
|
||||
final Task task = r.getTask();
|
||||
mService.deferWindowLayout();
|
||||
try {
|
||||
final RemoteTransition remote = options.getRemoteTransition();
|
||||
if (remote != null && rootTask.mTransitionController.isCollecting()) {
|
||||
final Transition transition = new Transition(WindowManager.TRANSIT_TO_FRONT,
|
||||
0 /* flags */, rootTask.mTransitionController,
|
||||
mService.mWindowManager.mSyncEngine);
|
||||
// Special case: we are entering recents while an existing transition is running. In
|
||||
// this case, we know it's safe to "defer" the activity launch, so lets do so now so
|
||||
// that it can get its own transition and thus update launcher correctly.
|
||||
mService.mWindowManager.mSyncEngine.queueSyncSet(
|
||||
() -> rootTask.mTransitionController.moveToCollecting(transition),
|
||||
() -> {
|
||||
final Task task = r.getTask();
|
||||
task.mTransitionController.requestStartTransition(transition,
|
||||
task, remote, null /* displayChange */);
|
||||
task.mTransitionController.collect(task);
|
||||
startExistingRecentsIfPossibleInner(intent, options, r, task, rootTask);
|
||||
});
|
||||
} else {
|
||||
final Task task = r.getTask();
|
||||
task.mTransitionController.requestTransitionIfNeeded(WindowManager.TRANSIT_TO_FRONT,
|
||||
0 /* flags */, task, task /* readyGroupRef */,
|
||||
options.getRemoteTransition(), null /* displayChange */);
|
||||
startExistingRecentsIfPossibleInner(intent, options, r, task, rootTask);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void startExistingRecentsIfPossibleInner(Intent intent, ActivityOptions options,
|
||||
ActivityRecord r, Task task, Task rootTask) {
|
||||
final ActivityMetricsLogger.LaunchingState launchingState =
|
||||
mSupervisor.getActivityMetricsLogger().notifyActivityLaunching(intent);
|
||||
mService.deferWindowLayout();
|
||||
try {
|
||||
r.mTransitionController.setTransientLaunch(r,
|
||||
TaskDisplayArea.getRootTaskAbove(rootTask));
|
||||
task.moveToFront("startExistingRecents");
|
||||
@@ -585,7 +611,6 @@ public class ActivityStartController {
|
||||
task.mInResumeTopActivity = false;
|
||||
mService.continueWindowLayout();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void registerRemoteAnimationForNextActivityStart(String packageName,
|
||||
|
||||
Reference in New Issue
Block a user