Merge "Passing stack id with RunningTaskInfo."
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 6ae32d0..fce1b2e 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -1200,6 +1200,12 @@
public int id;
/**
+ * The stack that currently contains this task.
+ * @hide
+ */
+ public int stackId;
+
+ /**
* The component launched as the first activity in the task. This can
* be considered the "application" of this task.
*/
@@ -1248,6 +1254,7 @@
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
+ dest.writeInt(stackId);
ComponentName.writeToParcel(baseActivity, dest);
ComponentName.writeToParcel(topActivity, dest);
if (thumbnail != null) {
@@ -1264,6 +1271,7 @@
public void readFromParcel(Parcel source) {
id = source.readInt();
+ stackId = source.readInt();
baseActivity = ComponentName.readFromParcel(source);
topActivity = ComponentName.readFromParcel(source);
if (source.readInt() != 0) {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
index 2c8937a..2f0030c 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
@@ -346,7 +346,7 @@
// Return early if there is no running task (can't determine affiliated tasks in this case)
if (runningTask == null) return;
// Return early if the running task is in the home stack (optimization)
- if (ssp.isInHomeStack(runningTask.id)) return;
+ if (SystemServicesProxy.isHomeStack(runningTask.stackId)) return;
// Find the task in the recents list
ArrayList<Task> tasks = focusedStack.getTasks();
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
index 221af15..e7fca6e 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java
@@ -247,8 +247,10 @@
return true;
}
+ // Note, this is only valid because we currently only allow the recents and home
+ // activities in the home stack
if (isHomeTopMost != null) {
- isHomeTopMost.value = isInHomeStack(topTask.id);
+ isHomeTopMost.value = SystemServicesProxy.isHomeStack(topTask.stackId);
}
}
return false;
@@ -313,16 +315,18 @@
}
}
- /** Returns whether the specified task is in the home stack */
- public boolean isInHomeStack(int taskId) {
- if (mAm == null) return false;
+ /**
+ * Returns whether the given stack id is the home stack id.
+ */
+ public static boolean isHomeStack(int stackId) {
+ return stackId == ActivityManager.HOME_STACK_ID;
+ }
- // If we are mocking, then just return false
- if (Constants.DebugFlags.App.EnableSystemServicesProxy) {
- return false;
- }
-
- return mAm.isInHomeStack(taskId);
+ /**
+ * Returns whether the given stack id is the freeform workspace stack id.
+ */
+ public static boolean isFreeformStack(int stackId) {
+ return stackId == ActivityManager.FREEFORM_WORKSPACE_STACK_ID;
}
/**
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 99539e4..1cd3758 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -21,6 +21,7 @@
import static android.app.ActivityManager.FREEFORM_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.FULLSCREEN_WORKSPACE_STACK_ID;
import static android.app.ActivityManager.HOME_STACK_ID;
+import static android.app.ActivityManager.INVALID_STACK_ID;
import static android.app.ActivityManager.LAST_STATIC_STACK_ID;
import static android.app.ActivityManager.PINNED_STACK_ID;
import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS;
@@ -4375,6 +4376,7 @@
RunningTaskInfo ci = new RunningTaskInfo();
ci.id = task.taskId;
+ ci.stackId = (task.stack == null) ? INVALID_STACK_ID : task.stack.getStackId();
ci.baseActivity = r.intent.getComponent();
ci.topActivity = top.intent.getComponent();
ci.lastActiveTime = task.lastActiveTime;