summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityStack.java7
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java29
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,