diff options
| author | 2025-01-20 18:41:34 +0000 | |
|---|---|---|
| committer | 2025-01-21 16:28:00 +0000 | |
| commit | 63fad9a1a751f45d41028324f63b184e9c948ce9 (patch) | |
| tree | 2154bc1ce723f498a6dd9f5229a985b9fae561a5 | |
| parent | e80236e2bb556132b29a09ab7b97bf4c8859e125 (diff) | |
In FreeformTaskListener, flag-guard the method `onFocusTaskChanged` so that it is a no-op when
the aconfig flag `ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS` is
enabled.
Update the `onTaskMovingToFront`method in DesktopTaskChangeListener to
add task to the repository when the task moves to front.
Bug: 332682201
Test: atest FreeformTaskListenerTest
Test: atest DesktopTaskChangeListenerTest
Flag:
com.android.window.flags.enable_windowing_transition_handlers_observers
Change-Id: I194ad62a60a77e7079d9bcd5c5c43ef8b872fa86
4 files changed, 28 insertions, 4 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListener.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListener.kt index c958a0975f11..4d87b2189115 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListener.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListener.kt @@ -70,8 +70,7 @@ class DesktopTaskChangeListener(private val desktopUserRepositories: DesktopUser if (!isFreeformTask(taskInfo)) { desktopRepository.removeTask(taskInfo.displayId, taskInfo.taskId) } - // TODO: b/367268953 - Connect this with DesktopRepository for handling - // task moving to front for tasks in windowing mode. + desktopRepository.addTask(taskInfo.displayId, taskInfo.taskId, taskInfo.isVisible) } override fun onTaskMovingToBack(taskInfo: RunningTaskInfo) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java index 0d5aa0105659..b38a853321a7 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java @@ -171,7 +171,8 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener, @Override public void onFocusTaskChanged(RunningTaskInfo taskInfo) { - if (taskInfo.getWindowingMode() != WINDOWING_MODE_FREEFORM) { + if (taskInfo.getWindowingMode() != WINDOWING_MODE_FREEFORM + || DesktopModeFlags.ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS.isTrue()) { return; } ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TASK_ORG, diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListenerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListenerTest.kt index c7c0dfc5be6d..12c7ff61399f 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListenerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTaskChangeListenerTest.kt @@ -144,6 +144,16 @@ class DesktopTaskChangeListenerTest : ShellTestCase() { } @Test + fun onTaskMovingToFront_freeformTaskOutsideDesktop_addsTaskToRepo() { + val task = createFullscreenTask().apply { isVisible = true } + whenever(desktopUserRepositories.current.isActiveTask(task.taskId)).thenReturn(true) + + desktopTaskChangeListener.onTaskMovingToFront(task) + + verify(desktopUserRepositories.current).addTask(task.displayId, task.taskId, task.isVisible) + } + + @Test @EnableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION) fun onTaskClosing_backNavEnabled_nonClosingTask_minimizesTaskInRepo() { val task = createFreeformTask().apply { isVisible = true } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/freeform/FreeformTaskListenerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/freeform/FreeformTaskListenerTests.java index fa5989a3ca99..6c16b3220a07 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/freeform/FreeformTaskListenerTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/freeform/FreeformTaskListenerTests.java @@ -159,7 +159,8 @@ public final class FreeformTaskListenerTests extends ShellTestCase { } @Test - public void focusTaskChanged_addsFreeformTaskToRepo() { + @DisableFlags(FLAG_ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS) + public void focusTaskChanged_noTransitionObserversFlag_addsFreeformTaskToRepo() { ActivityManager.RunningTaskInfo task = new TestRunningTaskInfoBuilder().setWindowingMode(WINDOWING_MODE_FREEFORM).build(); task.isFocused = true; @@ -171,6 +172,19 @@ public final class FreeformTaskListenerTests extends ShellTestCase { } @Test + @EnableFlags(FLAG_ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS) + public void focusTaskChanged_enableTransitionObservers_freeformTaskNotAddedToRepo() { + ActivityManager.RunningTaskInfo task = + new TestRunningTaskInfoBuilder().setWindowingMode(WINDOWING_MODE_FREEFORM).build(); + task.isFocused = true; + + mFreeformTaskListener.onFocusTaskChanged(task); + + verify(mDesktopUserRepositories.getCurrent(), never()) + .addTask(task.displayId, task.taskId, task.isVisible); + } + + @Test public void focusTaskChanged_fullscreenTaskNotAddedToRepo() { ActivityManager.RunningTaskInfo fullscreenTask = new TestRunningTaskInfoBuilder() |