From 5813304d96b57d8044ba7a98c2b5da4df96d1700 Mon Sep 17 00:00:00 2001 From: Gustav Sennton Date: Tue, 6 Aug 2024 11:21:29 +0000 Subject: [PATCH] Provide reason for moving task to front. In WM Shell we want to be able to log the reason a task was unminimized, with this CL we pass a reason from Launcher to WM Shell when bringing the task to front. Test: manual Bug: 357985747 Flag: com.android.window.flags.enable_desktop_windowing_mode Change-Id: I4a68f4d0d7eddb483a1473843b4cd91bd783d92f --- .../KeyboardQuickSwitchViewController.java | 3 ++- .../taskbar/ManageWindowsTaskbarShortcut.kt | 11 +++++---- .../taskbar/TaskbarActivityContext.java | 23 ++++++++++++------- .../com/android/quickstep/SystemUiProxy.kt | 9 ++++++-- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java index cb811d6c70..79c3469422 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java @@ -38,7 +38,6 @@ import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatorListeners; import com.android.launcher3.desktop.DesktopAppLaunchTransition; -import com.android.launcher3.desktop.DesktopAppLaunchTransition.AppLaunchType; import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext; import com.android.launcher3.taskbar.overlay.TaskbarOverlayDragLayer; import com.android.launcher3.util.DisplayController; @@ -50,6 +49,7 @@ import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.InteractionJankMonitorWrapper; import com.android.systemui.shared.system.QuickStepContract; +import com.android.wm.shell.shared.desktopmode.DesktopTaskToFrontReason; import java.io.PrintWriter; import java.util.List; @@ -293,6 +293,7 @@ public class KeyboardQuickSwitchViewController { task, remoteTransition, mOnDesktop, + DesktopTaskToFrontReason.ALT_TAB, onStartCallback, onFinishCallback); return -1; diff --git a/quickstep/src/com/android/launcher3/taskbar/ManageWindowsTaskbarShortcut.kt b/quickstep/src/com/android/launcher3/taskbar/ManageWindowsTaskbarShortcut.kt index 75ce7c3dd5..82fd415585 100644 --- a/quickstep/src/com/android/launcher3/taskbar/ManageWindowsTaskbarShortcut.kt +++ b/quickstep/src/com/android/launcher3/taskbar/ManageWindowsTaskbarShortcut.kt @@ -27,7 +27,6 @@ import com.android.launcher3.model.data.ItemInfo import com.android.launcher3.popup.SystemShortcut import com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_MULTI_INSTANCE_MENU_OPEN import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext -import com.android.launcher3.util.Themes import com.android.launcher3.util.TouchController import com.android.launcher3.views.ActivityContext import com.android.quickstep.RecentsModel @@ -35,9 +34,8 @@ import com.android.quickstep.SystemUiProxy import com.android.quickstep.util.DesktopTask import com.android.systemui.shared.recents.model.Task import com.android.systemui.shared.recents.model.ThumbnailData +import com.android.wm.shell.shared.desktopmode.DesktopTaskToFrontReason import com.android.wm.shell.shared.multiinstance.ManageWindowsViewContainer -import java.util.Collections -import java.util.function.Predicate /** * A single menu item shortcut to execute displaying open instances of an app. Default interaction @@ -120,7 +118,12 @@ class ManageWindowsTaskbarShortcut( ({ taskId: Int? -> taskbarShortcutAllWindowsView.animateClose() if (taskId != null) { - SystemUiProxy.INSTANCE.get(target).showDesktopApp(taskId, null) + SystemUiProxy.INSTANCE.get(target) + .showDesktopApp( + taskId, + /* transition= */ null, + DesktopTaskToFrontReason.TASKBAR_MANAGE_WINDOW, + ) } }) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 9fe92029e4..5060df800e 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -165,6 +165,7 @@ import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import com.android.systemui.unfold.updates.RotationChangeProvider; import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider; +import com.android.wm.shell.shared.desktopmode.DesktopTaskToFrontReason; import java.io.PrintWriter; import java.util.Collections; @@ -1324,10 +1325,12 @@ public class TaskbarActivityContext extends BaseTaskbarContext { if (runnableList != null) { runnableList.add(() -> UI_HELPER_EXECUTOR.execute( () -> handleGroupTaskLaunch(groupTask, remoteTransition, - areDesktopTasksVisible()))); + areDesktopTasksVisible(), + DesktopTaskToFrontReason.TASKBAR_TAP))); } } else { - handleGroupTaskLaunch(groupTask, remoteTransition, areDesktopTasksVisible()); + handleGroupTaskLaunch(groupTask, remoteTransition, areDesktopTasksVisible(), + DesktopTaskToFrontReason.TASKBAR_TAP); } mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); } else if (tag instanceof FolderInfo) { @@ -1363,12 +1366,14 @@ public class TaskbarActivityContext extends BaseTaskbarContext { // task will show. UI_HELPER_EXECUTOR.execute(() -> SystemUiProxy.INSTANCE.get(this).showDesktopApp( - info.getTaskId(), remoteTransition))); + info.getTaskId(), remoteTransition, + DesktopTaskToFrontReason.TASKBAR_TAP))); } } else { UI_HELPER_EXECUTOR.execute(() -> SystemUiProxy.INSTANCE.get(this).showDesktopApp( - info.getTaskId(), remoteTransition)); + info.getTaskId(), remoteTransition, + DesktopTaskToFrontReason.TASKBAR_TAP)); } mControllers.taskbarStashController.updateAndAnimateTransientTaskbar( @@ -1461,8 +1466,9 @@ public class TaskbarActivityContext extends BaseTaskbarContext { public void handleGroupTaskLaunch( GroupTask task, @Nullable RemoteTransition remoteTransition, - boolean onDesktop) { - handleGroupTaskLaunch(task, remoteTransition, onDesktop, + boolean onDesktop, + DesktopTaskToFrontReason toFrontReason) { + handleGroupTaskLaunch(task, remoteTransition, onDesktop, toFrontReason, /* onStartCallback= */ null, /* onFinishCallback= */ null); } @@ -1481,6 +1487,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { GroupTask task, @Nullable RemoteTransition remoteTransition, boolean onDesktop, + DesktopTaskToFrontReason toFrontReason, @Nullable Runnable onStartCallback, @Nullable Runnable onFinishCallback) { if (task instanceof DesktopTask) { @@ -1495,8 +1502,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { if (onStartCallback != null) { onStartCallback.run(); } - SystemUiProxy.INSTANCE.get(this).showDesktopApp( - task.task1.key.id, useRemoteTransition ? remoteTransition : null); + SystemUiProxy.INSTANCE.get(this).showDesktopApp(task.task1.key.id, + useRemoteTransition ? remoteTransition : null, toFrontReason); if (onFinishCallback != null) { onFinishCallback.run(); } diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.kt b/quickstep/src/com/android/quickstep/SystemUiProxy.kt index c1a92ede11..fa4cffdf70 100644 --- a/quickstep/src/com/android/quickstep/SystemUiProxy.kt +++ b/quickstep/src/com/android/quickstep/SystemUiProxy.kt @@ -93,6 +93,7 @@ import com.android.wm.shell.shared.bubbles.BubbleBarLocation import com.android.wm.shell.shared.bubbles.BubbleBarLocation.UpdateSource import com.android.wm.shell.shared.desktopmode.DesktopModeStatus import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource +import com.android.wm.shell.shared.desktopmode.DesktopTaskToFrontReason import com.android.wm.shell.shared.split.SplitBounds import com.android.wm.shell.shared.split.SplitScreenConstants.PersistentSnapPosition import com.android.wm.shell.splitscreen.ISplitScreen @@ -1075,9 +1076,13 @@ class SystemUiProxy @Inject constructor(@ApplicationContext private val context: } /** If task with the given id is on the desktop, bring it to front */ - fun showDesktopApp(taskId: Int, transition: RemoteTransition?) = + fun showDesktopApp( + taskId: Int, + transition: RemoteTransition?, + toFrontReason: DesktopTaskToFrontReason, + ) = executeWithErrorLog({ "Failed call showDesktopApp" }) { - desktopMode?.showDesktopApp(taskId, transition) + desktopMode?.showDesktopApp(taskId, transition, toFrontReason) } /** Call shell to get number of visible freeform tasks */