diff options
| author | 2023-01-21 00:16:16 +0000 | |
|---|---|---|
| committer | 2023-01-21 00:16:16 +0000 | |
| commit | 25cd2848c0e28e4b0f915e38aa26468f020e6102 (patch) | |
| tree | 7b2a8865831edf8c7cf6de1e46a14f7b3f24c381 | |
| parent | df0f11cdfde038a0f2ae9958b13d3704077cf994 (diff) | |
| parent | 95debf6eef4ba481d129fd523e3687fef7ae84a0 (diff) | |
Merge "Fix broken transition when caceling enter split screen" into tm-qpr-dev am: 1520689aae am: 95debf6eef
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21029428
Change-Id: I1e1c3c71086940ed57b68ecabd25ac4e46981c6b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java | 17 | ||||
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java | 24 |
2 files changed, 25 insertions, 16 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java index 38099fc51d81..21eeaa2cafb3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java @@ -18,6 +18,7 @@ package com.android.wm.shell.splitscreen; import static android.app.ActivityManager.START_SUCCESS; import static android.app.ActivityManager.START_TASK_TO_FRONT; +import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION; import static android.view.Display.DEFAULT_DISPLAY; @@ -535,17 +536,11 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, fillInIntent.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, "Adding MULTIPLE_TASK"); } else { - try { - adapter.getRunner().onAnimationCancelled(false /* isKeyguardOccluded */); - ActivityTaskManager.getService().startActivityFromRecents(taskId, options2); - } catch (RemoteException e) { - Slog.e(TAG, "Error starting remote animation", e); - } + taskId = INVALID_TASK_ID; ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, "Cancel entering split as not supporting multi-instances"); Toast.makeText(mContext, R.string.dock_multi_instances_not_supported_text, Toast.LENGTH_SHORT).show(); - return; } } mStageCoordinator.startIntentAndTaskWithLegacyTransition(pendingIntent, fillInIntent, @@ -586,17 +581,11 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, fillInIntent2.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, "Adding MULTIPLE_TASK"); } else { - try { - adapter.getRunner().onAnimationCancelled(false /* isKeyguardOccluded */); - pendingIntent1.send(); - } catch (RemoteException | PendingIntent.CanceledException e) { - Slog.e(TAG, "Error starting remote animation", e); - } + pendingIntent2 = null; ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, "Cancel entering split as not supporting multi-instances"); Toast.makeText(mContext, R.string.dock_multi_instances_not_supported_text, Toast.LENGTH_SHORT).show(); - return; } } mStageCoordinator.startIntentsWithLegacyTransition(pendingIntent1, fillInIntent1, options1, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index a6c4ac28c1fd..39cf5f1b95bd 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -629,9 +629,19 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, RemoteAnimationAdapter adapter, InstanceId instanceId) { final WindowContainerTransaction wct = new WindowContainerTransaction(); if (options1 == null) options1 = new Bundle(); + if (pendingIntent2 == null) { + // Launching a solo task. + ActivityOptions activityOptions = ActivityOptions.fromBundle(options1); + activityOptions.update(ActivityOptions.makeRemoteAnimation(adapter)); + options1 = activityOptions.toBundle(); + addActivityOptions(options1, null /* launchTarget */); + wct.sendPendingIntent(pendingIntent1, fillInIntent1, options1); + mSyncQueue.queue(wct); + return; + } + addActivityOptions(options1, mSideStage); wct.sendPendingIntent(pendingIntent1, fillInIntent1, options1); - startWithLegacyTransition(wct, pendingIntent2, fillInIntent2, options2, splitPosition, splitRatio, adapter, instanceId); } @@ -666,9 +676,19 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, InstanceId instanceId) { final WindowContainerTransaction wct = new WindowContainerTransaction(); if (options1 == null) options1 = new Bundle(); + if (taskId == INVALID_TASK_ID) { + // Launching a solo task. + ActivityOptions activityOptions = ActivityOptions.fromBundle(options1); + activityOptions.update(ActivityOptions.makeRemoteAnimation(adapter)); + options1 = activityOptions.toBundle(); + addActivityOptions(options1, null /* launchTarget */); + wct.startShortcut(mContext.getPackageName(), shortcutInfo, options1); + mSyncQueue.queue(wct); + return; + } + addActivityOptions(options1, mSideStage); wct.startShortcut(mContext.getPackageName(), shortcutInfo, options1); - startWithLegacyTransition(wct, taskId, options2, splitPosition, splitRatio, adapter, instanceId); } |