summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaurav Bhola <gauravbhola@google.com>2023-11-02 16:21:40 -0700
committerGaurav Bhola <gauravbhola@google.com>2023-11-16 21:20:09 +0000
commit4f273cda1c1fe20cdead01b1de31653254dbdafb (patch)
treee8aab3b76a280bde5b93ac68f0aece375156e4b2
parent48837535a0fc6ccd7c5e56f24de4cd477068727c (diff)
downloadservices-4f273cda1c1fe20cdead01b1de31653254dbdafb.tar.gz
Handle the case where root task could be null.
- If a root task is quickly destroyed, conerting its token to task object will return null. - Handle that case as it happens in a few Activity related tests. Bug: 297060765 Bug: 299972488 Test: atest AssistantStackTests Test: atest StartActivityTests (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:f384fa30fbf13ec5b1721bc0e52e1065be4cbed2) Merged-In: I179055fd434656c8116661b9f39adfdcef249ce7 Change-Id: I179055fd434656c8116661b9f39adfdcef249ce7
-rw-r--r--builtInServices/api/module-lib-current.txt2
-rw-r--r--builtInServices/src/com/android/server/wm/TaskWrapper.java4
-rw-r--r--updatableServices/src/com/android/server/wm/CarActivityInterceptorUpdatableImpl.java4
3 files changed, 8 insertions, 2 deletions
diff --git a/builtInServices/api/module-lib-current.txt b/builtInServices/api/module-lib-current.txt
index f72c56d..b6e285f 100644
--- a/builtInServices/api/module-lib-current.txt
+++ b/builtInServices/api/module-lib-current.txt
@@ -142,7 +142,7 @@ package com.android.server.wm {
}
public final class TaskWrapper {
- method public static com.android.server.wm.TaskWrapper createFromToken(@NonNull android.os.IBinder);
+ method @Nullable public static com.android.server.wm.TaskWrapper createFromToken(@NonNull android.os.IBinder);
method public com.android.server.wm.TaskWrapper getRootTask();
method public com.android.server.wm.TaskDisplayAreaWrapper getTaskDisplayArea();
method public int getUserId();
diff --git a/builtInServices/src/com/android/server/wm/TaskWrapper.java b/builtInServices/src/com/android/server/wm/TaskWrapper.java
index 448ab62..0d4125c 100644
--- a/builtInServices/src/com/android/server/wm/TaskWrapper.java
+++ b/builtInServices/src/com/android/server/wm/TaskWrapper.java
@@ -35,14 +35,16 @@ public final class TaskWrapper {
}
/** @hide */
+ @Nullable
public static TaskWrapper create(@Nullable Task task) {
if (task == null) return null;
return new TaskWrapper(task);
}
/** Creates an instance of {@link TaskWrapper} based on the task's remote {@code token}. */
+ @Nullable
public static TaskWrapper createFromToken(@NonNull IBinder token) {
- return new TaskWrapper((Task) WindowContainer.fromBinder(token));
+ return create((Task) WindowContainer.fromBinder(token));
}
/**
diff --git a/updatableServices/src/com/android/server/wm/CarActivityInterceptorUpdatableImpl.java b/updatableServices/src/com/android/server/wm/CarActivityInterceptorUpdatableImpl.java
index c5beffb..21a92e9 100644
--- a/updatableServices/src/com/android/server/wm/CarActivityInterceptorUpdatableImpl.java
+++ b/updatableServices/src/com/android/server/wm/CarActivityInterceptorUpdatableImpl.java
@@ -124,6 +124,10 @@ public final class CarActivityInterceptorUpdatableImpl implements CarActivityInt
private boolean isRootTaskUserSameAsActivityUser(IBinder rootTaskToken,
ActivityInterceptorInfoWrapper activityInterceptorInfoWrapper) {
TaskWrapper rootTask = TaskWrapper.createFromToken(rootTaskToken);
+ if (rootTask == null) {
+ Slogf.w(TAG, "Root task not found.");
+ return false;
+ }
int userIdFromActivity = activityInterceptorInfoWrapper.getUserId();
int userIdFromRootTask = mBuiltIn.getUserAssignedToDisplay(rootTask
.getTaskDisplayArea().getDisplay().getDisplayId());