From 56329b03cfd7a3708c5cd741fd5e581a8f5f6963 Mon Sep 17 00:00:00 2001 From: mattsziklay Date: Fri, 28 Jul 2023 16:06:44 -0700 Subject: [PATCH] Create IconView for generated TaskIdAttributeContainers. When creating a TaskIdAttributeContainer for a desktop task, creates an IconView to avoid an NPE when picking a desktop app as the second split target (see TaskBarUIController#triggerSecondAppForSplit). Test: Select an app open in Desktop Mode as the second split target. Bug: 279586624 Change-Id: I1949d923523b6e9e6112b3e909edf1e8d632b3e2 --- .../quickstep/views/DesktopTaskView.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/views/DesktopTaskView.java b/quickstep/src/com/android/quickstep/views/DesktopTaskView.java index 83e99459ac..5f3fd0ca59 100644 --- a/quickstep/src/com/android/quickstep/views/DesktopTaskView.java +++ b/quickstep/src/com/android/quickstep/views/DesktopTaskView.java @@ -22,6 +22,7 @@ import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_UNDEFINED; import android.content.Context; +import android.content.pm.PackageManager; import android.graphics.Point; import android.graphics.Rect; import android.graphics.drawable.Drawable; @@ -43,6 +44,7 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.Utilities; +import com.android.launcher3.icons.IconProvider; import com.android.launcher3.util.RunnableList; import com.android.quickstep.RecentsModel; import com.android.quickstep.SystemUiProxy; @@ -220,7 +222,22 @@ public class DesktopTaskView extends TaskView { private TaskIdAttributeContainer createAttributeContainer(Task task, TaskThumbnailView thumbnailView) { - return new TaskIdAttributeContainer(task, thumbnailView, null, STAGE_POSITION_UNDEFINED); + return new TaskIdAttributeContainer(task, thumbnailView, createIconView(task), + STAGE_POSITION_UNDEFINED); + } + + private IconView createIconView(Task task) { + IconView iconView = new IconView(mContext); + PackageManager pm = mContext.getApplicationContext().getPackageManager(); + try { + IconProvider provider = new IconProvider(mContext); + Drawable appIcon = provider.getIcon(pm.getActivityInfo(task.topActivity, + PackageManager.ComponentInfoFlags.of(0))); + iconView.setDrawable(appIcon); + } catch (PackageManager.NameNotFoundException e) { + Log.w(TAG, "Package not found: " + task.topActivity.getPackageName(), e); + } + return iconView; } @Nullable