Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8227573 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Merge cherrypicks of ['googleplex-android-review.googlesource.com/23543234',...

Merge cherrypicks of ['googleplex-android-review.googlesource.com/23543234', 'googleplex-android-review.googlesource.com/23554146'] into sparse-10316531-L99500000961260703.
SPARSE_CHANGE: I835dd545a01eb2fd7990e0fd5ad51bac0e4b1f33
SPARSE_CHANGE: I2ee30dfa5e4170272b5353f270a69b38750a0bd5

Change-Id: I3e40b22e7022dea212a7d24559dbaaa345874176
parents 7e9e7008 3f442007
Loading
Loading
Loading
Loading
+23 −11
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ public class IconCache extends BaseIconCache {
    private final UserCache mUserManager;
    private final InstantAppResolver mInstantAppResolver;
    private final IconProvider mIconProvider;
    private final HandlerRunnable mCancelledRunnable;

    private final SparseArray<BitmapInfo> mWidgetCategoryBitmapInfos;

@@ -121,6 +122,10 @@ public class IconCache extends BaseIconCache {
        mInstantAppResolver = InstantAppResolver.newInstance(mContext);
        mIconProvider = iconProvider;
        mWidgetCategoryBitmapInfos = new SparseArray<>();

        mCancelledRunnable = new HandlerRunnable(
                mWorkerHandler, () -> null, MAIN_EXECUTOR, c -> { });
        mCancelledRunnable.cancel();
    }

    @Override
@@ -176,23 +181,30 @@ public class IconCache extends BaseIconCache {
    public HandlerRunnable updateIconInBackground(final ItemInfoUpdateReceiver caller,
            final ItemInfoWithIcon info) {
        Preconditions.assertUIThread();
        Supplier<ItemInfoWithIcon> task;
        if (info instanceof AppInfo || info instanceof WorkspaceItemInfo) {
            task = () -> {
                getTitleAndIcon(info, false);
                return info;
            };
        } else if (info instanceof PackageItemInfo) {
            task = () -> {
                getTitleAndIconForApp((PackageItemInfo) info, false);
                return info;
            };
        } else {
            Log.i(TAG, "Icon update not supported for "
                    + info == null ? "null" : info.getClass().getName());
            return mCancelledRunnable;
        }

        if (mPendingIconRequestCount <= 0) {
            MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND);
        }
        mPendingIconRequestCount++;

        HandlerRunnable<ItemInfoWithIcon> request = new HandlerRunnable<>(mWorkerHandler,
                () -> {
                    if (info instanceof AppInfo || info instanceof WorkspaceItemInfo) {
                        getTitleAndIcon(info, false);
                    } else if (info instanceof PackageItemInfo) {
                        getTitleAndIconForApp((PackageItemInfo) info, false);
                    }
                    return info;
                },
                MAIN_EXECUTOR,
                caller::reapplyItemInfo,
                this::onIconRequestEnd);
                task, MAIN_EXECUTOR, caller::reapplyItemInfo, this::onIconRequestEnd);
        Utilities.postAsyncCallback(mWorkerHandler, request);
        return request;
    }