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

Commit d98d5ebe authored by Hyunyoung Song's avatar Hyunyoung Song
Browse files

Fix a potential concurrency issue for loading CDB file

Bug: 158919530

Change-Id: I00ddbaeebaed3aa669948cde7fbac0cf4ad86301
parent adb6352b
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import com.android.launcher3.folder.FolderNameProvider;
import com.android.launcher3.logging.InstanceId;
import com.android.launcher3.logging.InstanceIdSequence;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.util.Executors;

/**
 * Interface defining an object that can receive a drag.
@@ -84,7 +85,9 @@ public interface DropTarget {

        public DragObject(Context context) {
            if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
                Executors.MODEL_EXECUTOR.post(() -> {
                    folderNameProvider = FolderNameProvider.newInstance(context);
                });
            }
        }

+2 −1
Original line number Diff line number Diff line
@@ -1005,7 +1005,8 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo
        if (!items.isEmpty()) {
            mLauncher.getModelWriter().moveItemsInDatabase(items, mInfo.id, 0);
        }
        if (FeatureFlags.FOLDER_NAME_SUGGEST.get() && !isBind) {
        if (FeatureFlags.FOLDER_NAME_SUGGEST.get() && !isBind
                && total > 1 /* no need to update if there's one icon */) {
            Executors.MODEL_EXECUTOR.post(() -> {
                FolderNameInfo[] nameInfos =
                        new FolderNameInfo[FolderNameProvider.SUGGEST_MAX];
+1 −1
Original line number Diff line number Diff line
@@ -409,7 +409,7 @@ public class FolderIcon extends FrameLayout implements FolderListener, IconLabel
            FolderNameInfo[] nameInfos =
                    new FolderNameInfo[FolderNameProvider.SUGGEST_MAX];
            if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
                Executors.UI_HELPER_EXECUTOR.post(() -> {
                Executors.MODEL_EXECUTOR.post(() -> {
                    d.folderNameProvider.getSuggestedFolderName(
                            getContext(), mInfo.contents, nameInfos);
                    showFinalView(finalIndex, item, nameInfos, d.logInstanceId);
+4 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.launcher3.model.data.AppInfo;
import com.android.launcher3.model.data.FolderInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.util.IntSparseArrayMap;
import com.android.launcher3.util.Preconditions;
import com.android.launcher3.util.ResourceBasedOverride;

import java.util.ArrayList;
@@ -64,6 +65,7 @@ public class FolderNameProvider implements ResourceBasedOverride {
    public static FolderNameProvider newInstance(Context context) {
        FolderNameProvider fnp = Overrides.getObject(FolderNameProvider.class,
                context.getApplicationContext(), R.string.folder_name_provider_class);
        Preconditions.assertWorkerThread();
        fnp.load(context);

        return fnp;
@@ -71,6 +73,7 @@ public class FolderNameProvider implements ResourceBasedOverride {

    public static FolderNameProvider newInstance(Context context, List<AppInfo> appInfos,
            IntSparseArrayMap<FolderInfo> folderInfos) {
        Preconditions.assertWorkerThread();
        FolderNameProvider fnp = Overrides.getObject(FolderNameProvider.class,
                context.getApplicationContext(), R.string.folder_name_provider_class);
        fnp.load(appInfos, folderInfos);
@@ -94,7 +97,7 @@ public class FolderNameProvider implements ResourceBasedOverride {
    public void getSuggestedFolderName(Context context,
            ArrayList<WorkspaceItemInfo> workspaceItemInfos,
            FolderNameInfo[] nameInfos) {

        Preconditions.assertWorkerThread();
        if (DEBUG) {
            Log.d(TAG, "getSuggestedFolderName:" + Arrays.toString(nameInfos));
        }