Loading services/core/java/com/android/server/wm/ActivityRecord.java +2 −10 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; } } Loading services/core/java/com/android/server/wm/Task.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +3 −6 Original line number Original line Diff line number Diff line Loading @@ -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(); Loading @@ -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(); Loading @@ -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(); Loading services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java +2 −14 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading
services/core/java/com/android/server/wm/ActivityRecord.java +2 −10 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; } } Loading
services/core/java/com/android/server/wm/Task.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading
services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +3 −6 Original line number Original line Diff line number Diff line Loading @@ -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(); Loading @@ -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(); Loading @@ -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(); Loading
services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java +2 −14 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading