Revert "Trim the activity info of another uid if no privilege"
This reverts commit b01460d5d3.
Reason for revert: apps crashed due to the top activity info trimmed
Bug: 264269392 263434196 263438172
Change-Id: Idf831f0410296c782914a51d83040fe958bb6c42
Merged-In: I0ad9d0e5659eb9d1c5ac6469ef37ab0cd7f6106a
This commit is contained in:
@@ -98,7 +98,7 @@ class AppTaskImpl extends IAppTask.Stub {
|
||||
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
|
||||
}
|
||||
return mService.getRecentTasks().createRecentTaskInfo(task,
|
||||
false /* stripExtras */, true /* getTasksAllowed */);
|
||||
false /* stripExtras */);
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(origId);
|
||||
}
|
||||
|
||||
@@ -976,7 +976,7 @@ class RecentTasks {
|
||||
continue;
|
||||
}
|
||||
|
||||
res.add(createRecentTaskInfo(task, true /* stripExtras */, getTasksAllowed));
|
||||
res.add(createRecentTaskInfo(task, true /* stripExtras */));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@@ -1895,8 +1895,7 @@ class RecentTasks {
|
||||
/**
|
||||
* Creates a new RecentTaskInfo from a Task.
|
||||
*/
|
||||
ActivityManager.RecentTaskInfo createRecentTaskInfo(Task tr, boolean stripExtras,
|
||||
boolean getTasksAllowed) {
|
||||
ActivityManager.RecentTaskInfo createRecentTaskInfo(Task tr, boolean stripExtras) {
|
||||
final ActivityManager.RecentTaskInfo rti = new ActivityManager.RecentTaskInfo();
|
||||
// If the recent Task is detached, we consider it will be re-attached to the default
|
||||
// TaskDisplayArea because we currently only support recent overview in the default TDA.
|
||||
@@ -1908,9 +1907,6 @@ class RecentTasks {
|
||||
rti.id = rti.isRunning ? rti.taskId : INVALID_TASK_ID;
|
||||
rti.persistentId = rti.taskId;
|
||||
rti.lastSnapshotData.set(tr.mLastTaskSnapshotData);
|
||||
if (!getTasksAllowed) {
|
||||
Task.trimIneffectiveInfo(tr, rti);
|
||||
}
|
||||
|
||||
// Fill in organized child task info for the task created by organizer.
|
||||
if (tr.mCreatedByOrganizer) {
|
||||
|
||||
@@ -142,10 +142,6 @@ class RunningTasks {
|
||||
task.fillTaskInfo(rti, !mKeepIntentExtra);
|
||||
// Fill in some deprecated values
|
||||
rti.id = rti.taskId;
|
||||
|
||||
if (!mAllowed) {
|
||||
Task.trimIneffectiveInfo(task, rti);
|
||||
}
|
||||
return rti;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3476,27 +3476,6 @@ class Task extends TaskFragment {
|
||||
info.mTopActivityLocusId = topRecord != null ? topRecord.getLocusId() : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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(Task task, TaskInfo info) {
|
||||
final ActivityRecord baseActivity = task.getActivity(r -> !r.finishing,
|
||||
false /* traverseTopToBottom */);
|
||||
final int baseActivityUid =
|
||||
baseActivity != null ? baseActivity.getUid() : task.effectiveUid;
|
||||
|
||||
if (info.topActivityInfo != null
|
||||
&& task.effectiveUid != info.topActivityInfo.applicationInfo.uid) {
|
||||
info.topActivity = null;
|
||||
info.topActivityInfo = null;
|
||||
}
|
||||
|
||||
if (task.effectiveUid != baseActivityUid) {
|
||||
info.baseActivity = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable PictureInPictureParams getPictureInPictureParams() {
|
||||
return getPictureInPictureParams(getTopMostTask());
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
|
||||
import static android.content.pm.ActivityInfo.LAUNCH_MULTIPLE;
|
||||
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE;
|
||||
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
|
||||
import static android.os.Process.NOBODY_UID;
|
||||
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
|
||||
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
|
||||
@@ -1221,35 +1220,21 @@ public class RecentTasksTest extends WindowTestsBase {
|
||||
|
||||
@Test
|
||||
public void testCreateRecentTaskInfo_detachedTask() {
|
||||
final Task task = createTaskBuilder(".Task").build();
|
||||
new ActivityBuilder(mSupervisor.mService)
|
||||
.setTask(task)
|
||||
.setUid(NOBODY_UID)
|
||||
.setComponent(new ComponentName("com.foo", ".BarActivity"))
|
||||
.build();
|
||||
final Task task = createTaskBuilder(".Task").setCreateActivity(true).build();
|
||||
final TaskDisplayArea tda = task.getDisplayArea();
|
||||
|
||||
assertTrue(task.isAttached());
|
||||
assertTrue(task.supportsMultiWindow());
|
||||
|
||||
RecentTaskInfo info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
|
||||
true /* getTasksAllowed */);
|
||||
RecentTaskInfo info = mRecentTasks.createRecentTaskInfo(task, true);
|
||||
|
||||
assertTrue(info.supportsMultiWindow);
|
||||
assertTrue(info.supportsSplitScreenMultiWindow);
|
||||
|
||||
info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
|
||||
false /* getTasksAllowed */);
|
||||
|
||||
assertTrue(info.topActivity == null);
|
||||
assertTrue(info.topActivityInfo == null);
|
||||
assertTrue(info.baseActivity == null);
|
||||
|
||||
// The task can be put in split screen even if it is not attached now.
|
||||
task.removeImmediately();
|
||||
|
||||
info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
|
||||
true /* getTasksAllowed */);
|
||||
info = mRecentTasks.createRecentTaskInfo(task, true);
|
||||
|
||||
assertTrue(info.supportsMultiWindow);
|
||||
assertTrue(info.supportsSplitScreenMultiWindow);
|
||||
@@ -1259,8 +1244,7 @@ public class RecentTasksTest extends WindowTestsBase {
|
||||
doReturn(false).when(tda).supportsNonResizableMultiWindow();
|
||||
doReturn(false).when(task).isResizeable();
|
||||
|
||||
info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
|
||||
true /* getTasksAllowed */);
|
||||
info = mRecentTasks.createRecentTaskInfo(task, true);
|
||||
|
||||
assertFalse(info.supportsMultiWindow);
|
||||
assertFalse(info.supportsSplitScreenMultiWindow);
|
||||
@@ -1269,8 +1253,7 @@ public class RecentTasksTest extends WindowTestsBase {
|
||||
// the device supports it.
|
||||
doReturn(true).when(tda).supportsNonResizableMultiWindow();
|
||||
|
||||
info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
|
||||
true /* getTasksAllowed */);
|
||||
info = mRecentTasks.createRecentTaskInfo(task, true);
|
||||
|
||||
assertTrue(info.supportsMultiWindow);
|
||||
assertTrue(info.supportsSplitScreenMultiWindow);
|
||||
|
||||
Reference in New Issue
Block a user