Merge "Delete the filter code as it will be provided differently in refactor" into main

This commit is contained in:
Shamali Patwa
2025-03-27 16:19:36 -07:00
committed by Android (Google) Code Review
7 changed files with 9 additions and 89 deletions
@@ -167,7 +167,7 @@ public class WidgetPickerActivity extends BaseActivity implements
InvariantDeviceProfile idp = mApp.getInvariantDeviceProfile();
mDeviceProfile = idp.getDeviceProfile(this);
mModel = new WidgetsModel(mApp.getContext());
mWidgetPickerDataProvider = new WidgetPickerDataProvider(this);
mWidgetPickerDataProvider = new WidgetPickerDataProvider();
setContentView(R.layout.widget_picker_activity);
mDragLayer = findViewById(R.id.drag_layer);
+1 -1
View File
@@ -545,7 +545,7 @@ public class Launcher extends StatefulActivity<LauncherState>
mFocusHandler, new CellLayout(mWorkspace.getContext(), mWorkspace));
mPopupDataProvider = new PopupDataProvider(this);
mWidgetPickerDataProvider = new WidgetPickerDataProvider(this);
mWidgetPickerDataProvider = new WidgetPickerDataProvider();
PillColorProvider.getInstance(mWorkspace.getContext()).registerObserver();
boolean internalStateHandled = ACTIVITY_TRACKER.handleCreate(this);
@@ -29,7 +29,6 @@ import com.android.launcher3.graphics.ThemeManager;
import com.android.launcher3.icons.LauncherIcons.IconPool;
import com.android.launcher3.model.ItemInstallQueue;
import com.android.launcher3.model.LoaderCursor.LoaderCursorFactory;
import com.android.launcher3.model.WidgetsFilterDataProvider;
import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.util.ApiWrapper;
@@ -87,7 +86,6 @@ public interface LauncherBaseAppComponent {
RemoveAnimationSettingsTracker getRemoveAnimationSettingsTracker();
LauncherAppState getLauncherAppState();
GridCustomizationsProxy getGridCustomizationsProxy();
WidgetsFilterDataProvider getWidgetsFilterDataProvider();
LoaderCursorFactory getLoaderCursorFactory();
WidgetHolderFactory getWidgetHolderFactory();
@@ -1,53 +0,0 @@
/*
* Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.launcher3.model
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. */
@LauncherAppSingleton
open class WidgetsFilterDataProvider @Inject constructor() {
/** Filter that should be applied to the widget predictions */
open val predictedWidgetsFilter: Predicate<WidgetItem>? = null
/**
* Filter that should be applied to the widgets list to see which widgets can be shown by
* default.
*/
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)
}
/** 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()
}
}
@@ -16,11 +16,7 @@
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
@@ -33,11 +29,7 @@ import java.util.function.Predicate
* Provides [WidgetPickerData] to various views such as widget picker, app-specific widget picker,
* widgets shortcut.
*/
class WidgetPickerDataProvider(private val filterProvider: WidgetsFilterDataProvider) :
WidgetsFilterLoadedCallback {
constructor(context: Context) : this(context.appComponent.widgetsFilterDataProvider)
class WidgetPickerDataProvider {
/** All the widgets data provided for the views */
private var mWidgetPickerData: WidgetPickerData = WidgetPickerData()
@@ -52,19 +44,11 @@ class WidgetPickerDataProvider(private val filterProvider: WidgetsFilterDataProv
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.
*
@@ -73,19 +57,11 @@ class WidgetPickerDataProvider(private val filterProvider: WidgetsFilterDataProv
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 defaultWidgetsFilter = hostSpecifiedDefaultWidgetsFilter
val defaultWidgets =
if (finalFilter != null)
if (defaultWidgetsFilter != null)
allWidgets
.map { it.copy().apply { mWidgets.removeIf(finalFilter) } }
.map { it.copy().apply { mWidgets.removeIf(defaultWidgetsFilter) } }
.filter { it.mWidgets.isNotEmpty() }
else emptyList()
@@ -111,7 +87,7 @@ class WidgetPickerDataProvider(private val filterProvider: WidgetsFilterDataProv
}
fun destroy() {
filterProvider.removeFilterChangeCallback(this)
changeListener = null
}
interface WidgetPickerDataChangeListener {
@@ -28,7 +28,6 @@ import com.android.launcher3.allapps.ActivityAllAppsContainerView;
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;
@@ -59,7 +58,7 @@ public class TestSandboxModelContextWrapper extends ActivityContextWrapper imple
private final PopupDataProvider mPopupDataProvider = new PopupDataProvider(this);
private final WidgetPickerDataProvider mWidgetPickerDataProvider =
new WidgetPickerDataProvider(new WidgetsFilterDataProvider());
new WidgetPickerDataProvider();
protected final UserCache mUserCache;
public TestSandboxModelContextWrapper(SandboxContext base) {
@@ -80,7 +80,7 @@ class WidgetPickerDataProviderTest {
userHandle = UserHandle.CURRENT
context = ActivityContextWrapper(ApplicationProvider.getApplicationContext())
testInvariantProfile = LauncherAppState.getIDP(context)
underTest = WidgetPickerDataProvider(context)
underTest = WidgetPickerDataProvider()
doAnswer { invocation: InvocationOnMock ->
val componentWithLabel = invocation.getArgument<Any>(0) as CachedObject
componentWithLabel.getComponent().shortClassName