Merge "Use desktop API to remove desktop for dismiss" into main

This commit is contained in:
Orhan Uysal
2024-10-08 15:18:06 +00:00
committed by Android (Google) Code Review
2 changed files with 29 additions and 10 deletions
@@ -130,6 +130,7 @@ import android.widget.ListView;
import android.widget.OverScroller;
import android.widget.Toast;
import android.window.PictureInPictureSurfaceTransaction;
import android.window.flags.DesktopModeFlags;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -3935,9 +3936,11 @@ public abstract class RecentsView<
if (shouldRemoveTask) {
if (dismissedTaskView.isRunningTask()) {
finishRecentsAnimation(true /* toRecents */, false /* shouldPip */,
() -> removeTaskInternal(dismissedTaskViewId));
() -> removeTaskInternal(dismissedTaskViewId,
dismissedTaskView instanceof DesktopTaskView));
} else {
removeTaskInternal(dismissedTaskViewId);
removeTaskInternal(dismissedTaskViewId,
dismissedTaskView instanceof DesktopTaskView);
}
announceForAccessibility(
getResources().getString(R.string.task_view_closed));
@@ -4305,16 +4308,21 @@ public abstract class RecentsView<
return lastVisibleIndex;
}
private void removeTaskInternal(int dismissedTaskViewId) {
private void removeTaskInternal(int dismissedTaskViewId, boolean isDesktop) {
int[] taskIds = getTaskIdsForTaskViewId(dismissedTaskViewId);
UI_HELPER_EXECUTOR.getHandler().post(
() -> {
for (int taskId : taskIds) {
if (taskId != -1) {
ActivityManagerWrapper.getInstance().removeTask(taskId);
}
UI_HELPER_EXECUTOR.getHandler().post(() -> {
if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue() && isDesktop) {
// TODO: b/372005228 - Use the api with desktop id instead.
SystemUiProxy.INSTANCE.get(getContext()).removeDesktop(
mContainer.getDisplay().getDisplayId());
} else {
for (int taskId : taskIds) {
if (taskId != -1) {
ActivityManagerWrapper.getInstance().removeTask(taskId);
}
});
}
}
});
}
protected void onDismissAnimationEnds() {