Merge "Fix issue with multiple recent tasks showing after restarting the device" into pi-dev
am: 20ebb32825
Change-Id: Icf92ea2e9573d41157c973690fe5a0457abc2207
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
|
|
||||||
@@ -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"));
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user