From 81db038977aee491c138055895b24f05e8463c9b Mon Sep 17 00:00:00 2001 From: vinayjoglekar Date: Fri, 10 Jan 2025 16:15:58 +0000 Subject: [PATCH] Consume callback sent from shell when overview task is entered desktop mode from desktop menu Bug: 387471509 Test: EnterDeskTopViaMenuOfLiveOverviewTaskTest, EnterDeskTopViaMenuOfStaticOverviewTaskTest Flag: EXEMPT bug fix Change-Id: If1d6604b7e331cc4bdb8a3fac3804b6772e8be7a --- .../desktop/DesktopRecentsTransitionController.kt | 7 ++++++- .../src/com/android/quickstep/SystemUiProxy.kt | 13 ++++++++++++- .../com/android/quickstep/views/RecentsView.java | 6 ++---- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/quickstep/src/com/android/launcher3/desktop/DesktopRecentsTransitionController.kt b/quickstep/src/com/android/launcher3/desktop/DesktopRecentsTransitionController.kt index 8b064d347f..010a5c8d77 100644 --- a/quickstep/src/com/android/launcher3/desktop/DesktopRecentsTransitionController.kt +++ b/quickstep/src/com/android/launcher3/desktop/DesktopRecentsTransitionController.kt @@ -64,11 +64,16 @@ class DesktopRecentsTransitionController( } /** Launch desktop tasks from recents view */ - fun moveToDesktop(taskContainer: TaskContainer, transitionSource: DesktopModeTransitionSource) { + fun moveToDesktop( + taskContainer: TaskContainer, + transitionSource: DesktopModeTransitionSource, + successCallback: Runnable, + ) { systemUiProxy.moveToDesktop( taskContainer.task.key.id, transitionSource, /* transition = */ null, + successCallback, ) } diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.kt b/quickstep/src/com/android/quickstep/SystemUiProxy.kt index 75694af97d..a212477c75 100644 --- a/quickstep/src/com/android/quickstep/SystemUiProxy.kt +++ b/quickstep/src/com/android/quickstep/SystemUiProxy.kt @@ -81,6 +81,7 @@ import com.android.wm.shell.common.pip.IPip import com.android.wm.shell.common.pip.IPipAnimationListener import com.android.wm.shell.desktopmode.IDesktopMode import com.android.wm.shell.desktopmode.IDesktopTaskListener +import com.android.wm.shell.desktopmode.IMoveToDesktopCallback import com.android.wm.shell.draganddrop.IDragAndDrop import com.android.wm.shell.onehanded.IOneHanded import com.android.wm.shell.recents.IRecentTasks @@ -1106,9 +1107,19 @@ class SystemUiProxy @Inject constructor(@ApplicationContext private val context: taskId: Int, transitionSource: DesktopModeTransitionSource?, transition: RemoteTransition?, + successCallback: Runnable, ) = executeWithErrorLog({ "Failed call moveToDesktop" }) { - desktopMode?.moveToDesktop(taskId, transitionSource, transition) + desktopMode?.moveToDesktop( + taskId, + transitionSource, + transition, + object : IMoveToDesktopCallback.Stub() { + override fun onTaskMovedToDesktop() { + successCallback.run() + } + }, + ) } /** Call shell to remove the desktop that is on given `displayId` */ diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index fc95434745..b3b0fe00f4 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -6815,10 +6815,8 @@ public abstract class RecentsView< return; } - mDesktopRecentsTransitionController.moveToDesktop(taskContainer, transitionSource); - // TODO(b/387471509): Invoke successCallback after actual transition completion of - // overview menu to desktop - successCallback.run(); + mDesktopRecentsTransitionController.moveToDesktop(taskContainer, transitionSource, + successCallback); } /**