summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfbaron <fbaron@google.com>2023-05-30 10:28:45 -0700
committerFederico Baron <fbaron@google.com>2023-05-30 18:46:55 +0000
commitbbab64e00cad8543a9a24133fd58e3f418d03e1c (patch)
treedf2cfb8d27a9f0b502df321b1930128da9a59c35 /src
parent57eaf86f8ded70c9bb448459e33621c4696a8755 (diff)
downloadLauncher3-bbab64e00cad8543a9a24133fd58e3f418d03e1c.tar.gz
Fix widget picker crash
It looks like if shouldClearVisibleEntries() evaluates to true and we clear mVisibleEntries, we get an Inconsistency IndexOutOfBounds error, the same as the one reported in the crash. Bug: 276766307 Test: Verify that with these changes the widgets still update correctly when changing languages Change-Id: I9f92e61d967aab2c8297cfc2fb4b04193df67650
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/widget/picker/WidgetsListAdapter.java28
1 files changed, 0 insertions, 28 deletions
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java
index 723ea17147..8dd1de4ac8 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java
@@ -42,7 +42,6 @@ import androidx.recyclerview.widget.RecyclerView.Adapter;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import com.android.launcher3.R;
-import com.android.launcher3.model.data.PackageItemInfo;
import com.android.launcher3.recyclerview.ViewHolderBinder;
import com.android.launcher3.util.LabelComparator;
import com.android.launcher3.util.PackageUserKey;
@@ -58,7 +57,6 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-import java.util.Map;
import java.util.OptionalInt;
import java.util.function.IntSupplier;
import java.util.function.Predicate;
@@ -174,9 +172,6 @@ public class WidgetsListAdapter extends Adapter<ViewHolder> implements OnHeaderC
mAllEntries.clear();
mAllEntries.add(new WidgetListSpaceEntry());
tempEntries.stream().sorted(mRowComparator).forEach(mAllEntries::add);
- if (shouldClearVisibleEntries()) {
- mVisibleEntries.clear();
- }
updateVisibleEntries();
}
@@ -426,29 +421,6 @@ public class WidgetsListAdapter extends Adapter<ViewHolder> implements OnHeaderC
updateVisibleEntries();
}
- /**
- * Returns {@code true} if there is a change in {@link #mAllEntries} that results in an
- * invalidation of {@link #mVisibleEntries}. e.g. there is change in the device language.
- */
- private boolean shouldClearVisibleEntries() {
- Map<PackageUserKey, PackageItemInfo> packagesInfo =
- mAllEntries.stream()
- .filter(entry -> entry instanceof WidgetsListHeaderEntry)
- .map(entry -> entry.mPkgItem)
- .collect(Collectors.toMap(
- entry -> PackageUserKey.fromPackageItemInfo(entry),
- entry -> entry));
- for (WidgetsListBaseEntry visibleEntry: mVisibleEntries) {
- PackageUserKey key = PackageUserKey.fromPackageItemInfo(visibleEntry.mPkgItem);
- PackageItemInfo packageItemInfo = packagesInfo.get(key);
- if (packageItemInfo != null
- && !visibleEntry.mPkgItem.title.equals(packageItemInfo.title)) {
- return true;
- }
- }
- return false;
- }
-
/** Comparator for sorting WidgetListRowEntry based on package title. */
public static class WidgetListBaseRowEntryComparator implements
Comparator<WidgetsListBaseEntry> {