Merge "Merge "Protect against NPE when updating state" into udc-dev am: ec5540c745 am: 182ed04f7e" into udc-d1-dev-plus-aosp

This commit is contained in:
Automerger Merge Worker
2023-05-02 21:47:19 +00:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 1 deletions

View File

@@ -202,6 +202,7 @@ public class TaskViewTransitions implements Transitions.TransitionHandler {
} }
void setTaskViewVisible(TaskViewTaskController taskView, boolean visible) { void setTaskViewVisible(TaskViewTaskController taskView, boolean visible) {
if (mTaskViews.get(taskView) == null) return;
if (mTaskViews.get(taskView).mVisible == visible) return; if (mTaskViews.get(taskView).mVisible == visible) return;
if (taskView.getTaskInfo() == null) { if (taskView.getTaskInfo() == null) {
// Nothing to update, task is not yet available // Nothing to update, task is not yet available
@@ -220,17 +221,19 @@ public class TaskViewTransitions implements Transitions.TransitionHandler {
void updateBoundsState(TaskViewTaskController taskView, Rect boundsOnScreen) { void updateBoundsState(TaskViewTaskController taskView, Rect boundsOnScreen) {
TaskViewRequestedState state = mTaskViews.get(taskView); TaskViewRequestedState state = mTaskViews.get(taskView);
if (state == null) return;
state.mBounds.set(boundsOnScreen); state.mBounds.set(boundsOnScreen);
} }
void updateVisibilityState(TaskViewTaskController taskView, boolean visible) { void updateVisibilityState(TaskViewTaskController taskView, boolean visible) {
TaskViewRequestedState state = mTaskViews.get(taskView); TaskViewRequestedState state = mTaskViews.get(taskView);
if (state == null) return;
state.mVisible = visible; state.mVisible = visible;
} }
void setTaskBounds(TaskViewTaskController taskView, Rect boundsOnScreen) { void setTaskBounds(TaskViewTaskController taskView, Rect boundsOnScreen) {
TaskViewRequestedState state = mTaskViews.get(taskView); TaskViewRequestedState state = mTaskViews.get(taskView);
if (Objects.equals(boundsOnScreen, state.mBounds)) { if (state == null || Objects.equals(boundsOnScreen, state.mBounds)) {
return; return;
} }
state.mBounds.set(boundsOnScreen); state.mBounds.set(boundsOnScreen);

View File

@@ -179,4 +179,23 @@ public class TaskViewTransitionsTest extends ShellTestCase {
mTaskViewTransitions.findPending(mTaskViewTaskController, TRANSIT_CHANGE); mTaskViewTransitions.findPending(mTaskViewTaskController, TRANSIT_CHANGE);
assertThat(pendingBounds2).isNull(); assertThat(pendingBounds2).isNull();
} }
@Test
public void testSetTaskVisibility_taskRemoved_noNPE() {
mTaskViewTransitions.removeTaskView(mTaskViewTaskController);
assumeTrue(Transitions.ENABLE_SHELL_TRANSITIONS);
mTaskViewTransitions.setTaskViewVisible(mTaskViewTaskController, false);
}
@Test
public void testSetTaskBounds_taskRemoved_noNPE() {
mTaskViewTransitions.removeTaskView(mTaskViewTaskController);
assumeTrue(Transitions.ENABLE_SHELL_TRANSITIONS);
mTaskViewTransitions.setTaskBounds(mTaskViewTaskController,
new Rect(0, 0, 100, 100));
}
} }