diff options
| author | 2020-03-27 02:37:10 +0000 | |
|---|---|---|
| committer | 2020-03-27 02:37:10 +0000 | |
| commit | fa6a50484b38f58f43acf4497c754e633e69012b (patch) | |
| tree | ff1e2318caf35420b619df9839bfd137320331d4 | |
| parent | eac49dc833b7a939c3537b685f3feb6f2bea94c8 (diff) | |
| parent | e5ab0170f823419446d6a28a3367534ccef782d5 (diff) | |
Merge "Skip excluded MW mode tasks from recents and running tasks" into rvc-dev
12 files changed, 88 insertions, 107 deletions
diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index 7fc10ed090c8..833bfed573b2 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -144,9 +144,6 @@ interface IActivityManager { void attachApplication(in IApplicationThread app, long startSeq); List<ActivityManager.RunningTaskInfo> getTasks(int maxNum); @UnsupportedAppUsage - List<ActivityManager.RunningTaskInfo> getFilteredTasks(int maxNum, int ignoreActivityType, - int ignoreWindowingMode); - @UnsupportedAppUsage void moveTaskToFront(in IApplicationThread caller, in String callingPackage, int task, int flags, in Bundle options); @UnsupportedAppUsage diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl index 03717ecd4038..8b8ebe80f01f 100644 --- a/core/java/android/app/IActivityTaskManager.aidl +++ b/core/java/android/app/IActivityTaskManager.aidl @@ -155,8 +155,8 @@ interface IActivityTaskManager { boolean removeTask(int taskId); void removeAllVisibleRecentTasks(); List<ActivityManager.RunningTaskInfo> getTasks(int maxNum); - List<ActivityManager.RunningTaskInfo> getFilteredTasks(int maxNum, int ignoreActivityType, - int ignoreWindowingMode); + List<ActivityManager.RunningTaskInfo> getFilteredTasks(int maxNum, + boolean filterOnlyVisibleRecents); boolean shouldUpRecreateTask(in IBinder token, in String destAffinity); boolean navigateUpTo(in IBinder token, in Intent target, int resultCode, in Intent resultData); diff --git a/core/java/android/app/TaskEmbedder.java b/core/java/android/app/TaskEmbedder.java index 5ebcc46aa0d8..b8ad30840173 100644 --- a/core/java/android/app/TaskEmbedder.java +++ b/core/java/android/app/TaskEmbedder.java @@ -16,6 +16,7 @@ package android.app; +import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC; @@ -291,7 +292,7 @@ public class TaskEmbedder { * @see #startActivity(PendingIntent) */ public void startActivity(@NonNull Intent intent) { - final ActivityOptions options = prepareActivityOptions(); + final ActivityOptions options = prepareActivityOptions(null); mContext.startActivity(intent, options.toBundle()); } @@ -304,7 +305,7 @@ public class TaskEmbedder { * @see #startActivity(PendingIntent) */ public void startActivity(@NonNull Intent intent, UserHandle user) { - final ActivityOptions options = prepareActivityOptions(); + final ActivityOptions options = prepareActivityOptions(null); mContext.startActivityAsUser(intent, options.toBundle(), user); } @@ -316,7 +317,7 @@ public class TaskEmbedder { * @see #startActivity(Intent) */ public void startActivity(@NonNull PendingIntent pendingIntent) { - final ActivityOptions options = prepareActivityOptions(); + final ActivityOptions options = prepareActivityOptions(null); try { pendingIntent.send(null /* context */, 0 /* code */, null /* intent */, null /* onFinished */, null /* handler */, null /* requiredPermission */, @@ -337,8 +338,7 @@ public class TaskEmbedder { */ public void startActivity(@NonNull PendingIntent pendingIntent, @Nullable Intent fillInIntent, @NonNull ActivityOptions options) { - - options.setLaunchDisplayId(mVirtualDisplay.getDisplay().getDisplayId()); + prepareActivityOptions(options); try { pendingIntent.send(mContext, 0 /* code */, fillInIntent, null /* onFinished */, null /* handler */, null /* requiredPermission */, @@ -364,21 +364,25 @@ public class TaskEmbedder { @NonNull ActivityOptions options, @Nullable Rect sourceBounds) { LauncherApps service = (LauncherApps) mContext.getSystemService(Context.LAUNCHER_APPS_SERVICE); - options.setLaunchDisplayId(mVirtualDisplay.getDisplay().getDisplayId()); + prepareActivityOptions(options); service.startShortcut(shortcut, sourceBounds, options.toBundle()); } /** - * Check if container is ready to launch and create {@link ActivityOptions} to target the - * virtual display. + * Check if container is ready to launch and modify {@param options} to target the virtual + * display, creating them if necessary. */ - private ActivityOptions prepareActivityOptions() { + private ActivityOptions prepareActivityOptions(ActivityOptions options) { if (mVirtualDisplay == null) { throw new IllegalStateException( "Trying to start activity before ActivityView is ready."); } - final ActivityOptions options = ActivityOptions.makeBasic(); + if (options == null) { + options = ActivityOptions.makeBasic(); + } options.setLaunchDisplayId(getDisplayId()); + options.setLaunchWindowingMode(WINDOWING_MODE_MULTI_WINDOW); + options.setTaskAlwaysOnTop(true); return options; } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java index 49e3e5724988..3bda3c8df699 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ActivityManagerWrapper.java @@ -20,9 +20,7 @@ import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED; import static android.app.ActivityManager.LOCK_TASK_MODE_NONE; import static android.app.ActivityManager.LOCK_TASK_MODE_PINNED; import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; -import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; @@ -38,7 +36,6 @@ import android.app.ActivityTaskManager; import android.app.AppGlobals; import android.app.IAssistDataReceiver; import android.app.WindowConfiguration; -import android.app.WindowConfiguration.ActivityType; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -113,15 +110,18 @@ public class ActivityManagerWrapper { * @return the top running task (can be {@code null}). */ public ActivityManager.RunningTaskInfo getRunningTask() { - return getRunningTask(ACTIVITY_TYPE_RECENTS /* ignoreActivityType */); + return getRunningTask(false /* filterVisibleRecents */); } - public ActivityManager.RunningTaskInfo getRunningTask(@ActivityType int ignoreActivityType) { + /** + * @return the top running task filtering only for tasks that can be visible in the recent tasks + * list (can be {@code null}). + */ + public ActivityManager.RunningTaskInfo getRunningTask(boolean filterOnlyVisibleRecents) { // Note: The set of running tasks from the system is ordered by recency try { List<ActivityManager.RunningTaskInfo> tasks = - ActivityTaskManager.getService().getFilteredTasks(1, ignoreActivityType, - WINDOWING_MODE_PINNED /* ignoreWindowingMode */); + ActivityTaskManager.getService().getFilteredTasks(1, filterOnlyVisibleRecents); if (tasks.isEmpty()) { return null; } diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java index aa6444973a6f..3b3d9dde3b7e 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java @@ -17,7 +17,6 @@ package com.android.systemui.recents; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static com.android.systemui.Prefs.Key.DISMISSED_RECENTS_SWIPE_UP_ONBOARDING_COUNT; @@ -27,8 +26,7 @@ import static com.android.systemui.Prefs.Key.HAS_SEEN_RECENTS_SWIPE_UP_ONBOARDIN import static com.android.systemui.Prefs.Key.OVERVIEW_OPENED_COUNT; import static com.android.systemui.Prefs.Key.OVERVIEW_OPENED_FROM_HOME_COUNT; import static com.android.systemui.shared.system.LauncherEventUtil.DISMISS; -import static com.android.systemui.shared.system.LauncherEventUtil - .RECENTS_QUICK_SCRUB_ONBOARDING_TIP; +import static com.android.systemui.shared.system.LauncherEventUtil.RECENTS_QUICK_SCRUB_ONBOARDING_TIP; import static com.android.systemui.shared.system.LauncherEventUtil.RECENTS_SWIPE_UP_ONBOARDING_TIP; import static com.android.systemui.shared.system.LauncherEventUtil.VISIBLE; @@ -139,7 +137,7 @@ public class RecentsOnboarding { private void onAppLaunch() { ActivityManager.RunningTaskInfo info = ActivityManagerWrapper.getInstance() - .getRunningTask(ACTIVITY_TYPE_UNDEFINED /* ignoreActivityType */); + .getRunningTask(); if (info == null) { return; } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 8b2976d0e878..38405e1ccc03 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -185,8 +185,6 @@ import android.app.PendingIntent; import android.app.ProcessMemoryState; import android.app.ProfilerInfo; import android.app.WaitResult; -import android.app.WindowConfiguration.ActivityType; -import android.app.WindowConfiguration.WindowingMode; import android.app.backup.IBackupManager; import android.app.usage.UsageEvents; import android.app.usage.UsageEvents.Event; @@ -6513,13 +6511,6 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override - public List<RunningTaskInfo> getFilteredTasks(int maxNum, @ActivityType int ignoreActivityType, - @WindowingMode int ignoreWindowingMode) { - return mActivityTaskManager.getFilteredTasks( - maxNum, ignoreActivityType, ignoreWindowingMode); - } - - @Override public void cancelTaskWindowTransition(int taskId) { mActivityTaskManager.cancelTaskWindowTransition(taskId); } diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index a5b0026398b6..bf92542cdd63 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -32,7 +32,6 @@ import static android.app.ActivityManagerInternal.ALLOW_NON_FULL; import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.ActivityTaskManager.RESIZE_MODE_PRESERVE_WINDOW; import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; @@ -2615,13 +2614,16 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { @Override public List<ActivityManager.RunningTaskInfo> getTasks(int maxNum) { - return getFilteredTasks(maxNum, ACTIVITY_TYPE_UNDEFINED, WINDOWING_MODE_UNDEFINED); + return getFilteredTasks(maxNum, false /* filterForVisibleRecents */); } + /** + * @param filterOnlyVisibleRecents whether to filter the tasks based on whether they would ever + * be visible in the recent task list in systemui + */ @Override public List<ActivityManager.RunningTaskInfo> getFilteredTasks(int maxNum, - @WindowConfiguration.ActivityType int ignoreActivityType, - @WindowConfiguration.WindowingMode int ignoreWindowingMode) { + boolean filterOnlyVisibleRecents) { final int callingUid = Binder.getCallingUid(); final int callingPid = Binder.getCallingPid(); final boolean crossUser = isCrossUserAllowed(callingPid, callingUid); @@ -2637,8 +2639,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { if (DEBUG_ALL) Slog.v(TAG, "getTasks: max=" + maxNum); final boolean allowed = isGetTasksAllowed("getTasks", callingPid, callingUid); - mRootWindowContainer.getRunningTasks(maxNum, list, ignoreActivityType, - ignoreWindowingMode, callingUid, allowed, crossUser, callingProfileIds); + mRootWindowContainer.getRunningTasks(maxNum, list, filterOnlyVisibleRecents, callingUid, + allowed, crossUser, callingProfileIds); } return list; diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java index 244ba82ce32c..12be9df55fad 100644 --- a/services/core/java/com/android/server/wm/RecentTasks.java +++ b/services/core/java/com/android/server/wm/RecentTasks.java @@ -25,6 +25,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; @@ -1309,6 +1310,7 @@ class RecentTasks { == FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) { return false; } + break; } // Ignore certain windowing modes @@ -1316,23 +1318,21 @@ class RecentTasks { case WINDOWING_MODE_PINNED: return false; case WINDOWING_MODE_SPLIT_SCREEN_PRIMARY: - if (DEBUG_RECENTS_TRIM_TASKS) Slog.d(TAG, "\ttop=" + task.getStack().getTopMostTask()); + if (DEBUG_RECENTS_TRIM_TASKS) { + Slog.d(TAG, "\ttop=" + task.getStack().getTopMostTask()); + } final ActivityStack stack = task.getStack(); if (stack != null && stack.getTopMostTask() == task) { // Only the non-top task of the primary split screen mode is visible return false; } - } - - // Tasks managed by/associated with an ActivityView should be excluded from recents. - // singleTaskInstance is set on the VirtualDisplay managed by ActivityView - // TODO(b/126185105): Find a different signal to use besides isSingleTaskInstance - final ActivityStack stack = task.getStack(); - if (stack != null) { - DisplayContent display = stack.getDisplay(); - if (display != null && display.isSingleTaskInstance()) { - return false; - } + break; + case WINDOWING_MODE_MULTI_WINDOW: + // Ignore tasks that are always on top + if (task.isAlwaysOnTop()) { + return false; + } + break; } // If we're in lock task mode, ignore the root task diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index 6e56bf4dafd7..6eb988bf39b9 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -3393,11 +3393,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent> @VisibleForTesting void getRunningTasks(int maxNum, List<ActivityManager.RunningTaskInfo> list, - @WindowConfiguration.ActivityType int ignoreActivityType, - @WindowConfiguration.WindowingMode int ignoreWindowingMode, int callingUid, - boolean allowed, boolean crossUser, ArraySet<Integer> profileIds) { - mStackSupervisor.getRunningTasks().getTasks(maxNum, list, ignoreActivityType, - ignoreWindowingMode, this, callingUid, allowed, crossUser, profileIds); + boolean filterOnlyVisibleRecents, int callingUid, boolean allowed, boolean crossUser, + ArraySet<Integer> profileIds) { + mStackSupervisor.getRunningTasks().getTasks(maxNum, list, filterOnlyVisibleRecents, this, + callingUid, allowed, crossUser, profileIds); } void sendPowerHintForLaunchStartIfNeeded(boolean forceSend, ActivityRecord targetActivity) { diff --git a/services/core/java/com/android/server/wm/RunningTasks.java b/services/core/java/com/android/server/wm/RunningTasks.java index 02077fbf453e..3509ba72d058 100644 --- a/services/core/java/com/android/server/wm/RunningTasks.java +++ b/services/core/java/com/android/server/wm/RunningTasks.java @@ -16,12 +16,10 @@ package com.android.server.wm; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; -import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import android.app.ActivityManager.RunningTaskInfo; -import android.app.WindowConfiguration.ActivityType; -import android.app.WindowConfiguration.WindowingMode; import android.os.UserHandle; import android.util.ArraySet; @@ -49,13 +47,13 @@ class RunningTasks { private boolean mCrossUser; private ArraySet<Integer> mProfileIds; private boolean mAllowed; - private int mIgnoreActivityType; - private int mIgnoreWindowingMode; + private boolean mFilterOnlyVisibleRecents; private ActivityStack mTopDisplayFocusStack; + private RecentTasks mRecentTasks; - void getTasks(int maxNum, List<RunningTaskInfo> list, @ActivityType int ignoreActivityType, - @WindowingMode int ignoreWindowingMode, RootWindowContainer root, - int callingUid, boolean allowed, boolean crossUser, ArraySet<Integer> profileIds) { + void getTasks(int maxNum, List<RunningTaskInfo> list, boolean filterOnlyVisibleRecents, + RootWindowContainer root, int callingUid, boolean allowed, boolean crossUser, + ArraySet<Integer> profileIds) { // Return early if there are no tasks to fetch if (maxNum <= 0) { return; @@ -68,9 +66,9 @@ class RunningTasks { mCrossUser = crossUser; mProfileIds = profileIds; mAllowed = allowed; - mIgnoreActivityType = ignoreActivityType; - mIgnoreWindowingMode = ignoreWindowingMode; + mFilterOnlyVisibleRecents = filterOnlyVisibleRecents; mTopDisplayFocusStack = root.getTopDisplayFocusedStack(); + mRecentTasks = root.mService.getRecentTasks(); final PooledConsumer c = PooledLambda.obtainConsumer(RunningTasks::processTask, this, PooledLambda.__(Task.class)); @@ -107,14 +105,12 @@ class RunningTasks { return; } } - if (mIgnoreActivityType != ACTIVITY_TYPE_UNDEFINED - && task.getActivityType() == mIgnoreActivityType) { - // Skip ignored activity type - return; - } - if (mIgnoreWindowingMode != WINDOWING_MODE_UNDEFINED - && task.getWindowingMode() == mIgnoreWindowingMode) { - // Skip ignored windowing mode + if (mFilterOnlyVisibleRecents + && task.getActivityType() != ACTIVITY_TYPE_HOME + && task.getActivityType() != ACTIVITY_TYPE_RECENTS + && !mRecentTasks.isVisibleRecentTask(task)) { + // Skip if this task wouldn't be visibile (ever) from recents, with an exception for the + // home & recent tasks return; } diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java index 66566bc5dff5..da3ee3990137 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java @@ -21,6 +21,7 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; @@ -28,6 +29,7 @@ import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.Display.TYPE_VIRTUAL; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; @@ -54,6 +56,7 @@ import static java.lang.Integer.MAX_VALUE; import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityManager.RunningTaskInfo; +import android.app.ActivityOptions; import android.app.ActivityTaskManager; import android.app.WindowConfiguration; import android.content.ComponentName; @@ -681,24 +684,19 @@ public class RecentTasksTest extends ActivityTestsBase { * Tests that tasks on singleTaskDisplay are not visible and not trimmed/removed. */ @Test - public void testVisibleTasks_singleTaskDisplay() { + public void testVisibleTasks_alwaysOnTop() { mRecentTasks.setOnlyTestVisibleRange(); mRecentTasks.setParameters(-1 /* min */, 3 /* max */, -1 /* ms */); - final DisplayContent singleTaskDisplay = - addNewDisplayContentAt(DisplayContent.POSITION_TOP); - singleTaskDisplay.setDisplayToSingleTaskInstance(); - ActivityStack singleTaskStack = singleTaskDisplay.createStack( - WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); + final DisplayContent display = mRootWindowContainer.getDefaultDisplay(); + final Task alwaysOnTopTask = display.createStack(WINDOWING_MODE_MULTI_WINDOW, + ACTIVITY_TYPE_STANDARD, true /* onTop */); + alwaysOnTopTask.setAlwaysOnTop(true); - Task excludedTask1 = createTaskBuilder(".ExcludedTask1") - .setStack(singleTaskStack) - .build(); + assertFalse("Always on top tasks should not be visible recents", + mRecentTasks.isVisibleRecentTask(alwaysOnTopTask)); - assertFalse("Tasks on singleTaskDisplay should not be visible recents", - mRecentTasks.isVisibleRecentTask(excludedTask1)); - - mRecentTasks.add(excludedTask1); + mRecentTasks.add(alwaysOnTopTask); // Add N+1 visible tasks. mRecentTasks.add(mTasks.get(0)); @@ -1366,12 +1364,12 @@ public class RecentTasksTest extends ActivityTestsBase { public boolean mLastAllowed; @Override - void getTasks(int maxNum, List<RunningTaskInfo> list, int ignoreActivityType, - int ignoreWindowingMode, RootWindowContainer root, - int callingUid, boolean allowed, boolean crossUser, ArraySet<Integer> profileIds) { + void getTasks(int maxNum, List<RunningTaskInfo> list, boolean filterOnlyVisibleRecents, + RootWindowContainer root, int callingUid, boolean allowed, boolean crossUser, + ArraySet<Integer> profileIds) { mLastAllowed = allowed; - super.getTasks(maxNum, list, ignoreActivityType, ignoreWindowingMode, root, - callingUid, allowed, crossUser, profileIds); + super.getTasks(maxNum, list, filterOnlyVisibleRecents, root, callingUid, allowed, + crossUser, profileIds); } } } diff --git a/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java index 0d5565428bf2..d6a67abc9e76 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RunningTasksTest.java @@ -16,9 +16,6 @@ package com.android.server.wm; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; -import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; - import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; @@ -82,9 +79,8 @@ public class RunningTasksTest extends ActivityTestsBase { // collected from all tasks across all the stacks final int numFetchTasks = 5; ArrayList<RunningTaskInfo> tasks = new ArrayList<>(); - mRunningTasks.getTasks(5, tasks, ACTIVITY_TYPE_UNDEFINED, WINDOWING_MODE_UNDEFINED, - mRootWindowContainer, -1 /* callingUid */, true /* allowed */, - true /*crossUser */, PROFILE_IDS); + mRunningTasks.getTasks(5, tasks, false /* filterOnlyVisibleRecents */, mRootWindowContainer, + -1 /* callingUid */, true /* allowed */, true /*crossUser */, PROFILE_IDS); assertThat(tasks).hasSize(numFetchTasks); for (int i = 0; i < numFetchTasks; i++) { assertEquals(numTasks - i - 1, tasks.get(i).id); @@ -93,9 +89,9 @@ public class RunningTasksTest extends ActivityTestsBase { // Ensure that requesting more than the total number of tasks only returns the subset // and does not crash tasks.clear(); - mRunningTasks.getTasks(100, tasks, ACTIVITY_TYPE_UNDEFINED, WINDOWING_MODE_UNDEFINED, - mRootWindowContainer, -1 /* callingUid */, true /* allowed */, - true /* crossUser */, PROFILE_IDS); + mRunningTasks.getTasks(100, tasks, false /* filterOnlyVisibleRecents */, + mRootWindowContainer, -1 /* callingUid */, true /* allowed */, true /* crossUser */, + PROFILE_IDS); assertThat(tasks).hasSize(numTasks); for (int i = 0; i < numTasks; i++) { assertEquals(numTasks - i - 1, tasks.get(i).id); @@ -119,9 +115,9 @@ public class RunningTasksTest extends ActivityTestsBase { final int numFetchTasks = 5; final ArrayList<RunningTaskInfo> tasks = new ArrayList<>(); - mRunningTasks.getTasks(numFetchTasks, tasks, ACTIVITY_TYPE_UNDEFINED, - WINDOWING_MODE_UNDEFINED, mRootWindowContainer, -1 /* callingUid */, - true /* allowed */, true /*crossUser */, PROFILE_IDS); + mRunningTasks.getTasks(numFetchTasks, tasks, false /* filterOnlyVisibleRecents */, + mRootWindowContainer, -1 /* callingUid */, true /* allowed */, true /*crossUser */, + PROFILE_IDS); assertThat(tasks).hasSize(numFetchTasks); for (int i = 0; i < tasks.size(); i++) { final Bundle extras = tasks.get(i).baseIntent.getExtras(); |