Merge "Fix NPE and make getTask return Optional" into ub-launcher3-master
diff --git a/go/quickstep/src/com/android/quickstep/TaskActionController.java b/go/quickstep/src/com/android/quickstep/TaskActionController.java
index 71bee91..40195eb 100644
--- a/go/quickstep/src/com/android/quickstep/TaskActionController.java
+++ b/go/quickstep/src/com/android/quickstep/TaskActionController.java
@@ -42,7 +42,7 @@
* @param viewHolder the task view holder to launch
*/
public void launchTask(TaskHolder viewHolder) {
- if (viewHolder.getTask() == null) {
+ if (!viewHolder.getTask().isPresent()) {
return;
}
TaskItemView itemView = (TaskItemView) (viewHolder.itemView);
@@ -53,8 +53,9 @@
int height = v.getMeasuredHeight();
ActivityOptions opts = ActivityOptions.makeClipRevealAnimation(v, left, top, width, height);
- ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(viewHolder.getTask().key,
- opts, null /* resultCallback */, null /* resultCallbackHandler */);
+ ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(
+ viewHolder.getTask().get().key, opts, null /* resultCallback */,
+ null /* resultCallbackHandler */);
}
/**
@@ -63,11 +64,11 @@
* @param viewHolder the task view holder to remove
*/
public void removeTask(TaskHolder viewHolder) {
- if (viewHolder.getTask() == null) {
+ if (!viewHolder.getTask().isPresent()) {
return;
}
int position = viewHolder.getAdapterPosition();
- Task task = viewHolder.getTask();
+ Task task = viewHolder.getTask().get();
ActivityManagerWrapper.getInstance().removeTask(task.key.id);
mLoader.removeTask(task);
mAdapter.notifyItemRemoved(position);
diff --git a/go/quickstep/src/com/android/quickstep/TaskAdapter.java b/go/quickstep/src/com/android/quickstep/TaskAdapter.java
index 7e7f278..18d5877 100644
--- a/go/quickstep/src/com/android/quickstep/TaskAdapter.java
+++ b/go/quickstep/src/com/android/quickstep/TaskAdapter.java
@@ -28,6 +28,7 @@
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
/**
* Recycler view adapter that dynamically inflates and binds {@link TaskHolder} instances with the
@@ -109,13 +110,13 @@
holder.bindTask(task, willAnimate /* willAnimate */);
mLoader.loadTaskIconAndLabel(task, () -> {
// Ensure holder still has the same task.
- if (Objects.equals(task, holder.getTask())) {
+ if (Objects.equals(Optional.of(task), holder.getTask())) {
holder.getTaskItemView().setIcon(task.icon);
holder.getTaskItemView().setLabel(task.titleDescription);
}
});
mLoader.loadTaskThumbnail(task, () -> {
- if (Objects.equals(task, holder.getTask())) {
+ if (Objects.equals(Optional.of(task), holder.getTask())) {
holder.getTaskItemView().setThumbnail(task.thumbnail.thumbnail);
}
});
diff --git a/go/quickstep/src/com/android/quickstep/TaskHolder.java b/go/quickstep/src/com/android/quickstep/TaskHolder.java
index a3fa5c1..5755df4 100644
--- a/go/quickstep/src/com/android/quickstep/TaskHolder.java
+++ b/go/quickstep/src/com/android/quickstep/TaskHolder.java
@@ -18,12 +18,13 @@
import android.graphics.Bitmap;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.android.quickstep.views.TaskItemView;
import com.android.systemui.shared.recents.model.Task;
+import java.util.Optional;
+
/**
* A recycler view holder that holds the task view and binds {@link Task} content (app title, icon,
* etc.) to the view.
@@ -81,7 +82,7 @@
*
* @return the current task
*/
- public @Nullable Task getTask() {
- return mTask;
+ public Optional<Task> getTask() {
+ return Optional.ofNullable(mTask);
}
}
diff --git a/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java b/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java
index 9688fdf..a0efce4 100644
--- a/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java
+++ b/go/quickstep/src/com/android/quickstep/views/IconRecentsView.java
@@ -61,6 +61,8 @@
import com.android.quickstep.TaskSwipeCallback;
import com.android.systemui.shared.recents.model.Task;
+import java.util.Optional;
+
/**
* Root view for the icon recents view. Acts as the main interface to the rest of the Launcher code
* base.
@@ -120,8 +122,9 @@
TaskItemView[] itemViews = getTaskViews();
for (TaskItemView taskView : itemViews) {
TaskHolder taskHolder = (TaskHolder) mTaskRecyclerView.getChildViewHolder(taskView);
- Task task = taskHolder.getTask();
- if (taskHolder.getTask().key.id == taskId) {
+ Optional<Task> optTask = taskHolder.getTask();
+ if (optTask.filter(task -> task.key.id == taskId).isPresent()) {
+ Task task = optTask.get();
// Update thumbnail on the task.
task.thumbnail = thumbnailData;
taskView.setThumbnail(thumbnailData.thumbnail);