Request high res icons for app pairs after all workspace items processed

* TL;DR Loading workspace icons only requests high res icons for apps
on workspace or in hotseat, not for folders or app pairs. They need to
request that separately
* See notes on bug for root cause

Test: Created many app pairs, empty icons does not repro.
If I remove my change issue consistently repros, not a race condition
Fixes: 323106492

Change-Id: I05ba5e8e8b0eddd4041642f89d06deff85511e40
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java
index 71ab51c..17cef90 100644
--- a/src/com/android/launcher3/model/LoaderTask.java
+++ b/src/com/android/launcher3/model/LoaderTask.java
@@ -475,12 +475,24 @@
             mItemsDeleted = c.commitDeleted();
 
             processFolderItems();
+            processAppPairItems();
 
             c.commitRestoredItems();
         }
     }
 
     /**
+     * After all items have been processed and added to the BgDataModel, this method requests
+     * high-res icons for the items that are part of an app pair
+     */
+    private void processAppPairItems() {
+        mBgDataModel.workspaceItems.stream()
+                .filter((itemInfo -> itemInfo.itemType == ITEM_TYPE_APP_PAIR))
+                .forEach(fi -> ((FolderInfo) fi).contents.forEach(item ->
+                        mIconCache.getTitleAndIcon(item, false /*useLowResIcon*/)));
+    }
+
+    /**
      * Initialized the UserManagerState, and determines which users are unlocked. Additionally, if
      * the user is unlocked, it queries LauncherAppsService for pinned shortcuts and stores the
      * result in a class variable to be used in other methods while processing workspace items.