diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ActivityStack.java | 7 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java | 29 |
2 files changed, 32 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index 9e8876a9c32d..30e866b8e2a4 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -1387,13 +1387,12 @@ class ActivityStack extends ConfigurationContainer { } if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Comparing existing cls=" - + taskIntent.getComponent().flattenToShortString() + + (task.realActivity != null ? task.realActivity.flattenToShortString() : "") + "/aff=" + r.getTaskRecord().rootAffinity + " to new cls=" + intent.getComponent().flattenToShortString() + "/aff=" + info.taskAffinity); // TODO Refactor to remove duplications. Check if logic can be simplified. - if (taskIntent != null && taskIntent.getComponent() != null && - taskIntent.getComponent().compareTo(cls) == 0 && - Objects.equals(documentData, taskDocumentData)) { + if (task.realActivity != null && task.realActivity.compareTo(cls) == 0 + && Objects.equals(documentData, taskDocumentData)) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Found matching class!"); //dump(); if (DEBUG_TASKS) Slog.d(TAG_TASKS, diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java index 757267e56fa2..bde0ef6aa39e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java @@ -262,6 +262,35 @@ public class ActivityStackTests extends ActivityTestsBase { } @Test + public void testFindTaskAlias() { + final String targetActivity = "target.activity"; + final String aliasActivity = "alias.activity"; + final ComponentName target = new ComponentName(DEFAULT_COMPONENT_PACKAGE_NAME, + targetActivity); + final ComponentName alias = new ComponentName(DEFAULT_COMPONENT_PACKAGE_NAME, + aliasActivity); + final TaskRecord task = new TaskBuilder(mService.mStackSupervisor).setStack(mStack).build(); + task.origActivity = alias; + task.realActivity = target; + new ActivityBuilder(mService).setComponent(target).setTask(task).setTargetActivity( + targetActivity).build(); + + // Using target activity to find task. + final ActivityRecord r1 = new ActivityBuilder(mService).setComponent( + target).setTargetActivity(targetActivity).build(); + RootActivityContainer.FindTaskResult result = new RootActivityContainer.FindTaskResult(); + mStack.findTaskLocked(r1, result); + assertThat(result.mRecord).isNotNull(); + + // Using alias activity to find task. + final ActivityRecord r2 = new ActivityBuilder(mService).setComponent( + alias).setTargetActivity(targetActivity).build(); + result = new RootActivityContainer.FindTaskResult(); + mStack.findTaskLocked(r2, result); + assertThat(result.mRecord).isNotNull(); + } + + @Test public void testMoveStackToBackIncludingParent() { final ActivityDisplay display = addNewActivityDisplayAt(ActivityDisplay.POSITION_TOP); final ActivityStack stack1 = createStackForShouldBeVisibleTest(display, |