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

Commit 96c01992 authored by Louis Chang's avatar Louis Chang Committed by Android (Google) Code Review
Browse files

Merge "Restore the taskAffinity behavior of singleInstance Activity" into udc-qpr-dev

parents b05e1c7e de6667cc
Loading
Loading
Loading
Loading
+2 −10
Original line number Original line Diff line number Diff line
@@ -2117,8 +2117,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        hasBeenLaunched = false;
        hasBeenLaunched = false;
        mTaskSupervisor = supervisor;
        mTaskSupervisor = supervisor;


        info.taskAffinity = computeTaskAffinity(info.taskAffinity, info.applicationInfo.uid,
        info.taskAffinity = computeTaskAffinity(info.taskAffinity, info.applicationInfo.uid);
                info.launchMode, mActivityComponent);
        taskAffinity = info.taskAffinity;
        taskAffinity = info.taskAffinity;
        final String uid = Integer.toString(info.applicationInfo.uid);
        final String uid = Integer.toString(info.applicationInfo.uid);
        if (info.windowLayout != null && info.windowLayout.windowLayoutAffinity != null
        if (info.windowLayout != null && info.windowLayout.windowLayoutAffinity != null
@@ -2218,19 +2217,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
     *
     *
     * @param affinity The affinity of the activity.
     * @param affinity The affinity of the activity.
     * @param uid The user-ID that has been assigned to this application.
     * @param uid The user-ID that has been assigned to this application.
     * @param launchMode The activity launch mode
     * @param componentName The activity component name. This is only useful when the given
     *                      launchMode is {@link ActivityInfo#LAUNCH_SINGLE_INSTANCE}
     * @return The task affinity
     * @return The task affinity
     */
     */
    static String computeTaskAffinity(String affinity, int uid, int launchMode,
    static String computeTaskAffinity(String affinity, int uid) {
            ComponentName componentName) {
        final String uidStr = Integer.toString(uid);
        final String uidStr = Integer.toString(uid);
        if (affinity != null && !affinity.startsWith(uidStr)) {
        if (affinity != null && !affinity.startsWith(uidStr)) {
            affinity = uidStr + ":" + affinity;
            affinity = uidStr + ":" + affinity;
            if (launchMode == LAUNCH_SINGLE_INSTANCE && componentName != null) {
                affinity += ":" + componentName.hashCode();
            }
        }
        }
        return affinity;
        return affinity;
    }
    }
+1 −2
Original line number Original line Diff line number Diff line
@@ -5417,8 +5417,7 @@ class Task extends TaskFragment {
        // Basic case: for simple app-centric recents, we need to recreate
        // Basic case: for simple app-centric recents, we need to recreate
        // the task if the affinity has changed.
        // the task if the affinity has changed.


        final String affinity = ActivityRecord.computeTaskAffinity(destAffinity, srec.getUid(),
        final String affinity = ActivityRecord.computeTaskAffinity(destAffinity, srec.getUid());
                srec.launchMode, srec.mActivityComponent);
        if (srec == null || srec.getTask().affinity == null
        if (srec == null || srec.getTask().affinity == null
                || !srec.getTask().affinity.equals(affinity)) {
                || !srec.getTask().affinity.equals(affinity)) {
            return true;
            return true;
+3 −6
Original line number Original line Diff line number Diff line
@@ -1791,8 +1791,7 @@ public class ActivityStarterTests extends WindowTestsBase {
    public void testLaunchActivityWithoutDisplayCategory() {
    public void testLaunchActivityWithoutDisplayCategory() {
        final ActivityInfo info = new ActivityInfo();
        final ActivityInfo info = new ActivityInfo();
        info.applicationInfo = new ApplicationInfo();
        info.applicationInfo = new ApplicationInfo();
        info.taskAffinity = ActivityRecord.computeTaskAffinity("test", DEFAULT_FAKE_UID,
        info.taskAffinity = ActivityRecord.computeTaskAffinity("test", DEFAULT_FAKE_UID);
                0 /* launchMode */, null /* componentName */);
        info.requiredDisplayCategory = "automotive";
        info.requiredDisplayCategory = "automotive";
        final Task task = new TaskBuilder(mSupervisor).setCreateActivity(true).setActivityInfo(info)
        final Task task = new TaskBuilder(mSupervisor).setCreateActivity(true).setActivityInfo(info)
                .build();
                .build();
@@ -1817,8 +1816,7 @@ public class ActivityStarterTests extends WindowTestsBase {
    public void testLaunchActivityWithDifferentDisplayCategory() {
    public void testLaunchActivityWithDifferentDisplayCategory() {
        final ActivityInfo info = new ActivityInfo();
        final ActivityInfo info = new ActivityInfo();
        info.applicationInfo = new ApplicationInfo();
        info.applicationInfo = new ApplicationInfo();
        info.taskAffinity = ActivityRecord.computeTaskAffinity("test", DEFAULT_FAKE_UID,
        info.taskAffinity = ActivityRecord.computeTaskAffinity("test", DEFAULT_FAKE_UID);
                0 /* launchMode */, null /* componentName */);
        info.requiredDisplayCategory = "automotive";
        info.requiredDisplayCategory = "automotive";
        final Task task = new TaskBuilder(mSupervisor).setCreateActivity(true).setActivityInfo(info)
        final Task task = new TaskBuilder(mSupervisor).setCreateActivity(true).setActivityInfo(info)
                .build();
                .build();
@@ -1843,8 +1841,7 @@ public class ActivityStarterTests extends WindowTestsBase {
    public void testLaunchActivityWithSameDisplayCategory() {
    public void testLaunchActivityWithSameDisplayCategory() {
        final ActivityInfo info = new ActivityInfo();
        final ActivityInfo info = new ActivityInfo();
        info.applicationInfo = new ApplicationInfo();
        info.applicationInfo = new ApplicationInfo();
        info.taskAffinity = ActivityRecord.computeTaskAffinity("test", DEFAULT_FAKE_UID,
        info.taskAffinity = ActivityRecord.computeTaskAffinity("test", DEFAULT_FAKE_UID);
                0 /* launchMode */, null /* componentName */);
        info.requiredDisplayCategory = "automotive";
        info.requiredDisplayCategory = "automotive";
        final Task task = new TaskBuilder(mSupervisor).setCreateActivity(true).setActivityInfo(info)
        final Task task = new TaskBuilder(mSupervisor).setCreateActivity(true).setActivityInfo(info)
                .build();
                .build();
+2 −14
Original line number Original line Diff line number Diff line
@@ -27,8 +27,6 @@ import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
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_DOCUMENT;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.pm.ActivityInfo.LAUNCH_MULTIPLE;
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.os.Process.NOBODY_UID;
import static android.os.Process.NOBODY_UID;


@@ -451,25 +449,15 @@ public class RecentTasksTest extends WindowTestsBase {
        final int uid = 10123;
        final int uid = 10123;
        final Task task1 = createTaskBuilder(".Task1").build();
        final Task task1 = createTaskBuilder(".Task1").build();
        final ComponentName componentName = getUniqueComponentName();
        final ComponentName componentName = getUniqueComponentName();
        task1.affinity = ActivityRecord.computeTaskAffinity(taskAffinity, uid, LAUNCH_MULTIPLE,
        task1.affinity = ActivityRecord.computeTaskAffinity(taskAffinity, uid);
                componentName);
        mRecentTasks.add(task1);
        mRecentTasks.add(task1);


        // Add another task to recents, and make sure the previous task was removed.
        // Add another task to recents, and make sure the previous task was removed.
        final Task task2 = createTaskBuilder(".Task2").build();
        final Task task2 = createTaskBuilder(".Task2").build();
        task2.affinity = ActivityRecord.computeTaskAffinity(taskAffinity, uid, LAUNCH_MULTIPLE,
        task2.affinity = ActivityRecord.computeTaskAffinity(taskAffinity, uid);
                componentName);
        mRecentTasks.add(task2);
        mRecentTasks.add(task2);
        assertEquals(1, mRecentTasks.getRecentTasks(MAX_VALUE, 0 /* flags */,
        assertEquals(1, mRecentTasks.getRecentTasks(MAX_VALUE, 0 /* flags */,
                true /* getTasksAllowed */, TEST_USER_0_ID, 0).getList().size());
                true /* getTasksAllowed */, TEST_USER_0_ID, 0).getList().size());

        // Add another single-instance task to recents, and make sure no task is removed.
        final Task task3 = createTaskBuilder(".Task3").build();
        task3.affinity = ActivityRecord.computeTaskAffinity(taskAffinity, uid,
                LAUNCH_SINGLE_INSTANCE, componentName);
        mRecentTasks.add(task3);
        assertEquals(2, mRecentTasks.getRecentTasks(MAX_VALUE, 0 /* flags */,
                true /* getTasksAllowed */, TEST_USER_0_ID, 0).getList().size());
    }
    }


    @Test
    @Test