summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Filip Gruszczynski <gruszczy@google.com> 2015-12-16 13:46:38 -0800
committer Filip Gruszczynski <gruszczy@google.com> 2015-12-17 09:56:45 -0800
commit3d0267143f88cf6ec554b709d78805a9e46d06db (patch)
treed44c8f31a61e09e6a36f840c4b422e3bb3fa347c
parent92e432c30e2304272c2f5b1b33366f32c3d763cf (diff)
Only add noDisplay activities to freeform source tasks.
We started adding noDisplay activities to source tasks to make the resolver activity show up within the same task bounds as what caused it to appear. However, in other cases it might cause to add a noDisplay activity to a task in which we don't expect anything to appear, e.g. home task when launching from home. Bug: 26128908 Bug: 26023670 Change-Id: I2f64e82b3c3754cdbcb4cac3f907674344e67e04
-rw-r--r--core/java/android/app/Activity.java3
-rwxr-xr-xservices/core/java/com/android/server/am/ActivityRecord.java43
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java3
3 files changed, 31 insertions, 18 deletions
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 571bc6efeac5..4ed2fd7449b1 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -5300,8 +5300,7 @@ public class Activity extends ContextThemeWrapper
*/
public boolean isTaskRoot() {
try {
- return ActivityManagerNative.getDefault()
- .getTaskForActivity(mToken, true) >= 0;
+ return ActivityManagerNative.getDefault().getTaskForActivity(mToken, true) >= 0;
} catch (RemoteException e) {
return false;
}
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index d215fc60ea5b..3da0f8d9c778 100755
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -16,22 +16,21 @@
package com.android.server.am;
-import static com.android.server.am.ActivityManagerDebugConfig.*;
+import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
+import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_CONFIGURATION;
+import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SAVED_STATE;
+import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SWITCH;
+import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_THUMBNAILS;
+import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_STATES;
+import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SWITCH;
+import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_THUMBNAILS;
+import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
+import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.TaskRecord.INVALID_TASK_ID;
import android.app.ActivityManager.TaskDescription;
-import android.app.PendingIntent;
-import android.os.PersistableBundle;
-import android.os.Trace;
-
-import com.android.internal.app.ResolverActivity;
-import com.android.internal.content.ReferrerIntent;
-import com.android.internal.util.XmlUtils;
-import com.android.server.AttributeCache;
-import com.android.server.am.ActivityStack.ActivityState;
-import com.android.server.am.ActivityStackSupervisor.ActivityContainer;
-
import android.app.ActivityOptions;
+import android.app.PendingIntent;
import android.app.ResultInfo;
import android.content.ComponentName;
import android.content.Intent;
@@ -45,9 +44,11 @@ import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Message;
+import android.os.PersistableBundle;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemClock;
+import android.os.Trace;
import android.os.UserHandle;
import android.util.EventLog;
import android.util.Log;
@@ -57,9 +58,12 @@ import android.view.AppTransitionAnimationSpec;
import android.view.IApplicationToken;
import android.view.WindowManager;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlSerializer;
+import com.android.internal.app.ResolverActivity;
+import com.android.internal.content.ReferrerIntent;
+import com.android.internal.util.XmlUtils;
+import com.android.server.AttributeCache;
+import com.android.server.am.ActivityStack.ActivityState;
+import com.android.server.am.ActivityStackSupervisor.ActivityContainer;
import java.io.File;
import java.io.IOException;
@@ -69,6 +73,10 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Objects;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlSerializer;
+
/**
* An entry in the history stack, representing an activity.
*/
@@ -398,6 +406,11 @@ final class ActivityRecord {
}
}
+ boolean isFreeform() {
+ return task != null && task.stack != null
+ && task.stack.mStackId == FREEFORM_WORKSPACE_STACK_ID;
+ }
+
static class Token extends IApplicationToken.Stub {
private final WeakReference<ActivityRecord> weakActivity;
private final ActivityManagerService mService;
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 80d531e71f3e..6845bf025189 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -2260,7 +2260,8 @@ public final class ActivityStackSupervisor implements DisplayListener {
// 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) {
+ if ((r.isResolverActivity() || r.noDisplay) && sourceRecord != null
+ && sourceRecord.isFreeform()) {
addingToTask = true;
}
}