Merge "Moving widgetFilter to dagger" into main
diff --git a/quickstep/src/com/android/launcher3/WidgetPickerActivity.java b/quickstep/src/com/android/launcher3/WidgetPickerActivity.java
index f992913..7f3e615 100644
--- a/quickstep/src/com/android/launcher3/WidgetPickerActivity.java
+++ b/quickstep/src/com/android/launcher3/WidgetPickerActivity.java
@@ -25,7 +25,6 @@
import static java.lang.Math.max;
import static java.lang.Math.min;
-import static java.util.Collections.emptyList;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProviderInfo;
@@ -48,7 +47,6 @@
import com.android.launcher3.model.StringCache;
import com.android.launcher3.model.WidgetItem;
import com.android.launcher3.model.WidgetPredictionsRequester;
-import com.android.launcher3.model.WidgetsFilterDataProvider;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.model.data.PackageItemInfo;
@@ -121,9 +119,7 @@
private LauncherAppState mApp;
private StringCache mStringCache;
private WidgetPredictionsRequester mWidgetPredictionsRequester;
- private final WidgetPickerDataProvider mWidgetPickerDataProvider =
- new WidgetPickerDataProvider();
- private WidgetsFilterDataProvider mWidgetsFilterDataProvider;
+ private WidgetPickerDataProvider mWidgetPickerDataProvider;
private int mDesiredWidgetWidth;
private int mDesiredWidgetHeight;
@@ -170,7 +166,7 @@
InvariantDeviceProfile idp = mApp.getInvariantDeviceProfile();
mDeviceProfile = idp.getDeviceProfile(this);
mModel = new WidgetsModel();
- mWidgetsFilterDataProvider = WidgetsFilterDataProvider.Companion.newInstance(this);
+ mWidgetPickerDataProvider = new WidgetPickerDataProvider(this);
setContentView(R.layout.widget_picker_activity);
mDragLayer = findViewById(R.id.drag_layer);
@@ -313,17 +309,13 @@
private void refreshAndBindWidgets() {
MODEL_EXECUTOR.execute(() -> {
LauncherAppState app = LauncherAppState.getInstance(this);
- // Don't have to setup filters - its setup when launcher loads
- // Just refresh filters with available cached info.
- mModel.updateWidgetFilters(mWidgetsFilterDataProvider);
mModel.update(app, null);
StringCache stringCache = new StringCache();
stringCache.loadStrings(this);
bindStringCache(stringCache);
- bindWidgets(mModel.getWidgetsByPackageItemForPicker(),
- mModel.getDefaultWidgetsFilter());
+ bindWidgets(mModel.getWidgetsByPackageItemForPicker());
// Open sheet once widgets are available, so that it doesn't interrupt the open
// animation.
openWidgetsSheet();
@@ -339,26 +331,19 @@
MAIN_EXECUTOR.execute(() -> mStringCache = stringCache);
}
- private void bindWidgets(Map<PackageItemInfo, List<WidgetItem>> widgets,
- @Nullable Predicate<WidgetItem> defaultWidgetsFilter) {
+ private void bindWidgets(Map<PackageItemInfo, List<WidgetItem>> widgets) {
WidgetsListBaseEntriesBuilder builder = new WidgetsListBaseEntriesBuilder(
mApp.getContext());
-
final List<WidgetsListBaseEntry> allWidgets = builder.build(widgets, mNoShortcutsFilter);
- // Default list is shown if either defaultWidgetsFilter exists or host has additionally
- // enforced size filtering.
+ // Default list is shown if host has additionally enforced size filtering.
@Nullable Predicate<WidgetItem> defaultListFilter =
hasHostSizeFilters() ? mHostSizeAndNoShortcutsFilter : null;
- if (defaultWidgetsFilter != null) {
- defaultListFilter = defaultListFilter != null ? defaultListFilter.and(
- defaultWidgetsFilter) : defaultWidgetsFilter;
- }
- final List<WidgetsListBaseEntry> defaultWidgets = defaultListFilter != null ? builder.build(
- widgets, defaultListFilter) : emptyList();
- MAIN_EXECUTOR.execute(
- () -> mWidgetPickerDataProvider.setWidgets(allWidgets, defaultWidgets));
+ MAIN_EXECUTOR.execute(() -> {
+ mWidgetPickerDataProvider.setHostSpecifiedDefaultWidgetsFilter(defaultListFilter);
+ mWidgetPickerDataProvider.setWidgets(allWidgets);
+ });
}
private void openWidgetsSheet() {
@@ -380,7 +365,7 @@
@Override
protected void onDestroy() {
super.onDestroy();
- MODEL_EXECUTOR.execute(() -> mWidgetsFilterDataProvider.destroy());
+ mWidgetPickerDataProvider.destroy();
if (mWidgetPredictionsRequester != null) {
mWidgetPredictionsRequester.clear();
}
diff --git a/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java b/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java
index 8bd2ba8..b732cba 100644
--- a/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java
+++ b/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java
@@ -45,7 +45,6 @@
import java.util.Map;
import java.util.Random;
import java.util.Set;
-import java.util.function.Predicate;
import java.util.stream.Collectors;
/** Task to update model as a result of predicted widgets update */
@@ -68,8 +67,6 @@
@Override
public void execute(@NonNull ModelTaskController taskController, @NonNull BgDataModel dataModel,
@NonNull AllAppsList apps) {
- Predicate<WidgetItem> predictedWidgetsFilter = enableTieredWidgetsByDefaultInPicker()
- ? dataModel.widgetsModel.getPredictedWidgetsFilter() : null;
Set<ComponentKey> widgetsInWorkspace = dataModel.itemsIdMap
.stream()
.filter(WIDGET_FILTER)
@@ -84,8 +81,6 @@
.stream()
.filter(entry -> entry.getValue().widgetInfo != null
&& !widgetsInWorkspace.contains(entry.getValue())
- && (predictedWidgetsFilter == null
- || predictedWidgetsFilter.test(entry.getValue()))
).collect(toMap(Map.Entry::getKey, Map.Entry::getValue));
Context context = taskController.getApp().getContext();
diff --git a/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java b/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java
index d52d054..59ce637 100644
--- a/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java
+++ b/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java
@@ -34,7 +34,6 @@
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
import android.app.prediction.AppTarget;
import android.app.prediction.AppTargetId;
@@ -46,7 +45,6 @@
import android.os.Process;
import android.os.UserHandle;
import android.platform.test.annotations.DisableFlags;
-import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.text.TextUtils;
@@ -71,8 +69,6 @@
import java.util.Arrays;
import java.util.List;
-import java.util.Set;
-import java.util.function.Predicate;
import java.util.stream.Collectors;
@SmallTest
@@ -234,50 +230,6 @@
}
@Test
- @EnableFlags(Flags.FLAG_ENABLE_TIERED_WIDGETS_BY_DEFAULT_IN_PICKER)
- public void widgetsRecommendationRan_keepsWidgetsNotOnWorkspace_addsWidgetsFromEligibleApps() {
- runOnExecutorSync(MODEL_EXECUTOR, () -> {
- WidgetsFilterDataProvider spiedFilterProvider = spy(
- mModelHelper.getModel().getWidgetsFilterDataProvider());
- doAnswer(i -> new Predicate<WidgetItem>() {
- @Override
- public boolean test(WidgetItem widgetItem) {
- // app5's widget is already on workspace, but, app2 is not.
- // And app4's second widget is also not on workspace.
- return Set.of("app5", "app2", "app4").contains(
- widgetItem.componentName.getPackageName());
- }
- }).when(spiedFilterProvider).getPredictedWidgetsFilter();
- mModelHelper.getBgDataModel().widgetsModel.updateWidgetFilters(spiedFilterProvider);
- // App5's widget that's already on workspace.
- AppTarget widget1 = new AppTarget(new AppTargetId("app5"), "app5", "provider1",
- mUserHandle);
- // App4's widget eligible and not on workspace.
- AppTarget widget2 = new AppTarget(new AppTargetId("app4"), "app4", "provider2",
- mUserHandle);
-
- mCallback.mRecommendedWidgets = null;
- mModelHelper.getModel().enqueueModelUpdateTask(
- newWidgetsPredicationTask(List.of(widget1, widget2)));
- runOnExecutorSync(MAIN_EXECUTOR, () -> {
- });
-
- List<PendingAddWidgetInfo> recommendedWidgets = mCallback.mRecommendedWidgets.items
- .stream()
- .map(itemInfo -> (PendingAddWidgetInfo) itemInfo)
- .collect(Collectors.toList());
- assertThat(recommendedWidgets).hasSize(2);
- List<ComponentName> componentNames = recommendedWidgets.stream().map(
- w -> w.componentName).toList();
- assertThat(componentNames).containsExactly(
- // Locally added, not on workspace, eligible app per filter
- mApp2Provider1.provider,
- // From prediction service, not on workspace, eligible app per filter
- mApp4Provider2.provider);
- });
- }
-
- @Test
public void widgetsRecommendations_excludesWidgetsHiddenForPicker() {
runOnExecutorSync(MODEL_EXECUTOR, () -> {
diff --git a/res/values/config.xml b/res/values/config.xml
index 1a2ac9e..74e7bb0 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -80,9 +80,6 @@
<string name="local_colors_extraction_class" translatable="false"></string>
<string name="search_session_manager_class" translatable="false"></string>
- <!-- Filters for widgets displayed in the widget picker -->
- <string name="widgets_filter_data_provider_class" translatable="false"></string>
-
<!-- Scalable Grid configuration -->
<!-- This is a float because it is converted to dp later in DeviceProfile -->
<dimen name="hotseat_bar_bottom_space_default">48</dimen>
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 7b41586..5c1a528 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -545,7 +545,7 @@
mFocusHandler, new CellLayout(mWorkspace.getContext(), mWorkspace));
mPopupDataProvider = new PopupDataProvider(this);
- mWidgetPickerDataProvider = new WidgetPickerDataProvider();
+ mWidgetPickerDataProvider = new WidgetPickerDataProvider(this);
PillColorProvider.getInstance(mWorkspace.getContext()).registerObserver();
boolean internalStateHandled = ACTIVITY_TRACKER.handleCreate(this);
@@ -1803,6 +1803,7 @@
mAppWidgetHolder.stopListening();
mAppWidgetHolder.destroy();
+ mWidgetPickerDataProvider.destroy();
TextKeyListener.getInstance().release();
mModelCallbacks.clearPendingBinds();
@@ -2629,9 +2630,8 @@
* See {@code LauncherBindingDelegate}
*/
@Override
- public void bindAllWidgets(@NonNull final List<WidgetsListBaseEntry> allWidgets,
- @NonNull final List<WidgetsListBaseEntry> defaultWidgets) {
- mModelCallbacks.bindAllWidgets(allWidgets, defaultWidgets);
+ public void bindAllWidgets(@NonNull final List<WidgetsListBaseEntry> allWidgets) {
+ mModelCallbacks.bindAllWidgets(allWidgets);
}
@Override
diff --git a/src/com/android/launcher3/LauncherModel.kt b/src/com/android/launcher3/LauncherModel.kt
index 892a218..add0ad8 100644
--- a/src/com/android/launcher3/LauncherModel.kt
+++ b/src/com/android/launcher3/LauncherModel.kt
@@ -43,7 +43,6 @@
import com.android.launcher3.model.ReloadStringCacheTask
import com.android.launcher3.model.ShortcutsChangedTask
import com.android.launcher3.model.UserLockStateChangedTask
-import com.android.launcher3.model.WidgetsFilterDataProvider
import com.android.launcher3.model.data.ItemInfo
import com.android.launcher3.model.data.WorkspaceItemInfo
import com.android.launcher3.pm.UserCache
@@ -82,8 +81,6 @@
val modelDelegate: ModelDelegate,
) {
- private val widgetsFilterDataProvider = WidgetsFilterDataProvider.newInstance(context)
-
private val mCallbacksList = ArrayList<BgDataModel.Callbacks>(1)
// < only access in worker thread >
@@ -151,11 +148,6 @@
owner: BgDataModel.Callbacks?,
) = ModelWriter(context, this, mBgDataModel, verifyChanges, cellPosMapper, owner)
- /** Returns the [WidgetsFilterDataProvider] that manages widget filters. */
- fun getWidgetsFilterDataProvider(): WidgetsFilterDataProvider {
- return widgetsFilterDataProvider
- }
-
/** Called when the icon for an app changes, outside of package event */
@WorkerThread
fun onAppIconChanged(packageName: String, user: UserHandle) {
@@ -176,10 +168,7 @@
/** Called when the model is destroyed */
fun destroy() {
mModelDestroyed = true
- MODEL_EXECUTOR.execute {
- modelDelegate.destroy()
- widgetsFilterDataProvider.destroy()
- }
+ MODEL_EXECUTOR.execute { modelDelegate.destroy() }
}
fun reloadStringCache() {
@@ -335,7 +324,6 @@
mBgDataModel,
this.modelDelegate,
launcherBinder,
- widgetsFilterDataProvider,
)
mLoaderTask = task
@@ -442,14 +430,6 @@
}
}
- /** Called when the widget filters are refreshed and available to bind to the model. */
- fun onWidgetFiltersLoaded() {
- enqueueModelUpdateTask { taskController, dataModel, _ ->
- dataModel.widgetsModel.updateWidgetFilters(widgetsFilterDataProvider)
- taskController.bindUpdatedWidgets(dataModel)
- }
- }
-
fun enqueueModelUpdateTask(task: ModelUpdateTask) {
if (mModelDestroyed) {
return
diff --git a/src/com/android/launcher3/ModelCallbacks.kt b/src/com/android/launcher3/ModelCallbacks.kt
index d01f35d..32b47d0 100644
--- a/src/com/android/launcher3/ModelCallbacks.kt
+++ b/src/com/android/launcher3/ModelCallbacks.kt
@@ -234,11 +234,8 @@
PopupContainerWithArrow.dismissInvalidPopup(launcher)
}
- override fun bindAllWidgets(
- allWidgets: List<WidgetsListBaseEntry>,
- defaultWidgets: List<WidgetsListBaseEntry>,
- ) {
- launcher.widgetPickerDataProvider.setWidgets(allWidgets, defaultWidgets)
+ override fun bindAllWidgets(allWidgets: List<WidgetsListBaseEntry>) {
+ launcher.widgetPickerDataProvider.setWidgets(allWidgets)
}
/** Returns the ids of the workspaces to bind. */
diff --git a/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java b/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java
index 150761f..06643d3 100644
--- a/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java
+++ b/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java
@@ -28,6 +28,7 @@
import com.android.launcher3.graphics.ThemeManager;
import com.android.launcher3.icons.LauncherIcons.IconPool;
import com.android.launcher3.model.ItemInstallQueue;
+import com.android.launcher3.model.WidgetsFilterDataProvider;
import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.util.ApiWrapper;
@@ -84,6 +85,7 @@
RemoveAnimationSettingsTracker getRemoveAnimationSettingsTracker();
LauncherAppState getLauncherAppState();
GridCustomizationsProxy getGridCustomizationsProxy();
+ WidgetsFilterDataProvider getWidgetsFilterDataProvider();
/** Builder for LauncherBaseAppComponent. */
interface Builder {
diff --git a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java
index 3641896..d425f03 100644
--- a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java
+++ b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java
@@ -346,9 +346,7 @@
bgModel,
LauncherAppState.getInstance(previewContext).getModel().getModelDelegate(),
new BaseLauncherBinder(LauncherAppState.getInstance(previewContext), bgModel,
- /* bgAllAppsList= */ null, new Callbacks[0]),
- LauncherAppState.getInstance(
- previewContext).getModel().getWidgetsFilterDataProvider()) {
+ /* bgAllAppsList= */ null, new Callbacks[0])) {
@Override
public void run() {
diff --git a/src/com/android/launcher3/model/BaseLauncherBinder.java b/src/com/android/launcher3/model/BaseLauncherBinder.java
index a2ca6b6..262bf67 100644
--- a/src/com/android/launcher3/model/BaseLauncherBinder.java
+++ b/src/com/android/launcher3/model/BaseLauncherBinder.java
@@ -26,8 +26,6 @@
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
-import static java.util.Collections.emptyList;
-
import android.os.Trace;
import android.util.Log;
import android.util.Pair;
@@ -45,7 +43,6 @@
import com.android.launcher3.model.BgDataModel.FixedContainerItems;
import com.android.launcher3.model.data.AppInfo;
import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.model.data.PackageItemInfo;
import com.android.launcher3.util.ComponentKey;
import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.IntSet;
@@ -165,17 +162,10 @@
if (!WIDGETS_ENABLED) {
return;
}
- Map<PackageItemInfo, List<WidgetItem>>
- widgetsByPackageItem = mBgDataModel.widgetsModel.getWidgetsByPackageItemForPicker();
List<WidgetsListBaseEntry> widgets = new WidgetsListBaseEntriesBuilder(mApp.getContext())
- .build(widgetsByPackageItem);
- Predicate<WidgetItem> filter = mBgDataModel.widgetsModel.getDefaultWidgetsFilter();
- List<WidgetsListBaseEntry> defaultWidgets =
- filter != null ? new WidgetsListBaseEntriesBuilder(
- mApp.getContext()).build(widgetsByPackageItem,
- mBgDataModel.widgetsModel.getDefaultWidgetsFilter()) : emptyList();
+ .build(mBgDataModel.widgetsModel.getWidgetsByPackageItemForPicker());
- executeCallbacksTask(c -> c.bindAllWidgets(widgets, defaultWidgets), mUiExecutor);
+ executeCallbacksTask(c -> c.bindAllWidgets(widgets), mUiExecutor);
}
/**
diff --git a/src/com/android/launcher3/model/BgDataModel.java b/src/com/android/launcher3/model/BgDataModel.java
index eab28b7..d9eccaf 100644
--- a/src/com/android/launcher3/model/BgDataModel.java
+++ b/src/com/android/launcher3/model/BgDataModel.java
@@ -431,9 +431,8 @@
/**
* Binds the app widgets to the providers that share widgets with the UI.
*/
- default void bindAllWidgets(@NonNull List<WidgetsListBaseEntry> widgets,
- @NonNull List<WidgetsListBaseEntry> defaultWidgets) {
- }
+ default void bindAllWidgets(@NonNull List<WidgetsListBaseEntry> widgets) { }
+
default void bindSmartspaceWidget() { }
/** Called when workspace has been bound. */
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java
index d44b289..fb1ebaf 100644
--- a/src/com/android/launcher3/model/LoaderTask.java
+++ b/src/com/android/launcher3/model/LoaderTask.java
@@ -20,7 +20,6 @@
import static com.android.launcher3.Flags.enableLauncherBrMetricsFixed;
import static com.android.launcher3.Flags.enableSmartspaceAsAWidget;
import static com.android.launcher3.Flags.enableSmartspaceRemovalToggle;
-import static com.android.launcher3.Flags.enableTieredWidgetsByDefaultInPicker;
import static com.android.launcher3.LauncherPrefs.IS_FIRST_LOAD_AFTER_RESTORE;
import static com.android.launcher3.LauncherPrefs.SHOULD_SHOW_SMARTSPACE;
import static com.android.launcher3.LauncherSettings.Favorites.DESKTOP_ICON_FLAG;
@@ -148,7 +147,6 @@
private final UserManager mUserManager;
private final UserCache mUserCache;
private final PackageManagerHelper mPmHelper;
- private final WidgetsFilterDataProvider mWidgetsFilterDataProvider;
private final InstallSessionHelper mSessionHelper;
private final IconCache mIconCache;
@@ -167,16 +165,13 @@
private String mDbName;
public LoaderTask(@NonNull LauncherAppState app, AllAppsList bgAllAppsList, BgDataModel bgModel,
- ModelDelegate modelDelegate, @NonNull BaseLauncherBinder launcherBinder,
- @NonNull WidgetsFilterDataProvider widgetsFilterDataProvider) {
- this(app, bgAllAppsList, bgModel, modelDelegate, launcherBinder, widgetsFilterDataProvider,
- new UserManagerState());
+ ModelDelegate modelDelegate, @NonNull BaseLauncherBinder launcherBinder) {
+ this(app, bgAllAppsList, bgModel, modelDelegate, launcherBinder, new UserManagerState());
}
@VisibleForTesting
LoaderTask(@NonNull LauncherAppState app, AllAppsList bgAllAppsList, BgDataModel bgModel,
ModelDelegate modelDelegate, @NonNull BaseLauncherBinder launcherBinder,
- WidgetsFilterDataProvider widgetsFilterDataProvider,
UserManagerState userManagerState) {
mApp = app;
mBgAllAppsList = bgAllAppsList;
@@ -191,7 +186,6 @@
mIconCache = mApp.getIconCache();
mUserManagerState = userManagerState;
mInstallingPkgsCached = null;
- mWidgetsFilterDataProvider = widgetsFilterDataProvider;
}
protected synchronized void waitForIdle() {
@@ -348,13 +342,6 @@
// fourth step
WidgetsModel widgetsModel = mBgDataModel.widgetsModel;
- if (enableTieredWidgetsByDefaultInPicker()) {
- // Begin periodic refresh of filters
- mWidgetsFilterDataProvider.initPeriodicDataRefresh(
- mApp.getModel()::onWidgetFiltersLoaded);
- // And, update model with currently cached data.
- widgetsModel.updateWidgetFilters(mWidgetsFilterDataProvider);
- }
List<CachedObject> allWidgetsList = widgetsModel.update(mApp, /*packageUser=*/null);
logASplit("load widgets finished");
diff --git a/src/com/android/launcher3/model/ModelTaskController.kt b/src/com/android/launcher3/model/ModelTaskController.kt
index 6e3e35e..5566482 100644
--- a/src/com/android/launcher3/model/ModelTaskController.kt
+++ b/src/com/android/launcher3/model/ModelTaskController.kt
@@ -77,19 +77,10 @@
}
fun bindUpdatedWidgets(dataModel: BgDataModel) {
- val widgetsByPackageItem = dataModel.widgetsModel.widgetsByPackageItemForPicker
- val allWidgets = WidgetsListBaseEntriesBuilder(app.context).build(widgetsByPackageItem)
-
- val defaultWidgetsFilter = dataModel.widgetsModel.defaultWidgetsFilter
- val defaultWidgets =
- if (defaultWidgetsFilter != null) {
- WidgetsListBaseEntriesBuilder(app.context)
- .build(widgetsByPackageItem, defaultWidgetsFilter)
- } else {
- emptyList()
- }
-
- scheduleCallbackTask { it.bindAllWidgets(allWidgets, defaultWidgets) }
+ val allWidgets =
+ WidgetsListBaseEntriesBuilder(app.context)
+ .build(dataModel.widgetsModel.widgetsByPackageItemForPicker)
+ scheduleCallbackTask { it.bindAllWidgets(allWidgets) }
}
fun deleteAndBindComponentsRemoved(matcher: Predicate<ItemInfo?>, reason: String?) {
diff --git a/src/com/android/launcher3/model/WidgetsFilterDataProvider.kt b/src/com/android/launcher3/model/WidgetsFilterDataProvider.kt
index 0571de3..90d6fb2 100644
--- a/src/com/android/launcher3/model/WidgetsFilterDataProvider.kt
+++ b/src/com/android/launcher3/model/WidgetsFilterDataProvider.kt
@@ -16,55 +16,38 @@
package com.android.launcher3.model
-import android.content.Context
-import androidx.annotation.WorkerThread
-import com.android.launcher3.R
-import com.android.launcher3.util.ResourceBasedOverride
+import com.android.launcher3.dagger.LauncherAppSingleton
import java.util.function.Predicate
+import javax.inject.Inject
/** Helper for the widgets model to load the filters that can be applied to available widgets. */
-open class WidgetsFilterDataProvider(val context: Context) : ResourceBasedOverride {
+@LauncherAppSingleton
+open class WidgetsFilterDataProvider @Inject constructor() {
+
+ /** Filter that should be applied to the widget predictions */
+ open val predictedWidgetsFilter: Predicate<WidgetItem>? = null
+
/**
- * Start regular periodic refresh of widget filtering data starting now (if not started
- * already).
+ * Filter that should be applied to the widgets list to see which widgets can be shown by
+ * default.
*/
- @WorkerThread
- open fun initPeriodicDataRefresh(callback: WidgetsFilterLoadedCallback? = null) {
- // no-op
+ open val defaultWidgetsFilter: Predicate<WidgetItem>? = null
+
+ protected val listeners = mutableListOf<WidgetsFilterLoadedCallback>()
+
+ /** Adds a callback for listening to filter changes */
+ fun addFilterChangeCallback(callback: WidgetsFilterLoadedCallback) {
+ listeners.add(callback)
}
- /**
- * Returns a filter that should be applied to the widget predictions.
- *
- * @return null if no filter needs to be applied
- */
- @WorkerThread open fun getPredictedWidgetsFilter(): Predicate<WidgetItem>? = null
-
- /**
- * Returns a filter that should be applied to the widgets list to see which widgets can be shown
- * by default.
- *
- * @return null if no separate "default" list is supported
- */
- @WorkerThread open fun getDefaultWidgetsFilter(): Predicate<WidgetItem>? = null
-
- /** Called when filter data provider is no longer needed. */
- open fun destroy() {}
-
- companion object {
- /** Returns a new instance of the [WidgetsFilterDataProvider] based on resource override. */
- fun newInstance(context: Context?): WidgetsFilterDataProvider {
- return ResourceBasedOverride.Overrides.getObject(
- WidgetsFilterDataProvider::class.java,
- context,
- R.string.widgets_filter_data_provider_class,
- )
- }
+ /** Removes a previously added callback */
+ fun removeFilterChangeCallback(callback: WidgetsFilterLoadedCallback) {
+ listeners.remove(callback)
}
-}
-/** Interface for the model callback to be invoked when filters are loaded. */
-interface WidgetsFilterLoadedCallback {
- /** Method called back when widget filters are loaded */
- fun onWidgetsFilterLoaded()
+ /** Interface for the model callback to be invoked when filters are loaded. */
+ interface WidgetsFilterLoadedCallback {
+ /** Method called back when widget filters are loaded */
+ fun onWidgetsFilterLoaded()
+ }
}
diff --git a/src/com/android/launcher3/model/WidgetsModel.java b/src/com/android/launcher3/model/WidgetsModel.java
index ab960d8..52b142d 100644
--- a/src/com/android/launcher3/model/WidgetsModel.java
+++ b/src/com/android/launcher3/model/WidgetsModel.java
@@ -19,8 +19,6 @@
import android.util.Log;
import android.util.Pair;
-import androidx.annotation.AnyThread;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.collection.ArrayMap;
@@ -68,8 +66,6 @@
/* Map of widgets and shortcuts that are tracked per package. */
private final Map<PackageItemInfo, List<WidgetItem>> mWidgetsByPackageItem = new HashMap<>();
- @Nullable private Predicate<WidgetItem> mDefaultWidgetsFilter = null;
- @Nullable private Predicate<WidgetItem> mPredictedWidgetsFilter = null;
@Nullable private WidgetValidityCheckForPicker mWidgetValidityCheckForPicker = null;
/**
@@ -129,37 +125,6 @@
}
/**
- * Returns widget filter that can be applied to {@link WidgetItem}s to check if they can be
- * shown in the default widgets list.
- * <p>Returns null if filtering isn't available</p>
- */
- @AnyThread
- public @Nullable Predicate<WidgetItem> getDefaultWidgetsFilter() {
- return mDefaultWidgetsFilter;
- }
-
- /**
- * Returns widget filter that can be applied to {@link WidgetItem}s to check if they can be
- * part of widget predictions.
- * <p>Returns null if filter isn't available</p>
- */
- @AnyThread
- public @Nullable Predicate<WidgetItem> getPredictedWidgetsFilter() {
- return mPredictedWidgetsFilter;
- }
-
- /**
- * Updates model with latest filter data in cache.
- */
- public void updateWidgetFilters(@NonNull WidgetsFilterDataProvider widgetsFilterDataProvider) {
- if (!WIDGETS_ENABLED) {
- return;
- }
- mDefaultWidgetsFilter = widgetsFilterDataProvider.getDefaultWidgetsFilter();
- mPredictedWidgetsFilter = widgetsFilterDataProvider.getPredictedWidgetsFilter();
- }
-
- /**
* @param packageUser If null, all widgets and shortcuts are updated and returned, otherwise
* only widgets and shortcuts associated with the package/user are.
*/
diff --git a/src/com/android/launcher3/widget/model/WidgetListSpaceEntry.java b/src/com/android/launcher3/widget/model/WidgetListSpaceEntry.java
index 5b1da5b..a761ecd 100644
--- a/src/com/android/launcher3/widget/model/WidgetListSpaceEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetListSpaceEntry.java
@@ -33,4 +33,9 @@
Collections.EMPTY_LIST);
mPkgItem.title = "";
}
+
+ @Override
+ public WidgetsListBaseEntry copy() {
+ return new WidgetListSpaceEntry();
+ }
}
diff --git a/src/com/android/launcher3/widget/model/WidgetsListBaseEntry.java b/src/com/android/launcher3/widget/model/WidgetsListBaseEntry.java
index 0003b76..9246e45 100644
--- a/src/com/android/launcher3/widget/model/WidgetsListBaseEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetsListBaseEntry.java
@@ -43,4 +43,7 @@
this.mWidgets =
items.stream().sorted(new WidgetItemComparator()).collect(Collectors.toList());
}
+
+
+ public abstract WidgetsListBaseEntry copy();
}
diff --git a/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java b/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java
index d709196..cc1739f 100644
--- a/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java
@@ -58,6 +58,11 @@
}
@Override
+ public WidgetsListBaseEntry copy() {
+ return new WidgetsListContentEntry(mPkgItem, mTitleSectionName, mWidgets, mMaxSpanSize);
+ }
+
+ @Override
public String toString() {
return "Content:" + mPkgItem.packageName + ":" + mWidgets.size() + " maxSpanSize: "
+ mMaxSpanSize;
diff --git a/src/com/android/launcher3/widget/model/WidgetsListExpandActionEntry.java b/src/com/android/launcher3/widget/model/WidgetsListExpandActionEntry.java
index 8c84030..7519bb7 100644
--- a/src/com/android/launcher3/widget/model/WidgetsListExpandActionEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetsListExpandActionEntry.java
@@ -35,4 +35,9 @@
/*items=*/ Collections.EMPTY_LIST);
mPkgItem.title = "";
}
+
+ @Override
+ public WidgetsListBaseEntry copy() {
+ return new WidgetsListExpandActionEntry();
+ }
}
diff --git a/src/com/android/launcher3/widget/model/WidgetsListHeaderEntry.java b/src/com/android/launcher3/widget/model/WidgetsListHeaderEntry.java
index 0d775c3..e2ea068 100644
--- a/src/com/android/launcher3/widget/model/WidgetsListHeaderEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetsListHeaderEntry.java
@@ -83,6 +83,12 @@
mIsWidgetListShown = isWidgetListShown;
}
+ @Override
+ public WidgetsListBaseEntry copy() {
+ return new WidgetsListHeaderEntry(mPkgItem, mTitleSectionName, mWidgets,
+ mVisibleWidgetsCount, mIsSearchEntry, mIsWidgetListShown);
+ }
+
/** Returns {@code true} if the widgets list associated with this header is shown. */
public boolean isWidgetListShown() {
return mIsWidgetListShown;
diff --git a/src/com/android/launcher3/widget/picker/model/WidgetPickerDataProvider.kt b/src/com/android/launcher3/widget/picker/model/WidgetPickerDataProvider.kt
index 46d3e7a..5b97a49 100644
--- a/src/com/android/launcher3/widget/picker/model/WidgetPickerDataProvider.kt
+++ b/src/com/android/launcher3/widget/picker/model/WidgetPickerDataProvider.kt
@@ -16,43 +16,79 @@
package com.android.launcher3.widget.picker.model
+import android.content.Context
+import com.android.launcher3.dagger.LauncherComponentProvider.appComponent
+import com.android.launcher3.model.WidgetItem
+import com.android.launcher3.model.WidgetsFilterDataProvider
+import com.android.launcher3.model.WidgetsFilterDataProvider.WidgetsFilterLoadedCallback
import com.android.launcher3.model.data.ItemInfo
import com.android.launcher3.widget.model.WidgetsListBaseEntry
import com.android.launcher3.widget.picker.model.data.WidgetPickerData
import com.android.launcher3.widget.picker.model.data.WidgetPickerDataUtils.withRecommendedWidgets
import com.android.launcher3.widget.picker.model.data.WidgetPickerDataUtils.withWidgets
import java.io.PrintWriter
+import java.util.function.Predicate
/**
* Provides [WidgetPickerData] to various views such as widget picker, app-specific widget picker,
* widgets shortcut.
*/
-class WidgetPickerDataProvider {
+class WidgetPickerDataProvider(private val filterProvider: WidgetsFilterDataProvider) :
+ WidgetsFilterLoadedCallback {
+
+ constructor(context: Context) : this(context.appComponent.widgetsFilterDataProvider)
+
/** All the widgets data provided for the views */
private var mWidgetPickerData: WidgetPickerData = WidgetPickerData()
private var changeListener: WidgetPickerDataChangeListener? = null
+ var hostSpecifiedDefaultWidgetsFilter: Predicate<WidgetItem>? = null
+
+ private var allWidgets: List<WidgetsListBaseEntry> = emptyList()
+
/** Sets a listener to be called back when widget data is updated. */
fun setChangeListener(changeListener: WidgetPickerDataChangeListener?) {
this.changeListener = changeListener
}
+ init {
+ filterProvider.addFilterChangeCallback(this)
+ }
+
/** Returns the current snapshot of [WidgetPickerData]. */
fun get(): WidgetPickerData {
return mWidgetPickerData
}
+ override fun onWidgetsFilterLoaded() {
+ setWidgets(allWidgets)
+ }
+
/**
* Updates the widgets available to the widget picker.
*
* Generally called when the widgets model has new data.
*/
- @JvmOverloads
- fun setWidgets(
- allWidgets: List<WidgetsListBaseEntry>,
- defaultWidgets: List<WidgetsListBaseEntry> = listOf()
- ) {
+ fun setWidgets(allWidgets: List<WidgetsListBaseEntry>) {
+ this.allWidgets = allWidgets
+
+ val currentFilter = filterProvider.defaultWidgetsFilter
+ val finalFilter =
+ when {
+ currentFilter != null && hostSpecifiedDefaultWidgetsFilter != null ->
+ currentFilter.and(hostSpecifiedDefaultWidgetsFilter)
+ hostSpecifiedDefaultWidgetsFilter != null -> hostSpecifiedDefaultWidgetsFilter
+ else -> currentFilter
+ }
+
+ val defaultWidgets =
+ if (finalFilter != null)
+ allWidgets
+ .map { it.copy().apply { mWidgets.removeIf(finalFilter) } }
+ .filter { it.mWidgets.isNotEmpty() }
+ else emptyList()
+
mWidgetPickerData =
mWidgetPickerData.withWidgets(allWidgets = allWidgets, defaultWidgets = defaultWidgets)
changeListener?.onWidgetsBound()
@@ -74,6 +110,10 @@
writer.println("$prefix\twidgetPickerData:$mWidgetPickerData")
}
+ fun destroy() {
+ filterProvider.removeFilterChangeCallback(this)
+ }
+
interface WidgetPickerDataChangeListener {
/** A callback to get notified when widgets are bound. */
fun onWidgetsBound()
diff --git a/tests/multivalentTests/src/com/android/launcher3/model/WidgetsModelTest.kt b/tests/multivalentTests/src/com/android/launcher3/model/WidgetsModelTest.kt
index d704195..777d81b 100644
--- a/tests/multivalentTests/src/com/android/launcher3/model/WidgetsModelTest.kt
+++ b/tests/multivalentTests/src/com/android/launcher3/model/WidgetsModelTest.kt
@@ -43,7 +43,6 @@
import com.google.common.truth.Truth.assertThat
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit
-import java.util.function.Predicate
import org.junit.Assert.fail
import org.junit.Before
import org.junit.Rule
@@ -65,7 +64,6 @@
@Mock private lateinit var appWidgetManager: AppWidgetManager
@Mock private lateinit var app: LauncherAppState
@Mock private lateinit var iconCacheMock: IconCache
- @Mock private lateinit var widgetsFilterDataProvider: WidgetsFilterDataProvider
private lateinit var context: Context
private lateinit var idp: InvariantDeviceProfile
@@ -252,27 +250,6 @@
// No exception
}
- @Test
- fun updateWidgetFilters_setsFiltersCorrectly() {
- val testDefaultWidgetFilter = Predicate<WidgetItem> { w -> w.widgetInfo != null }
- whenever(widgetsFilterDataProvider.getDefaultWidgetsFilter())
- .thenReturn(testDefaultWidgetFilter)
- val testPredicatedWidgetFilter = Predicate<WidgetItem> { w -> w.widgetInfo != null }
- whenever(widgetsFilterDataProvider.getPredictedWidgetsFilter())
- .thenReturn(testPredicatedWidgetFilter)
-
- underTest.updateWidgetFilters(widgetsFilterDataProvider)
-
- assertThat(underTest.defaultWidgetsFilter).isEqualTo(testDefaultWidgetFilter)
- assertThat(underTest.predictedWidgetsFilter).isEqualTo(testPredicatedWidgetFilter)
- }
-
- @Test
- fun widgetFilters_nullInitially() {
- assertThat(underTest.defaultWidgetsFilter).isNull()
- assertThat(underTest.predictedWidgetsFilter).isNull()
- }
-
private fun loadWidgets() {
val latch = CountDownLatch(1)
Executors.MODEL_EXECUTOR.execute {
diff --git a/tests/multivalentTests/src/com/android/launcher3/util/TestSandboxModelContextWrapper.java b/tests/multivalentTests/src/com/android/launcher3/util/TestSandboxModelContextWrapper.java
index 8be1341..acd17d1 100644
--- a/tests/multivalentTests/src/com/android/launcher3/util/TestSandboxModelContextWrapper.java
+++ b/tests/multivalentTests/src/com/android/launcher3/util/TestSandboxModelContextWrapper.java
@@ -28,6 +28,7 @@
import com.android.launcher3.allapps.AllAppsStore;
import com.android.launcher3.allapps.AlphabeticalAppsList;
import com.android.launcher3.model.BgDataModel;
+import com.android.launcher3.model.WidgetsFilterDataProvider;
import com.android.launcher3.model.data.AppInfo;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.popup.PopupDataProvider;
@@ -58,7 +59,7 @@
private final PopupDataProvider mPopupDataProvider = new PopupDataProvider(this);
private final WidgetPickerDataProvider mWidgetPickerDataProvider =
- new WidgetPickerDataProvider();
+ new WidgetPickerDataProvider(new WidgetsFilterDataProvider());
protected final UserCache mUserCache;
public TestSandboxModelContextWrapper(SandboxContext base) {
diff --git a/tests/multivalentTests/src/com/android/launcher3/widget/picker/model/WidgetPickerDataProviderTest.kt b/tests/multivalentTests/src/com/android/launcher3/widget/picker/model/WidgetPickerDataProviderTest.kt
index 1da74cb..c1827bc 100644
--- a/tests/multivalentTests/src/com/android/launcher3/widget/picker/model/WidgetPickerDataProviderTest.kt
+++ b/tests/multivalentTests/src/com/android/launcher3/widget/picker/model/WidgetPickerDataProviderTest.kt
@@ -40,6 +40,7 @@
import com.android.launcher3.widget.model.WidgetsListHeaderEntry
import com.android.launcher3.widget.picker.model.WidgetPickerDataProvider.WidgetPickerDataChangeListener
import com.google.common.truth.Truth.assertThat
+import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -72,14 +73,14 @@
private lateinit var appWidgetItem: WidgetItem
- private var underTest = WidgetPickerDataProvider()
+ private lateinit var underTest: WidgetPickerDataProvider
@Before
fun setUp() {
userHandle = UserHandle.CURRENT
context = ActivityContextWrapper(ApplicationProvider.getApplicationContext())
testInvariantProfile = LauncherAppState.getIDP(context)
-
+ underTest = WidgetPickerDataProvider(context)
doAnswer { invocation: InvocationOnMock ->
val componentWithLabel = invocation.getArgument<Any>(0) as CachedObject
componentWithLabel.getComponent().shortClassName
@@ -90,6 +91,11 @@
appWidgetItem = createWidgetItem()
}
+ @After
+ fun tearDown() {
+ underTest.destroy()
+ }
+
@Test
fun setWidgets_invokesTheListener_andUpdatedWidgetsAvailable() {
assertThat(underTest.get().allWidgets).isEmpty()
diff --git a/tests/src/com/android/launcher3/model/LoaderTaskTest.kt b/tests/src/com/android/launcher3/model/LoaderTaskTest.kt
index 582cf3c..246219f 100644
--- a/tests/src/com/android/launcher3/model/LoaderTaskTest.kt
+++ b/tests/src/com/android/launcher3/model/LoaderTaskTest.kt
@@ -48,7 +48,6 @@
import dagger.BindsInstance
import dagger.Component
import java.util.concurrent.CountDownLatch
-import java.util.function.Predicate
import junit.framework.Assert.assertEquals
import org.junit.After
import org.junit.Before
@@ -96,7 +95,6 @@
@Mock private lateinit var modelDelegate: ModelDelegate
@Mock private lateinit var launcherBinder: BaseLauncherBinder
private lateinit var launcherModel: LauncherModel
- @Mock private lateinit var widgetsFilterDataProvider: WidgetsFilterDataProvider
@Mock private lateinit var transaction: LoaderTransaction
@Mock private lateinit var iconCache: IconCache
@Mock private lateinit var idleLock: LooperIdleLock
@@ -130,7 +128,6 @@
`when`(launcherBinder.newIdleLock(any())).thenReturn(idleLock)
`when`(idleLock.awaitLocked(1000)).thenReturn(false)
`when`(iconCache.getUpdateHandler()).thenReturn(iconCacheUpdateHandler)
- `when`(widgetsFilterDataProvider.getDefaultWidgetsFilter()).thenReturn(Predicate { true })
context.initDaggerComponent(
DaggerLoaderTaskTest_TestComponent.builder()
.bindUserCache(userCache)
@@ -160,14 +157,7 @@
val mockUserHandles = arrayListOf<UserHandle>(MAIN_HANDLE)
`when`(userCache.userProfiles).thenReturn(mockUserHandles)
`when`(userCache.getUserInfo(MAIN_HANDLE)).thenReturn(UserIconInfo(MAIN_HANDLE, 1))
- LoaderTask(
- app,
- bgAllAppsList,
- this,
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ LoaderTask(app, bgAllAppsList, this, modelDelegate, launcherBinder)
.runSyncOnBackgroundThread()
Truth.assertThat(
itemsIdMap
@@ -188,19 +178,11 @@
)
.isAtLeast(8)
Truth.assertThat(itemsIdMap.size()).isAtLeast(40)
- Truth.assertThat(widgetsModel.defaultWidgetsFilter).isNotNull()
}
@Test
fun bindsLoadedDataCorrectly() {
- LoaderTask(
- app,
- bgAllAppsList,
- BgDataModel(),
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ LoaderTask(app, bgAllAppsList, BgDataModel(), modelDelegate, launcherBinder)
.runSyncOnBackgroundThread()
verify(launcherBinder).bindWorkspace(true, false)
@@ -209,7 +191,6 @@
verify(launcherBinder).bindAllApps()
verify(iconCacheUpdateHandler, times(4)).updateIcons(any(), any<CachingLogic<Any>>(), any())
verify(launcherBinder).bindDeepShortcuts()
- verify(widgetsFilterDataProvider).initPeriodicDataRefresh(any())
verify(launcherBinder).bindWidgets()
verify(modelDelegate).loadAndBindOtherItems(anyOrNull())
verify(iconCacheUpdateHandler).finish()
@@ -227,15 +208,7 @@
`when`(userManagerState?.isUserQuiet(MAIN_HANDLE)).thenReturn(true)
`when`(userCache.getUserInfo(MAIN_HANDLE)).thenReturn(UserIconInfo(MAIN_HANDLE, 1))
- LoaderTask(
- app,
- bgAllAppsList,
- this,
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- userManagerState,
- )
+ LoaderTask(app, bgAllAppsList, this, modelDelegate, launcherBinder, userManagerState)
.runSyncOnBackgroundThread()
verify(bgAllAppsList)
@@ -256,15 +229,7 @@
`when`(userManagerState?.isUserQuiet(MAIN_HANDLE)).thenReturn(true)
`when`(userCache.getUserInfo(MAIN_HANDLE)).thenReturn(UserIconInfo(MAIN_HANDLE, 3))
- LoaderTask(
- app,
- bgAllAppsList,
- this,
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- userManagerState,
- )
+ LoaderTask(app, bgAllAppsList, this, modelDelegate, launcherBinder, userManagerState)
.runSyncOnBackgroundThread()
verify(bgAllAppsList)
@@ -303,14 +268,7 @@
RestoreDbTask.setPending(spyContext)
// When
- LoaderTask(
- app,
- bgAllAppsList,
- BgDataModel(),
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ LoaderTask(app, bgAllAppsList, BgDataModel(), modelDelegate, launcherBinder)
.runSyncOnBackgroundThread()
// Then
@@ -378,14 +336,7 @@
Settings.Secure.putInt(spyContext.contentResolver, "launcher_broadcast_installed_apps", 0)
// When
- LoaderTask(
- app,
- bgAllAppsList,
- BgDataModel(),
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ LoaderTask(app, bgAllAppsList, BgDataModel(), modelDelegate, launcherBinder)
.runSyncOnBackgroundThread()
// Then
@@ -424,14 +375,7 @@
RestoreDbTask.setPending(spyContext)
// When
- LoaderTask(
- app,
- bgAllAppsList,
- BgDataModel(),
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ LoaderTask(app, bgAllAppsList, BgDataModel(), modelDelegate, launcherBinder)
.runSyncOnBackgroundThread()
// Then
@@ -470,14 +414,7 @@
RestoreDbTask.setPending(spyContext)
// When
- LoaderTask(
- app,
- bgAllAppsList,
- BgDataModel(),
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ LoaderTask(app, bgAllAppsList, BgDataModel(), modelDelegate, launcherBinder)
.runSyncOnBackgroundThread()
// Then
@@ -507,15 +444,7 @@
)
val expectedAppInfo = AppInfo().apply { componentName = expectedComponent }
// When
- val loader =
- LoaderTask(
- app,
- bgAllAppsList,
- BgDataModel(),
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ val loader = LoaderTask(app, bgAllAppsList, BgDataModel(), modelDelegate, launcherBinder)
val actualIconRequest =
loader.getAppInfoIconRequestInfo(expectedAppInfo, activityInfo, workspaceIconRequests)
// Then
@@ -545,15 +474,7 @@
)
val expectedAppInfo = AppInfo().apply { componentName = expectedComponent }
// When
- val loader =
- LoaderTask(
- app,
- bgAllAppsList,
- BgDataModel(),
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ val loader = LoaderTask(app, bgAllAppsList, BgDataModel(), modelDelegate, launcherBinder)
val actualIconRequest =
loader.getAppInfoIconRequestInfo(expectedAppInfo, activityInfo, workspaceIconRequests)
// Then
@@ -584,15 +505,7 @@
val expectedAppInfo =
AppInfo().apply { componentName = ComponentName("differentPkg", "differentClass") }
// When
- val loader =
- LoaderTask(
- app,
- bgAllAppsList,
- BgDataModel(),
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ val loader = LoaderTask(app, bgAllAppsList, BgDataModel(), modelDelegate, launcherBinder)
val actualIconRequest =
loader.getAppInfoIconRequestInfo(expectedAppInfo, activityInfo, workspaceIconRequests)
// Then
@@ -619,15 +532,7 @@
)
val expectedAppInfo = AppInfo()
// When
- val loader =
- LoaderTask(
- app,
- bgAllAppsList,
- BgDataModel(),
- modelDelegate,
- launcherBinder,
- widgetsFilterDataProvider,
- )
+ val loader = LoaderTask(app, bgAllAppsList, BgDataModel(), modelDelegate, launcherBinder)
val actualIconRequest =
loader.getAppInfoIconRequestInfo(expectedAppInfo, activityInfo, workspaceIconRequests)
// Then