From 74d9fbd63519430faa94fd528dfcdba1ff6a7f0b Mon Sep 17 00:00:00 2001 From: Shamali P Date: Fri, 19 Jul 2024 21:07:05 +0000 Subject: [PATCH] Define widget picker data provider separate from popup provider Separate provider in ActivityContext and relevant implementations that open widget picker Bug: 353347512 Flag: EXEMPT BUGFIX Test: Unit test Change-Id: I55df3d9ce6ae9b7d0a310a8686b188618d229065 --- src/com/android/launcher3/Launcher.java | 10 ++++++++++ .../secondarydisplay/SecondaryDisplayLauncher.java | 7 +++++++ src/com/android/launcher3/views/ActivityContext.java | 9 +++++++++ .../launcher3/util/TestSandboxModelContextWrapper.java | 10 ++++++++++ 4 files changed, 36 insertions(+) diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 5949732c09..6c706bec09 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -266,6 +266,7 @@ import com.android.launcher3.widget.WidgetManagerHelper; import com.android.launcher3.widget.custom.CustomWidgetManager; import com.android.launcher3.widget.model.WidgetsListBaseEntry; import com.android.launcher3.widget.picker.WidgetsFullSheet; +import com.android.launcher3.widget.picker.model.WidgetPickerDataProvider; import com.android.launcher3.widget.util.WidgetSizes; import com.android.systemui.plugins.LauncherOverlayPlugin; import com.android.systemui.plugins.PluginListener; @@ -371,6 +372,7 @@ public class Launcher extends StatefulActivity private LauncherAccessibilityDelegate mAccessibilityDelegate; private PopupDataProvider mPopupDataProvider; + private WidgetPickerDataProvider mWidgetPickerDataProvider; // We only want to get the SharedPreferences once since it does an FS stat each time we get // it from the context. @@ -532,6 +534,7 @@ public class Launcher extends StatefulActivity mFocusHandler, new CellLayout(mWorkspace.getContext(), mWorkspace)); mPopupDataProvider = new PopupDataProvider(this::updateNotificationDots); + mWidgetPickerDataProvider = new WidgetPickerDataProvider(); boolean internalStateHandled = ACTIVITY_TRACKER.handleCreate(this); if (internalStateHandled) { @@ -2702,6 +2705,7 @@ public class Launcher extends StatefulActivity mDragLayer.dump(prefix, writer); mStateManager.dump(prefix, writer); mPopupDataProvider.dump(prefix, writer); + mWidgetPickerDataProvider.dump(prefix, writer); mDeviceProfile.dump(this, prefix, writer); mAppsView.getAppsStore().dump(prefix, writer); @@ -3011,6 +3015,12 @@ public class Launcher extends StatefulActivity return mPopupDataProvider; } + @NonNull + @Override + public WidgetPickerDataProvider getWidgetPickerDataProvider() { + return mWidgetPickerDataProvider; + } + @Override public DotInfo getDotInfoForItem(ItemInfo info) { return mPopupDataProvider.getDotInfoForItem(info); diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java index 0299a23382..9b3292d3ff 100644 --- a/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java +++ b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java @@ -59,6 +59,7 @@ import com.android.launcher3.util.PackageUserKey; import com.android.launcher3.util.Preconditions; import com.android.launcher3.util.Themes; import com.android.launcher3.views.BaseDragLayer; +import com.android.launcher3.widget.picker.model.WidgetPickerDataProvider; import java.util.HashMap; import java.util.Map; @@ -76,6 +77,7 @@ public class SecondaryDisplayLauncher extends BaseDraggingActivity private View mAppsButton; private PopupDataProvider mPopupDataProvider; + private WidgetPickerDataProvider mWidgetPickerDataProvider; private boolean mAppDrawerShown = false; @@ -314,6 +316,11 @@ public class SecondaryDisplayLauncher extends BaseDraggingActivity return mPopupDataProvider; } + @Override + public WidgetPickerDataProvider getWidgetPickerDataProvider() { + return mWidgetPickerDataProvider; + } + @Override public OnClickListener getItemOnClickListener() { return this::onIconClicked; diff --git a/src/com/android/launcher3/views/ActivityContext.java b/src/com/android/launcher3/views/ActivityContext.java index cfac91a813..d3160e0db3 100644 --- a/src/com/android/launcher3/views/ActivityContext.java +++ b/src/com/android/launcher3/views/ActivityContext.java @@ -81,6 +81,7 @@ import com.android.launcher3.util.Preconditions; import com.android.launcher3.util.RunnableList; import com.android.launcher3.util.SplitConfigurationOptions; import com.android.launcher3.util.ViewCache; +import com.android.launcher3.widget.picker.model.WidgetPickerDataProvider; import java.util.List; @@ -266,6 +267,14 @@ public interface ActivityContext { return null; } + /** + * Returns the {@link WidgetPickerDataProvider} that can be used to read widgets for display. + */ + @Nullable + default WidgetPickerDataProvider getWidgetPickerDataProvider() { + return null; + } + @Nullable default StringCache getStringCache() { return null; diff --git a/tests/multivalentTests/src/com/android/launcher3/util/TestSandboxModelContextWrapper.java b/tests/multivalentTests/src/com/android/launcher3/util/TestSandboxModelContextWrapper.java index 3f37563302..71637f190f 100644 --- a/tests/multivalentTests/src/com/android/launcher3/util/TestSandboxModelContextWrapper.java +++ b/tests/multivalentTests/src/com/android/launcher3/util/TestSandboxModelContextWrapper.java @@ -32,6 +32,7 @@ import com.android.launcher3.model.BgDataModel; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.pm.UserCache; import com.android.launcher3.popup.PopupDataProvider; +import com.android.launcher3.widget.picker.model.WidgetPickerDataProvider; import java.util.Map; import java.util.concurrent.CountDownLatch; @@ -57,6 +58,8 @@ public class TestSandboxModelContextWrapper extends ActivityContextWrapper imple protected ActivityAllAppsContainerView mAppsView; private final PopupDataProvider mPopupDataProvider = new PopupDataProvider(i -> {}); + private final WidgetPickerDataProvider mWidgetPickerDataProvider = + new WidgetPickerDataProvider(); protected final UserCache mUserCache; public TestSandboxModelContextWrapper(SandboxContext base) { @@ -76,12 +79,19 @@ public class TestSandboxModelContextWrapper extends ActivityContextWrapper imple mAppsList = mAppsView.getPersonalAppList(); mAllAppsStore = mAppsView.getAppsStore(); } + @Nullable @Override public PopupDataProvider getPopupDataProvider() { return mPopupDataProvider; } + @Nullable + @Override + public WidgetPickerDataProvider getWidgetPickerDataProvider() { + return mWidgetPickerDataProvider; + } + @Override public ActivityAllAppsContainerView getAppsView() { return mAppsView;