From 140124334a5f83ea8caabd72ebeac3587cf2a72b Mon Sep 17 00:00:00 2001 From: Shamali Patwa Date: Thu, 18 Apr 2024 18:16:38 +0000 Subject: [PATCH] Revert "When getting a widget provider by name, check all categories" This reverts commit 1f69351310f4f97c7498ece8c07e5519de0a45da. Reason for revert: Testing odd behavior between google app and pixel weather and duplicate items issue (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:7e5ed568b9f14570a67293827c5c7248b2ac975d) Merged-In: If181aa3e86969e8821b7e1cc765c3801f04489d2 Change-Id: If181aa3e86969e8821b7e1cc765c3801f04489d2 --- .../launcher3/dragndrop/AddItemActivity.java | 2 +- .../graphics/LauncherPreviewRenderer.java | 2 +- .../android/launcher3/icons/IconCache.java | 2 +- .../android/launcher3/model/WidgetsModel.java | 46 ++++++------------- .../launcher3/util/PackageUserKey.java | 4 -- .../launcher3/widget/WidgetSections.java | 2 +- 6 files changed, 18 insertions(+), 40 deletions(-) diff --git a/src/com/android/launcher3/dragndrop/AddItemActivity.java b/src/com/android/launcher3/dragndrop/AddItemActivity.java index 2873e73d24..05fdcef461 100644 --- a/src/com/android/launcher3/dragndrop/AddItemActivity.java +++ b/src/com/android/launcher3/dragndrop/AddItemActivity.java @@ -184,7 +184,7 @@ public class AddItemActivity extends BaseActivity // user sees TextView widgetAppName = findViewById(R.id.widget_appName); WidgetSections.WidgetSection section = targetApp.widgetCategory == NO_CATEGORY ? null - : WidgetSections.get(this).get(targetApp.widgetCategory); + : WidgetSections.getWidgetSections(this).get(targetApp.widgetCategory); widgetAppName.setText(section == null ? info.loadLabel(getPackageManager()) : getString(section.mSectionTitle)); diff --git a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java index 6bed9dcdd3..0e4b48e1c3 100644 --- a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java +++ b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java @@ -419,7 +419,7 @@ public class LauncherPreviewRenderer extends ContextWrapper private void inflateAndAddWidgets(LauncherAppWidgetInfo info, WidgetsModel widgetsModel) { WidgetItem widgetItem = widgetsModel.getWidgetProviderInfoByProviderName( - info.providerName, info.user, mContext); + info.providerName, info.user); if (widgetItem == null) { return; } diff --git a/src/com/android/launcher3/icons/IconCache.java b/src/com/android/launcher3/icons/IconCache.java index 5b9e61c84d..329f71777e 100644 --- a/src/com/android/launcher3/icons/IconCache.java +++ b/src/com/android/launcher3/icons/IconCache.java @@ -559,7 +559,7 @@ public class IconCache extends BaseIconCache { return; } - WidgetSection widgetSection = WidgetSections.get(mContext) + WidgetSection widgetSection = WidgetSections.getWidgetSections(mContext) .get(infoInOut.widgetCategory); infoInOut.title = mContext.getString(widgetSection.mSectionTitle); infoInOut.contentDescription = getUserBadgedLabel(infoInOut.title, infoInOut.user); diff --git a/src/com/android/launcher3/model/WidgetsModel.java b/src/com/android/launcher3/model/WidgetsModel.java index 519eeaa223..91ce5eabf5 100644 --- a/src/com/android/launcher3/model/WidgetsModel.java +++ b/src/com/android/launcher3/model/WidgetsModel.java @@ -18,7 +18,6 @@ import android.content.pm.PackageManager; import android.os.UserHandle; import android.util.Log; import android.util.Pair; -import android.util.SparseArray; import androidx.annotation.Nullable; import androidx.collection.ArrayMap; @@ -202,16 +201,8 @@ public class WidgetsModel { // add and update. mWidgetsList.putAll(rawWidgetsShortcuts.stream() .filter(new WidgetValidityCheck(app)) - .flatMap( - widgetItem -> getPackageUserKeys(app.getContext(), widgetItem) - .stream() - .map( - key -> new Pair<>( - packageItemInfoCache.getOrCreate(key), - widgetItem - ) - ) - ) + .flatMap(widgetItem -> getPackageUserKeys(app.getContext(), widgetItem).stream() + .map(key -> new Pair<>(packageItemInfoCache.getOrCreate(key), widgetItem))) .collect(groupingBy(pair -> pair.first, mapping(pair -> pair.second, toList())))); // Update each package entry @@ -249,26 +240,19 @@ public class WidgetsModel { } public WidgetItem getWidgetProviderInfoByProviderName( - ComponentName providerName, UserHandle user, Context context) { - SparseArray sections = WidgetSections.get( - context); + ComponentName providerName, UserHandle user) { if (!WIDGETS_ENABLED) { return null; } + List widgetsList = mWidgetsList.get( + new PackageItemInfo(providerName.getPackageName(), user)); + if (widgetsList == null) { + return null; + } - // Checking if we hav ea provider in any of the categories. - for (int i = 0; i < sections.size(); i++) { - PackageItemInfo key = new PackageItemInfo( - providerName.getPackageName(), - sections.get(i).mCategory, - user - ); - if (mWidgetsList.containsKey(key)) { - return mWidgetsList.get(key).stream().filter( - item -> item.componentName.equals(providerName) - ) - .findFirst() - .orElse(null); + for (WidgetItem item : widgetsList) { + if (item.componentName.equals(providerName)) { + return item; } } return null; @@ -302,12 +286,10 @@ public class WidgetsModel { categories.forEach(category -> { if (category == NO_CATEGORY) { packageUserKeys.add( - new PackageUserKey(item.componentName.getPackageName(), item.user) - ); + new PackageUserKey(item.componentName.getPackageName(), + item.user)); } else { - packageUserKeys.add( - new PackageUserKey(item.componentName.getPackageName(), category, item.user) - ); + packageUserKeys.add(new PackageUserKey(category, item.user)); } }); return packageUserKeys; diff --git a/src/com/android/launcher3/util/PackageUserKey.java b/src/com/android/launcher3/util/PackageUserKey.java index c1fb379605..92d97371e5 100644 --- a/src/com/android/launcher3/util/PackageUserKey.java +++ b/src/com/android/launcher3/util/PackageUserKey.java @@ -48,10 +48,6 @@ public class PackageUserKey { update(/* packageName= */ "", widgetCategory, user); } - public PackageUserKey(String packageName, int widgetCategory, UserHandle user) { - update(packageName, widgetCategory, user); - } - public void update(String packageName, UserHandle user) { update(packageName, NO_CATEGORY, user); } diff --git a/src/com/android/launcher3/widget/WidgetSections.java b/src/com/android/launcher3/widget/WidgetSections.java index f5fd2a9af9..c45b09591f 100644 --- a/src/com/android/launcher3/widget/WidgetSections.java +++ b/src/com/android/launcher3/widget/WidgetSections.java @@ -50,7 +50,7 @@ public final class WidgetSections { private static Map sWidgetsToCategories; /** Returns a list of widget sections that are shown in the widget picker. */ - public static synchronized SparseArray get(Context context) { + public static synchronized SparseArray getWidgetSections(Context context) { if (sWidgetSections != null) { return sWidgetSections; }