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

Commit 6211e860 authored by Shamali P's avatar Shamali P Committed by Shamali Patwa
Browse files

Consider the widget option menu choice in search results

Makes the search related code separate from popup provider.

Bug: 347288851
Flag: EXEMPT flag in sysui
Test: Unit tests
Change-Id: I4534d5f70876ec0cf4e2d78030864f78a8bfabb9
parent 9aabb9a9
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ import com.android.launcher3.widget.WidgetCell;
import com.android.launcher3.widget.model.WidgetsListBaseEntry;
import com.android.launcher3.widget.picker.search.SearchModeListener;
import com.android.launcher3.widget.picker.search.WidgetsSearchBar;
import com.android.launcher3.widget.picker.search.WidgetsSearchBar.WidgetsSearchDataProvider;
import com.android.launcher3.workprofile.PersonalWorkPagedView;
import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.OnActivePageChangedListener;

@@ -245,8 +246,12 @@ public class WidgetsFullSheet extends BaseWidgetSheet
        mSearchBarContainer = mSearchScrollView.findViewById(R.id.search_bar_container);
        mSearchBar = mSearchScrollView.findViewById(R.id.widgets_search_bar);

        mSearchBar.initialize(
                mActivityContext.getPopupDataProvider(), /* searchModeListener= */ this);
        mSearchBar.initialize(new WidgetsSearchDataProvider() {
            @Override
            public List<WidgetsListBaseEntry> getWidgets() {
                return getWidgetsToDisplay();
            }
        }, /* searchModeListener= */ this);
    }

    private void setDeviceManagementResources() {
+2 −2
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import androidx.annotation.Nullable;

import com.android.launcher3.ExtendedEditText;
import com.android.launcher3.R;
import com.android.launcher3.popup.PopupDataProvider;

/**
 * View for a search bar with an edit text with a cancel button.
@@ -51,7 +50,8 @@ public class LauncherWidgetsSearchBar extends LinearLayout implements WidgetsSea
    }

    @Override
    public void initialize(PopupDataProvider dataProvider, SearchModeListener searchModeListener) {
    public void initialize(WidgetsSearchDataProvider dataProvider,
            SearchModeListener searchModeListener) {
        mController = new WidgetsSearchBarController(
                new SimpleWidgetsSearchAlgorithm(dataProvider),
                mEditText, mCancelButton, searchModeListener);
+5 −5
Original line number Diff line number Diff line
@@ -21,13 +21,13 @@ import static com.android.launcher3.search.StringMatcherUtility.matches;
import android.os.Handler;

import com.android.launcher3.model.WidgetItem;
import com.android.launcher3.popup.PopupDataProvider;
import com.android.launcher3.search.SearchAlgorithm;
import com.android.launcher3.search.SearchCallback;
import com.android.launcher3.search.StringMatcherUtility.StringMatcher;
import com.android.launcher3.widget.model.WidgetsListBaseEntry;
import com.android.launcher3.widget.model.WidgetsListContentEntry;
import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
import com.android.launcher3.widget.picker.search.WidgetsSearchBar.WidgetsSearchDataProvider;

import java.util.ArrayList;
import java.util.List;
@@ -39,9 +39,9 @@ import java.util.stream.Collectors;
public final class SimpleWidgetsSearchAlgorithm implements SearchAlgorithm<WidgetsListBaseEntry> {

    private final Handler mResultHandler;
    private final PopupDataProvider mDataProvider;
    private final WidgetsSearchDataProvider mDataProvider;

    public SimpleWidgetsSearchAlgorithm(PopupDataProvider dataProvider) {
    public SimpleWidgetsSearchAlgorithm(WidgetsSearchDataProvider dataProvider) {
        mResultHandler = new Handler();
        mDataProvider = dataProvider;
    }
@@ -63,9 +63,9 @@ public final class SimpleWidgetsSearchAlgorithm implements SearchAlgorithm<Widge
     * Returns entries for all matched widgets
     */
    public static ArrayList<WidgetsListBaseEntry> getFilteredWidgets(
            PopupDataProvider dataProvider, String input) {
            WidgetsSearchDataProvider dataProvider, String input) {
        ArrayList<WidgetsListBaseEntry> results = new ArrayList<>();
        dataProvider.getAllWidgets().stream()
        dataProvider.getWidgets().stream()
                .filter(entry -> entry instanceof WidgetsListHeaderEntry)
                .forEach(headerEntry -> {
                    List<WidgetItem> matchedWidgetItems = filterWidgetItems(
+15 −2
Original line number Diff line number Diff line
@@ -16,7 +16,9 @@

package com.android.launcher3.widget.picker.search;

import com.android.launcher3.popup.PopupDataProvider;
import com.android.launcher3.widget.model.WidgetsListBaseEntry;

import java.util.List;

/**
 * Interface for a widgets picker search bar.
@@ -25,7 +27,7 @@ public interface WidgetsSearchBar {
    /**
     * Attaches a controller to the search bar which interacts with {@code searchModeListener}.
     */
    void initialize(PopupDataProvider dataProvider, SearchModeListener searchModeListener);
    void initialize(WidgetsSearchDataProvider dataProvider, SearchModeListener searchModeListener);

    /**
     * Clears search bar.
@@ -44,4 +46,15 @@ public interface WidgetsSearchBar {
     * Sets the vertical location, in pixels, of this search bar relative to its top position.
     */
    void setTranslationY(float translationY);


    /**
     * Provides corpus from which search results must be returned.
     */
    interface WidgetsSearchDataProvider {
        /**
         * Returns the widgets from which the search should return the results.
         */
        List<WidgetsListBaseEntry> getWidgets();
    }
}
+6 −6
Original line number Diff line number Diff line
@@ -45,12 +45,12 @@ import com.android.launcher3.icons.ComponentWithLabel;
import com.android.launcher3.icons.IconCache;
import com.android.launcher3.model.WidgetItem;
import com.android.launcher3.model.data.PackageItemInfo;
import com.android.launcher3.popup.PopupDataProvider;
import com.android.launcher3.search.SearchCallback;
import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
import com.android.launcher3.widget.model.WidgetsListBaseEntry;
import com.android.launcher3.widget.model.WidgetsListContentEntry;
import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
import com.android.launcher3.widget.picker.search.WidgetsSearchBar.WidgetsSearchDataProvider;

import org.junit.Before;
import org.junit.Test;
@@ -79,7 +79,7 @@ public class SimpleWidgetsSearchAlgorithmTest {

    private SimpleWidgetsSearchAlgorithm mSimpleWidgetsSearchAlgorithm;
    @Mock
    private PopupDataProvider mDataProvider;
    private WidgetsSearchDataProvider mDataProvider;
    @Mock
    private SearchCallback<WidgetsListBaseEntry> mSearchCallback;

@@ -106,7 +106,7 @@ public class SimpleWidgetsSearchAlgorithmTest {

        mSimpleWidgetsSearchAlgorithm = MAIN_EXECUTOR.submit(
                () -> new SimpleWidgetsSearchAlgorithm(mDataProvider)).get();
        doReturn(Collections.EMPTY_LIST).when(mDataProvider).getAllWidgets();
        doReturn(Collections.EMPTY_LIST).when(mDataProvider).getWidgets();
    }

    @Test
@@ -114,7 +114,7 @@ public class SimpleWidgetsSearchAlgorithmTest {
        doReturn(List.of(mCalendarHeaderEntry, mCalendarContentEntry, mCameraHeaderEntry,
                mCameraContentEntry, mClockHeaderEntry, mClockContentEntry))
                .when(mDataProvider)
                .getAllWidgets();
                .getWidgets();

        assertEquals(List.of(
                WidgetsListHeaderEntry.createForSearch(
@@ -135,7 +135,7 @@ public class SimpleWidgetsSearchAlgorithmTest {
        doReturn(List.of(mCalendarHeaderEntry, mCalendarContentEntry, mCameraHeaderEntry,
                mCameraContentEntry))
                .when(mDataProvider)
                .getAllWidgets();
                .getWidgets();

        assertEquals(List.of(
                WidgetsListHeaderEntry.createForSearch(
@@ -162,7 +162,7 @@ public class SimpleWidgetsSearchAlgorithmTest {
        doReturn(List.of(mCalendarHeaderEntry, mCalendarContentEntry, mCameraHeaderEntry,
                mCameraContentEntry, mClockHeaderEntry, mClockContentEntry))
                .when(mDataProvider)
                .getAllWidgets();
                .getWidgets();
        mSimpleWidgetsSearchAlgorithm.doSearch("Ca", mSearchCallback);
        getInstrumentation().waitForIdleSync();
        verify(mSearchCallback).onSearchResult(