2023-03-31 11:21:35 -04:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
2023-03-28 23:42:28 -04:00
|
|
|
From: Alexander Grund <flamefire89@gmail.com>
|
|
|
|
Date: Sun, 26 Mar 2023 17:36:03 +0200
|
|
|
|
Subject: [PATCH] Revert "[RESTRICT AUTOMERGE] Trim the activity info of
|
|
|
|
another uid if no privilege"
|
|
|
|
|
|
|
|
This reverts commit bff14ff38a014fc3059c6bfe8a16aec9f5447554.
|
|
|
|
|
|
|
|
Reason for revert: apps crashed due to the top activity info trimmed
|
|
|
|
|
|
|
|
Bug: 264269392 263434196 263438172
|
|
|
|
Change-Id: I078080b14b7cf7c6e605739f22f40f86802d3950
|
|
|
|
(cherry picked from commit 5caf2dde3d264966e1ba0dd3e18a0524858157ba)
|
|
|
|
Merged-In: I078080b14b7cf7c6e605739f22f40f86802d3950
|
|
|
|
---
|
|
|
|
.../com/android/server/wm/AppTaskImpl.java | 3 +-
|
|
|
|
.../com/android/server/wm/RecentTasks.java | 7 ++--
|
|
|
|
.../com/android/server/wm/RunningTasks.java | 8 ++---
|
|
|
|
.../com/android/server/wm/TaskRecord.java | 34 -------------------
|
|
|
|
4 files changed, 5 insertions(+), 47 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/services/core/java/com/android/server/wm/AppTaskImpl.java b/services/core/java/com/android/server/wm/AppTaskImpl.java
|
2023-03-31 11:21:35 -04:00
|
|
|
index 900b59e0a8a2..1eb7455135c7 100644
|
2023-03-28 23:42:28 -04:00
|
|
|
--- a/services/core/java/com/android/server/wm/AppTaskImpl.java
|
|
|
|
+++ b/services/core/java/com/android/server/wm/AppTaskImpl.java
|
2023-03-31 11:21:35 -04:00
|
|
|
@@ -84,8 +84,7 @@ class AppTaskImpl extends IAppTask.Stub {
|
2023-03-28 23:42:28 -04:00
|
|
|
if (tr == null) {
|
|
|
|
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
|
|
|
|
}
|
|
|
|
- return mService.getRecentTasks().createRecentTaskInfo(tr,
|
|
|
|
- true /* getTasksAllowed */);
|
|
|
|
+ return mService.getRecentTasks().createRecentTaskInfo(tr);
|
|
|
|
} finally {
|
|
|
|
Binder.restoreCallingIdentity(origId);
|
|
|
|
}
|
|
|
|
diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java
|
2023-03-31 11:21:35 -04:00
|
|
|
index 56367f42886d..541a8bbc8865 100644
|
2023-03-28 23:42:28 -04:00
|
|
|
--- a/services/core/java/com/android/server/wm/RecentTasks.java
|
|
|
|
+++ b/services/core/java/com/android/server/wm/RecentTasks.java
|
2023-03-31 11:21:35 -04:00
|
|
|
@@ -944,7 +944,7 @@ class RecentTasks {
|
2023-03-28 23:42:28 -04:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
- final ActivityManager.RecentTaskInfo rti = createRecentTaskInfo(tr, getTasksAllowed);
|
|
|
|
+ final ActivityManager.RecentTaskInfo rti = createRecentTaskInfo(tr);
|
|
|
|
if (!getDetailedTasks) {
|
|
|
|
rti.baseIntent.replaceExtras((Bundle) null);
|
|
|
|
}
|
2023-03-31 11:21:35 -04:00
|
|
|
@@ -1715,15 +1715,12 @@ class RecentTasks {
|
2023-03-28 23:42:28 -04:00
|
|
|
/**
|
|
|
|
* Creates a new RecentTaskInfo from a TaskRecord.
|
|
|
|
*/
|
|
|
|
- ActivityManager.RecentTaskInfo createRecentTaskInfo(TaskRecord tr, boolean getTasksAllowed) {
|
|
|
|
+ ActivityManager.RecentTaskInfo createRecentTaskInfo(TaskRecord tr) {
|
|
|
|
ActivityManager.RecentTaskInfo rti = new ActivityManager.RecentTaskInfo();
|
|
|
|
tr.fillTaskInfo(rti);
|
|
|
|
// Fill in some deprecated values
|
|
|
|
rti.id = rti.isRunning ? rti.taskId : INVALID_TASK_ID;
|
|
|
|
rti.persistentId = rti.taskId;
|
|
|
|
- if (!getTasksAllowed) {
|
|
|
|
- TaskRecord.trimIneffectiveInfo(tr, rti);
|
|
|
|
- }
|
|
|
|
return rti;
|
|
|
|
}
|
|
|
|
|
|
|
|
diff --git a/services/core/java/com/android/server/wm/RunningTasks.java b/services/core/java/com/android/server/wm/RunningTasks.java
|
2023-03-31 11:21:35 -04:00
|
|
|
index 3c2e36cf245d..81a85476c53a 100644
|
2023-03-28 23:42:28 -04:00
|
|
|
--- a/services/core/java/com/android/server/wm/RunningTasks.java
|
|
|
|
+++ b/services/core/java/com/android/server/wm/RunningTasks.java
|
2023-03-31 11:21:35 -04:00
|
|
|
@@ -69,7 +69,7 @@ class RunningTasks {
|
2023-03-28 23:42:28 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
final TaskRecord task = iter.next();
|
|
|
|
- list.add(createRunningTaskInfo(task, allowed));
|
|
|
|
+ list.add(createRunningTaskInfo(task));
|
|
|
|
maxNum--;
|
|
|
|
}
|
|
|
|
}
|
2023-03-31 11:21:35 -04:00
|
|
|
@@ -77,15 +77,11 @@ class RunningTasks {
|
2023-03-28 23:42:28 -04:00
|
|
|
/**
|
|
|
|
* Constructs a {@link RunningTaskInfo} from a given {@param task}.
|
|
|
|
*/
|
|
|
|
- private RunningTaskInfo createRunningTaskInfo(TaskRecord task, boolean allowed) {
|
|
|
|
+ private RunningTaskInfo createRunningTaskInfo(TaskRecord task) {
|
|
|
|
final RunningTaskInfo rti = new RunningTaskInfo();
|
|
|
|
task.fillTaskInfo(rti);
|
|
|
|
// Fill in some deprecated values
|
|
|
|
rti.id = rti.taskId;
|
|
|
|
-
|
|
|
|
- if (!allowed) {
|
|
|
|
- TaskRecord.trimIneffectiveInfo(task, rti);
|
|
|
|
- }
|
|
|
|
return rti;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/services/core/java/com/android/server/wm/TaskRecord.java b/services/core/java/com/android/server/wm/TaskRecord.java
|
2023-03-31 11:21:35 -04:00
|
|
|
index 9de4c8121e4d..361f66e3106a 100644
|
2023-03-28 23:42:28 -04:00
|
|
|
--- a/services/core/java/com/android/server/wm/TaskRecord.java
|
|
|
|
+++ b/services/core/java/com/android/server/wm/TaskRecord.java
|
2023-03-31 11:21:35 -04:00
|
|
|
@@ -2436,40 +2436,6 @@ class TaskRecord extends ConfigurationContainer {
|
2023-03-28 23:42:28 -04:00
|
|
|
info.configuration.setTo(getConfiguration());
|
|
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
- * Removes the activity info if the activity belongs to a different uid, which is
|
|
|
|
- * different from the app that hosts the task.
|
|
|
|
- */
|
|
|
|
- static void trimIneffectiveInfo(TaskRecord task, TaskInfo info) {
|
|
|
|
- int topActivityUid = task.effectiveUid;
|
|
|
|
- for (int i = task.mActivities.size() - 1; i >= 0; --i) {
|
|
|
|
- final ActivityRecord r = task.mActivities.get(i);
|
|
|
|
- if (r.finishing || r.isState(ActivityState.INITIALIZING)) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- topActivityUid = r.info.applicationInfo.uid;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (task.effectiveUid != topActivityUid) {
|
|
|
|
- info.topActivity = null;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- int baseActivityUid = task.effectiveUid;
|
|
|
|
- for (int i = 0; i < task.mActivities.size(); ++i) {
|
|
|
|
- final ActivityRecord r = task.mActivities.get(i);
|
|
|
|
- if (r.finishing) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- baseActivityUid = r.info.applicationInfo.uid;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (task.effectiveUid != baseActivityUid) {
|
|
|
|
- info.baseActivity = null;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/**
|
|
|
|
* Returns a {@link TaskInfo} with information from this task.
|
|
|
|
*/
|