From 28869b86e9da1f50803557c114560ccf2a27a550 Mon Sep 17 00:00:00 2001 From: Ahmed Fakhry Date: Tue, 14 Jan 2025 17:29:20 +0000 Subject: [PATCH] Remove some usages of `GroupTask.task2` This CL marks `GroupTask.task1` and `GroupTask.task2` as deprecated, and removes some of the usages of the `task2`. Follow-up CLs will continue replacing all the usages. Bug: 388593902 Test: m Flag: EXEMPT pure refactor with no behavior change. Change-Id: I530bbba00bd41cf33a952b083de7670d9a490e81 --- .../KeyboardQuickSwitchController.java | 20 +++++++------------ .../QuickstepTestInformationHandler.java | 7 +++---- .../android/quickstep/RecentTasksList.java | 14 ++++++------- .../android/quickstep/RecentsFilterState.java | 19 +++++------------- .../com/android/quickstep/RecentsModel.java | 8 ++++---- .../com/android/quickstep/util/GroupTask.kt | 9 +++++++-- .../quickstep/RecentTasksListTest.java | 9 +++++---- .../android/quickstep/RecentsModelTest.java | 10 ++++++---- 8 files changed, 43 insertions(+), 53 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java index 48cb91148c..cb16345eec 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java @@ -349,15 +349,12 @@ public final class KeyboardQuickSwitchController implements pw.println(prefix + "\tmWasDesktopTaskFilteredOut=" + mWasDesktopTaskFilteredOut); pw.println(prefix + "\tmTasks=["); for (GroupTask task : mTasks) { - Task task1 = task.task1; - Task task2 = task.task2; - ComponentName cn1 = task1.getTopComponent(); - ComponentName cn2 = task2 != null ? task2.getTopComponent() : null; - pw.println(prefix + "\t\tt1: (id=" + task1.key.id - + "; package=" + (cn1 != null ? cn1.getPackageName() + ")" : "no package)") - + " t2: (id=" + (task2 != null ? task2.key.id : "-1") - + "; package=" + (cn2 != null ? cn2.getPackageName() + ")" - : "no package)")); + int count = 0; + for (Task t : task.getTasks()) { + ComponentName cn = t.getTopComponent(); + pw.println(prefix + "\t\tt" + (++count) + ": (id=" + t.key.id + + "; package=" + (cn != null ? cn.getPackageName() + ")" : "no package)")); + } } pw.println(prefix + "\t]"); @@ -411,10 +408,7 @@ public final class KeyboardQuickSwitchController implements return false; } int runningTaskId = ActivityManagerWrapper.getInstance().getRunningTask().taskId; - Task task2 = task.task2; - - return runningTaskId == task.task1.key.id - || (task2 != null && runningTaskId == task2.key.id); + return task.containsTask(runningTaskId); } boolean isFirstTaskRunning() { diff --git a/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java b/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java index 620e2b7cae..9b0e75ce5e 100644 --- a/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java +++ b/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java @@ -19,6 +19,7 @@ import com.android.quickstep.util.LayoutUtils; import com.android.quickstep.util.TISBindHelper; import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.RecentsViewContainer; +import com.android.systemui.shared.recents.model.Task; import java.util.ArrayList; import java.util.concurrent.CountDownLatch; @@ -44,11 +45,9 @@ public class QuickstepTestInformationHandler extends TestInformationHandler { CountDownLatch latch = new CountDownLatch(1); RecentsModel.INSTANCE.get(mContext).getTasks((taskGroups) -> { for (GroupTask group : taskGroups) { - taskBaseIntentComponents.add( - group.task1.key.baseIntent.getComponent().flattenToString()); - if (group.task2 != null) { + for (Task t : group.getTasks()) { taskBaseIntentComponents.add( - group.task2.key.baseIntent.getComponent().flattenToString()); + t.key.baseIntent.getComponent().flattenToString()); } } latch.countDown(); diff --git a/quickstep/src/com/android/quickstep/RecentTasksList.java b/quickstep/src/com/android/quickstep/RecentTasksList.java index 08d43c044c..32ccd7225a 100644 --- a/quickstep/src/com/android/quickstep/RecentTasksList.java +++ b/quickstep/src/com/android/quickstep/RecentTasksList.java @@ -422,14 +422,12 @@ public class RecentTasksList { writer.println(prefix + " mChangeId=" + mChangeId); writer.println(prefix + " mResultsUi=[id=" + mResultsUi.mRequestId + ", tasks="); for (GroupTask task : mResultsUi) { - Task task1 = task.task1; - Task task2 = task.task2; - ComponentName cn1 = task1.getTopComponent(); - ComponentName cn2 = task2 != null ? task2.getTopComponent() : null; - writer.println(prefix + " t1: (id=" + task1.key.id - + "; package=" + (cn1 != null ? cn1.getPackageName() + ")" : "no package)") - + " t2: (id=" + (task2 != null ? task2.key.id : "-1") - + "; package=" + (cn2 != null ? cn2.getPackageName() + ")" : "no package)")); + int count = 0; + for (Task t : task.getTasks()) { + ComponentName cn = t.getTopComponent(); + writer.println(prefix + " t" + (++count) + ": (id=" + t.key.id + + "; package=" + (cn != null ? cn.getPackageName() + ")" : "no package)")); + } } writer.println(prefix + " ]"); int currentUserId = Process.myUserHandle().getIdentifier(); diff --git a/quickstep/src/com/android/quickstep/RecentsFilterState.java b/quickstep/src/com/android/quickstep/RecentsFilterState.java index ff6951d33f..70d569603a 100644 --- a/quickstep/src/com/android/quickstep/RecentsFilterState.java +++ b/quickstep/src/com/android/quickstep/RecentsFilterState.java @@ -19,6 +19,7 @@ package com.android.quickstep; import androidx.annotation.Nullable; import com.android.quickstep.util.GroupTask; +import com.android.systemui.shared.recents.model.Task; import java.util.HashMap; import java.util.List; @@ -122,9 +123,7 @@ public class RecentsFilterState { return DEFAULT_FILTER; } - return (groupTask) -> (groupTask.task2 != null - && groupTask.task2.key.getPackageName().equals(packageName)) - || groupTask.task1.key.getPackageName().equals(packageName); + return (groupTask) -> (groupTask.containsPackage(packageName)); } /** @@ -136,17 +135,9 @@ public class RecentsFilterState { Map instanceCountMap = new HashMap<>(); for (GroupTask groupTask : groupTasks) { - final String firstTaskPkgName = groupTask.task1.key.getPackageName(); - final String secondTaskPkgName = - groupTask.task2 == null ? null : groupTask.task2.key.getPackageName(); - - // increment the instance count for the first task's base activity package name - incrementOrAddIfNotExists(instanceCountMap, firstTaskPkgName); - - // check if second task is non existent - if (secondTaskPkgName != null) { - // increment the instance count for the second task's base activity package name - incrementOrAddIfNotExists(instanceCountMap, secondTaskPkgName); + for (Task t : groupTask.getTasks()) { + final String taskPkgName = t.key.getPackageName(); + incrementOrAddIfNotExists(instanceCountMap, taskPkgName); } } diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java index 1977dfa8e2..6498b7add8 100644 --- a/quickstep/src/com/android/quickstep/RecentsModel.java +++ b/quickstep/src/com/android/quickstep/RecentsModel.java @@ -239,8 +239,8 @@ public class RecentsModel implements RecentTasksDataSource, TaskStackChangeListe // time the user next enters overview continue; } - mThumbnailCache.updateThumbnailInCache(group.task1, /* lowResolution= */ true); - mThumbnailCache.updateThumbnailInCache(group.task2, /* lowResolution= */ true); + group.getTasks().forEach( + t -> mThumbnailCache.updateThumbnailInCache(t, /* lowResolution= */ true)); } }); } @@ -374,8 +374,8 @@ public class RecentsModel implements RecentTasksDataSource, TaskStackChangeListe mTaskList.getTaskKeys(mThumbnailCache.getCacheSize(), taskGroups -> { for (GroupTask group : taskGroups) { - mThumbnailCache.updateThumbnailInCache(group.task1, /* lowResolution= */ false); - mThumbnailCache.updateThumbnailInCache(group.task2, /* lowResolution= */ false); + group.getTasks().forEach( + t -> mThumbnailCache.updateThumbnailInCache(t, /* lowResolution= */ false)); } }); } diff --git a/quickstep/src/com/android/quickstep/util/GroupTask.kt b/quickstep/src/com/android/quickstep/util/GroupTask.kt index 1dd8d18ab9..0bee5f67f8 100644 --- a/quickstep/src/com/android/quickstep/util/GroupTask.kt +++ b/quickstep/src/com/android/quickstep/util/GroupTask.kt @@ -28,8 +28,8 @@ import java.util.Objects open class GroupTask @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) constructor( - @JvmField val task1: Task, - @JvmField val task2: Task?, + @Deprecated("Prefer using `getTasks()` instead") @JvmField val task1: Task, + @Deprecated("Prefer using `getTasks()` instead") @JvmField val task2: Task?, @JvmField val mSplitBounds: SplitConfigurationOptions.SplitBounds?, @JvmField val taskViewType: TaskViewType, ) { @@ -44,6 +44,11 @@ constructor( open fun containsTask(taskId: Int) = task1.key.id == taskId || (task2 != null && task2.key.id == taskId) + /** + * Returns true if a task in this group has a package name that matches the given `packageName`. + */ + fun containsPackage(packageName: String) = tasks.any { it.key.packageName == packageName } + open fun hasMultipleTasks() = task2 != null /** Returns whether this task supports multiple tasks or not. */ diff --git a/quickstep/tests/src/com/android/quickstep/RecentTasksListTest.java b/quickstep/tests/src/com/android/quickstep/RecentTasksListTest.java index b3c486c9b1..ccc0311698 100644 --- a/quickstep/tests/src/com/android/quickstep/RecentTasksListTest.java +++ b/quickstep/tests/src/com/android/quickstep/RecentTasksListTest.java @@ -102,8 +102,7 @@ public class RecentTasksListTest { true); assertEquals(1, taskList.size()); - assertNull(taskList.get(0).task1.taskDescription.getLabel()); - assertNull(taskList.get(0).task2.taskDescription.getLabel()); + taskList.get(0).getTasks().forEach(t -> assertNull(t.taskDescription.getLabel())); } @Test @@ -133,8 +132,10 @@ public class RecentTasksListTest { false); assertEquals(1, taskList.size()); - assertEquals(taskDescription, taskList.get(0).task1.taskDescription.getLabel()); - assertNull(taskList.get(0).task2.taskDescription.getLabel()); + var tasks = taskList.get(0).getTasks(); + assertEquals(2, tasks.size()); + assertEquals(taskDescription, tasks.get(0).taskDescription.getLabel()); + assertNull(tasks.get(1).taskDescription.getLabel()); } @Test diff --git a/quickstep/tests/src/com/android/quickstep/RecentsModelTest.java b/quickstep/tests/src/com/android/quickstep/RecentsModelTest.java index 3072d0233d..4e34e11421 100644 --- a/quickstep/tests/src/com/android/quickstep/RecentsModelTest.java +++ b/quickstep/tests/src/com/android/quickstep/RecentsModelTest.java @@ -112,10 +112,12 @@ public class RecentsModelTest { .updateThumbnailInCache(taskArgs.capture(), /* lowResolution= */ eq(false)); GroupTask expectedGroupTask = mTaskResult.get(0); - assertThat(taskArgs.getAllValues().get(0)).isEqualTo( - expectedGroupTask.task1); - assertThat(taskArgs.getAllValues().get(1)).isEqualTo( - expectedGroupTask.task2); + var taskArgsValues = taskArgs.getAllValues(); + var expectedTasks = expectedGroupTask.getTasks(); + assertThat(taskArgsValues.size()).isEqualTo(expectedTasks.size()); + for (int i = 0; i < expectedTasks.size(); ++i) { + assertThat(taskArgsValues.get(i)).isEqualTo(expectedTasks.get(i)); + } } @Test