Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0a810da authored by Zak Cohen's avatar Zak Cohen
Browse files

WidgetPicker - allow user ids to be passed as filter arguments

Bug: 330377706
Test: adb shell am start -n com.google.android.apps.nexuslauncher/com.android.launcher3.WidgetPickerActivity --eial filtered_user_ids 1
0  check that WP doesn't show up
Flag: com.android.systemui.communal_hub

Change-Id: I375545190839101681a037a4481bf4cf92128d33
parent 98d80946
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -51,9 +51,11 @@ import com.android.launcher3.widget.model.WidgetsListContentEntry;
import com.android.launcher3.widget.picker.WidgetsFullSheet;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -86,6 +88,12 @@ public class WidgetPickerActivity extends BaseActivity {
    private static final String EXTRA_UI_SURFACE = "ui_surface";
    private static final Pattern UI_SURFACE_PATTERN =
            Pattern.compile("^(widgets|widgets_hub)$");

    /**
     * User ids that should be filtered out of the widget lists created by this activity.
     */
    private static final String EXTRA_USER_ID_FILTER = "filtered_user_ids";

    private SimpleDragLayer<WidgetPickerActivity> mDragLayer;
    private WidgetsModel mModel;
    private LauncherAppState mApp;
@@ -101,6 +109,10 @@ public class WidgetPickerActivity extends BaseActivity {
    @NonNull
    private List<AppWidgetProviderInfo> mAddedWidgets = new ArrayList<>();

    /** A set of user ids that should be filtered out from the selected widgets. */
    @NonNull
    Set<Integer> mFilteredUserIds = new HashSet<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -145,6 +157,12 @@ public class WidgetPickerActivity extends BaseActivity {
        if (addedWidgets != null) {
            mAddedWidgets = addedWidgets;
        }
        ArrayList<Integer> filteredUsers = getIntent().getIntegerArrayListExtra(
                EXTRA_USER_ID_FILTER);
        mFilteredUserIds.clear();
        if (filteredUsers != null) {
            mFilteredUserIds.addAll(filteredUsers);
        }
    }

    @NonNull
@@ -289,6 +307,13 @@ public class WidgetPickerActivity extends BaseActivity {
            return rejectWidget(widget, "shortcut");
        }

        if (mFilteredUserIds.contains(widget.user.getIdentifier())) {
            return rejectWidget(
                    widget,
                    "widget user: %d is being filtered",
                    widget.user.getIdentifier());
        }

        if (mWidgetCategoryFilter > 0 && (info.widgetCategory & mWidgetCategoryFilter) == 0) {
            return rejectWidget(
                    widget,