Loading services/core/java/com/android/server/am/RecentTasks.java +1 −3 Original line number Original line Diff line number Diff line Loading @@ -1243,15 +1243,13 @@ class RecentTasks { */ */ private int findRemoveIndexForAddTask(TaskRecord task) { private int findRemoveIndexForAddTask(TaskRecord task) { final int recentsCount = mTasks.size(); final int recentsCount = mTasks.size(); final int taskActivityType = task.getActivityType(); final Intent intent = task.intent; final Intent intent = task.intent; final boolean document = intent != null && intent.isDocument(); final boolean document = intent != null && intent.isDocument(); int maxRecents = task.maxRecents - 1; int maxRecents = task.maxRecents - 1; for (int i = 0; i < recentsCount; i++) { for (int i = 0; i < recentsCount; i++) { final TaskRecord tr = mTasks.get(i); final TaskRecord tr = mTasks.get(i); final int trActivityType = tr.getActivityType(); if (task != tr) { if (task != tr) { if (taskActivityType != trActivityType || task.userId != tr.userId) { if (!task.hasCompatibleActivityType(tr)) { continue; continue; } } final Intent trIntent = tr.intent; final Intent trIntent = tr.intent; Loading services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java +31 −2 Original line number Original line Diff line number Diff line Loading @@ -42,11 +42,13 @@ import static java.lang.Integer.MAX_VALUE; import android.app.ActivityManager; import android.app.ActivityManager; import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityManager.RunningTaskInfo; import android.app.ActivityManager.RunningTaskInfo; import android.app.WindowConfiguration; import android.content.ComponentName; import android.content.ComponentName; import android.content.Context; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.pm.ParceledListSlice; import android.content.pm.UserInfo; import android.content.pm.UserInfo; import android.content.res.Configuration; import android.graphics.Rect; import android.graphics.Rect; import android.os.Bundle; import android.os.Bundle; import android.os.Debug; import android.os.Debug; Loading Loading @@ -101,8 +103,8 @@ public class RecentTasksTest extends ActivityTestsBase { private TestRecentTasks mRecentTasks; private TestRecentTasks mRecentTasks; private TestRunningTasks mRunningTasks; private TestRunningTasks mRunningTasks; private static ArrayList<TaskRecord> mTasks = new ArrayList<>(); private ArrayList<TaskRecord> mTasks; private static ArrayList<TaskRecord> mSameDocumentTasks = new ArrayList<>(); private ArrayList<TaskRecord> mSameDocumentTasks; private CallbacksRecorder mCallbacksRecorder; private CallbacksRecorder mCallbacksRecorder; Loading Loading @@ -155,12 +157,14 @@ public class RecentTasksTest extends ActivityTestsBase { mRecentTasks.registerCallback(mCallbacksRecorder); mRecentTasks.registerCallback(mCallbacksRecorder); QUIET_USER_INFO.flags = UserInfo.FLAG_MANAGED_PROFILE | UserInfo.FLAG_QUIET_MODE; QUIET_USER_INFO.flags = UserInfo.FLAG_MANAGED_PROFILE | UserInfo.FLAG_QUIET_MODE; mTasks = new ArrayList<>(); mTasks.add(createTaskBuilder(".Task1").build()); mTasks.add(createTaskBuilder(".Task1").build()); mTasks.add(createTaskBuilder(".Task2").build()); mTasks.add(createTaskBuilder(".Task2").build()); mTasks.add(createTaskBuilder(".Task3").build()); mTasks.add(createTaskBuilder(".Task3").build()); mTasks.add(createTaskBuilder(".Task4").build()); mTasks.add(createTaskBuilder(".Task4").build()); mTasks.add(createTaskBuilder(".Task5").build()); mTasks.add(createTaskBuilder(".Task5").build()); mSameDocumentTasks = new ArrayList<>(); mSameDocumentTasks.add(createDocumentTask(".DocumentTask1")); mSameDocumentTasks.add(createDocumentTask(".DocumentTask1")); mSameDocumentTasks.add(createDocumentTask(".DocumentTask1")); mSameDocumentTasks.add(createDocumentTask(".DocumentTask1")); } } Loading Loading @@ -294,7 +298,32 @@ public class RecentTasksTest extends ActivityTestsBase { assertTrue(mCallbacksRecorder.added.contains(task2)); assertTrue(mCallbacksRecorder.added.contains(task2)); assertTrue(mCallbacksRecorder.trimmed.isEmpty()); assertTrue(mCallbacksRecorder.trimmed.isEmpty()); assertTrue(mCallbacksRecorder.removed.isEmpty()); assertTrue(mCallbacksRecorder.removed.isEmpty()); } @Test public void testAddTaskCompatibleActivityType_expectRemove() throws Exception { Configuration config1 = new Configuration(); config1.windowConfiguration.setActivityType(ACTIVITY_TYPE_UNDEFINED); TaskRecord task1 = createTaskBuilder(".Task1") .setFlags(FLAG_ACTIVITY_NEW_TASK) .setStack(mStack) .build(); task1.onConfigurationChanged(config1); assertTrue(task1.getActivityType() == ACTIVITY_TYPE_UNDEFINED); mRecentTasks.add(task1); mCallbacksRecorder.clear(); TaskRecord task2 = createTaskBuilder(".Task1") .setFlags(FLAG_ACTIVITY_NEW_TASK) .setStack(mStack) .build(); assertTrue(task2.getActivityType() == ACTIVITY_TYPE_STANDARD); mRecentTasks.add(task2); assertTrue(mCallbacksRecorder.added.size() == 1); assertTrue(mCallbacksRecorder.added.contains(task2)); assertTrue(mCallbacksRecorder.trimmed.isEmpty()); assertTrue(mCallbacksRecorder.removed.size() == 1); assertTrue(mCallbacksRecorder.removed.contains(task1)); } } @Test @Test Loading services/tests/servicestests/src/com/android/server/am/TaskPersisterTest.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,9 @@ import com.android.server.am.TaskPersister; import java.io.File; import java.io.File; import java.util.Random; import java.util.Random; /** * atest FrameworksServicesTests:TaskPersisterTest */ public class TaskPersisterTest extends AndroidTestCase { public class TaskPersisterTest extends AndroidTestCase { private static final String TEST_USER_NAME = "AM-Test-User"; private static final String TEST_USER_NAME = "AM-Test-User"; Loading Loading
services/core/java/com/android/server/am/RecentTasks.java +1 −3 Original line number Original line Diff line number Diff line Loading @@ -1243,15 +1243,13 @@ class RecentTasks { */ */ private int findRemoveIndexForAddTask(TaskRecord task) { private int findRemoveIndexForAddTask(TaskRecord task) { final int recentsCount = mTasks.size(); final int recentsCount = mTasks.size(); final int taskActivityType = task.getActivityType(); final Intent intent = task.intent; final Intent intent = task.intent; final boolean document = intent != null && intent.isDocument(); final boolean document = intent != null && intent.isDocument(); int maxRecents = task.maxRecents - 1; int maxRecents = task.maxRecents - 1; for (int i = 0; i < recentsCount; i++) { for (int i = 0; i < recentsCount; i++) { final TaskRecord tr = mTasks.get(i); final TaskRecord tr = mTasks.get(i); final int trActivityType = tr.getActivityType(); if (task != tr) { if (task != tr) { if (taskActivityType != trActivityType || task.userId != tr.userId) { if (!task.hasCompatibleActivityType(tr)) { continue; continue; } } final Intent trIntent = tr.intent; final Intent trIntent = tr.intent; Loading
services/tests/servicestests/src/com/android/server/am/RecentTasksTest.java +31 −2 Original line number Original line Diff line number Diff line Loading @@ -42,11 +42,13 @@ import static java.lang.Integer.MAX_VALUE; import android.app.ActivityManager; import android.app.ActivityManager; import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityManager.RecentTaskInfo; import android.app.ActivityManager.RunningTaskInfo; import android.app.ActivityManager.RunningTaskInfo; import android.app.WindowConfiguration; import android.content.ComponentName; import android.content.ComponentName; import android.content.Context; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.pm.ParceledListSlice; import android.content.pm.UserInfo; import android.content.pm.UserInfo; import android.content.res.Configuration; import android.graphics.Rect; import android.graphics.Rect; import android.os.Bundle; import android.os.Bundle; import android.os.Debug; import android.os.Debug; Loading Loading @@ -101,8 +103,8 @@ public class RecentTasksTest extends ActivityTestsBase { private TestRecentTasks mRecentTasks; private TestRecentTasks mRecentTasks; private TestRunningTasks mRunningTasks; private TestRunningTasks mRunningTasks; private static ArrayList<TaskRecord> mTasks = new ArrayList<>(); private ArrayList<TaskRecord> mTasks; private static ArrayList<TaskRecord> mSameDocumentTasks = new ArrayList<>(); private ArrayList<TaskRecord> mSameDocumentTasks; private CallbacksRecorder mCallbacksRecorder; private CallbacksRecorder mCallbacksRecorder; Loading Loading @@ -155,12 +157,14 @@ public class RecentTasksTest extends ActivityTestsBase { mRecentTasks.registerCallback(mCallbacksRecorder); mRecentTasks.registerCallback(mCallbacksRecorder); QUIET_USER_INFO.flags = UserInfo.FLAG_MANAGED_PROFILE | UserInfo.FLAG_QUIET_MODE; QUIET_USER_INFO.flags = UserInfo.FLAG_MANAGED_PROFILE | UserInfo.FLAG_QUIET_MODE; mTasks = new ArrayList<>(); mTasks.add(createTaskBuilder(".Task1").build()); mTasks.add(createTaskBuilder(".Task1").build()); mTasks.add(createTaskBuilder(".Task2").build()); mTasks.add(createTaskBuilder(".Task2").build()); mTasks.add(createTaskBuilder(".Task3").build()); mTasks.add(createTaskBuilder(".Task3").build()); mTasks.add(createTaskBuilder(".Task4").build()); mTasks.add(createTaskBuilder(".Task4").build()); mTasks.add(createTaskBuilder(".Task5").build()); mTasks.add(createTaskBuilder(".Task5").build()); mSameDocumentTasks = new ArrayList<>(); mSameDocumentTasks.add(createDocumentTask(".DocumentTask1")); mSameDocumentTasks.add(createDocumentTask(".DocumentTask1")); mSameDocumentTasks.add(createDocumentTask(".DocumentTask1")); mSameDocumentTasks.add(createDocumentTask(".DocumentTask1")); } } Loading Loading @@ -294,7 +298,32 @@ public class RecentTasksTest extends ActivityTestsBase { assertTrue(mCallbacksRecorder.added.contains(task2)); assertTrue(mCallbacksRecorder.added.contains(task2)); assertTrue(mCallbacksRecorder.trimmed.isEmpty()); assertTrue(mCallbacksRecorder.trimmed.isEmpty()); assertTrue(mCallbacksRecorder.removed.isEmpty()); assertTrue(mCallbacksRecorder.removed.isEmpty()); } @Test public void testAddTaskCompatibleActivityType_expectRemove() throws Exception { Configuration config1 = new Configuration(); config1.windowConfiguration.setActivityType(ACTIVITY_TYPE_UNDEFINED); TaskRecord task1 = createTaskBuilder(".Task1") .setFlags(FLAG_ACTIVITY_NEW_TASK) .setStack(mStack) .build(); task1.onConfigurationChanged(config1); assertTrue(task1.getActivityType() == ACTIVITY_TYPE_UNDEFINED); mRecentTasks.add(task1); mCallbacksRecorder.clear(); TaskRecord task2 = createTaskBuilder(".Task1") .setFlags(FLAG_ACTIVITY_NEW_TASK) .setStack(mStack) .build(); assertTrue(task2.getActivityType() == ACTIVITY_TYPE_STANDARD); mRecentTasks.add(task2); assertTrue(mCallbacksRecorder.added.size() == 1); assertTrue(mCallbacksRecorder.added.contains(task2)); assertTrue(mCallbacksRecorder.trimmed.isEmpty()); assertTrue(mCallbacksRecorder.removed.size() == 1); assertTrue(mCallbacksRecorder.removed.contains(task1)); } } @Test @Test Loading
services/tests/servicestests/src/com/android/server/am/TaskPersisterTest.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,9 @@ import com.android.server.am.TaskPersister; import java.io.File; import java.io.File; import java.util.Random; import java.util.Random; /** * atest FrameworksServicesTests:TaskPersisterTest */ public class TaskPersisterTest extends AndroidTestCase { public class TaskPersisterTest extends AndroidTestCase { private static final String TEST_USER_NAME = "AM-Test-User"; private static final String TEST_USER_NAME = "AM-Test-User"; Loading