Return tasks that belong to a profile from getRunningTasks.
See also ag/9307763
bug: 140813306
Test: cts-tradefed run cts-dev -m CtsPermissionTestCases -t android.permission.cts.NoActivityRelatedPermissionTest#testGetTask
Test: cts-tradefed run cts-dev -m CtsWindowManagerDeviceTestCases
Test: cts-tradefed run cts-dev -m CtsAppTestCases
Change-Id: I6809c459af7442a306ccdd81bc036ad81d02030a
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index d97f0f5..ed7e12c 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -215,6 +215,7 @@
import android.text.TextUtils;
import android.text.format.TimeMigrationUtils;
import android.util.ArrayMap;
+import android.util.ArraySet;
import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
@@ -2512,6 +2513,12 @@
final int callingUid = Binder.getCallingUid();
final int callingPid = Binder.getCallingPid();
final boolean crossUser = isCrossUserAllowed(callingPid, callingUid);
+ final int[] profileIds = getUserManager().getProfileIds(
+ UserHandle.getUserId(callingUid), true);
+ ArraySet<Integer> callingProfileIds = new ArraySet<>();
+ for (int i = 0; i < profileIds.length; i++) {
+ callingProfileIds.add(profileIds[i]);
+ }
ArrayList<ActivityManager.RunningTaskInfo> list = new ArrayList<>();
synchronized (mGlobalLock) {
@@ -2519,7 +2526,7 @@
final boolean allowed = isGetTasksAllowed("getTasks", callingPid, callingUid);
mRootActivityContainer.getRunningTasks(maxNum, list, ignoreActivityType,
- ignoreWindowingMode, callingUid, allowed, crossUser);
+ ignoreWindowingMode, callingUid, allowed, crossUser, callingProfileIds);
}
return list;