summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chong Zhang <chz@google.com> 2015-10-02 22:36:44 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2015-10-02 22:36:44 +0000
commitf66560d6fd5759b052b86e482d4dec93dde38cf6 (patch)
treecddb0deee601c8294fdaba681a982b51fc7e5962
parentb90a8813bdba1875545c42f63e3873d54158a121 (diff)
parent85ee65483d877e66c4446fce31520f293f0d67c9 (diff)
Merge "Put ResovlerActivity and noDisplay activities in the source task"
-rwxr-xr-xservices/core/java/com/android/server/am/ActivityRecord.java6
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java2
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java10
3 files changed, 13 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 24b90d81996d..d4e798fc45b8 100755
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -477,8 +477,8 @@ final class ActivityRecord {
}
}
- boolean isNotResolverActivity() {
- return !ResolverActivity.class.getName().equals(realActivity.getClassName());
+ boolean isResolverActivity() {
+ return ResolverActivity.class.getName().equals(realActivity.getClassName());
}
ActivityRecord(ActivityManagerService _service, ProcessRecord _caller,
@@ -605,7 +605,7 @@ final class ActivityRecord {
_intent.getData() == null &&
_intent.getType() == null &&
(intent.getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) != 0 &&
- isNotResolverActivity()) {
+ !isResolverActivity()) {
// This sure looks like a home activity!
mActivityType = HOME_ACTIVITY_TYPE;
} else if (realActivity.getClassName().contains(RECENTS_PACKAGE_NAME)) {
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index a796ea7d4ab5..f549af8c0c53 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -1153,7 +1153,7 @@ final class ActivityStack {
next.results = null;
next.newIntents = null;
- if (next.isHomeActivity() && next.isNotResolverActivity()) {
+ if (next.isHomeActivity()) {
ProcessRecord app = next.task.mActivities.get(0).app;
if (app != null && app != mService.mHomeProcess) {
mService.mHomeProcess = app;
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 3a368ac59369..ac7b9b1400c2 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -1262,7 +1262,7 @@ public final class ActivityStackSupervisor implements DisplayListener {
r.userId, System.identityHashCode(r),
task.taskId, r.shortComponentName);
}
- if (r.isHomeActivity() && r.isNotResolverActivity()) {
+ if (r.isHomeActivity()) {
// Home process is the root process of the task.
mService.mHomeProcess = task.mActivities.get(0).app;
}
@@ -2024,6 +2024,14 @@ public final class ActivityStackSupervisor implements DisplayListener {
reuseTask = inTask;
} else {
inTask = null;
+ // Launch ResolverActivity in the source task, so that it stays in the task
+ // bounds when in freeform workspace.
+ // Also put noDisplay activities in the source task. These by itself can
+ // be placed in any task/stack, however it could launch other activities
+ // like ResolverActivity, and we want those to stay in the original task.
+ if (r.isResolverActivity() || r.noDisplay) {
+ addingToTask = true;
+ }
}
if (inTask == null) {