Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20ebb328 authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Fix issue with multiple recent tasks showing after restarting the device" into pi-dev

parents 17aa7519 c790b6c6
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -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;
+31 −2
Original line number Original line Diff line number Diff line
@@ -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
+3 −0
Original line number Original line Diff line number Diff line
@@ -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";