diff options
| author | 2021-01-28 09:26:28 -0800 | |
|---|---|---|
| committer | 2021-01-28 13:34:04 -0800 | |
| commit | 86df2c575789622a5073ba2f2d0f823a52f9bb1a (patch) | |
| tree | 18c37ca32c34e6913f4c6d533b42eb089ac00b59 | |
| parent | 9b9486ebf298438c3144bbc9dd27102780f73b52 (diff) | |
Fix NPE in TaskView.
- TaskInfo can be null before Listener is executed.
Bug: 178710250
Test: atest CarDevicePolicyManagerTest
Change-Id: I90cd57dbd01692b86924ec1b762e31f91a6cd6e0
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/TaskView.java | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/TaskView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/TaskView.java index 1df2a4a9030d..bb8a97344664 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/TaskView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/TaskView.java @@ -225,8 +225,9 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback, mTaskOrganizer.applyTransaction(wct); // TODO(b/151449487): Only call callback once we enable synchronization if (mListener != null) { + final int taskId = mTaskInfo.taskId; mListenerExecutor.execute(() -> { - mListener.onTaskVisibilityChanged(mTaskInfo.taskId, mSurfaceCreated); + mListener.onTaskVisibilityChanged(taskId, mSurfaceCreated); }); } } @@ -256,8 +257,10 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback, } if (mListener != null) { + final int taskId = taskInfo.taskId; + final ComponentName baseActivity = taskInfo.baseActivity; mListenerExecutor.execute(() -> { - mListener.onTaskCreated(taskInfo.taskId, taskInfo.baseActivity); + mListener.onTaskCreated(taskId, baseActivity); }); } } @@ -267,8 +270,9 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback, if (mTaskToken == null || !mTaskToken.equals(taskInfo.token)) return; if (mListener != null) { + final int taskId = taskInfo.taskId; mListenerExecutor.execute(() -> { - mListener.onTaskRemovalStarted(taskInfo.taskId); + mListener.onTaskRemovalStarted(taskId); }); } mTaskOrganizer.setInterceptBackPressedOnTaskRoot(mTaskToken, false); @@ -289,8 +293,9 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback, public void onBackPressedOnTaskRoot(ActivityManager.RunningTaskInfo taskInfo) { if (mTaskToken == null || !mTaskToken.equals(taskInfo.token)) return; if (mListener != null) { + final int taskId = taskInfo.taskId; mListenerExecutor.execute(() -> { - mListener.onBackPressedOnTaskRoot(taskInfo.taskId); + mListener.onBackPressedOnTaskRoot(taskId); }); } } |