Add entry and cursor location in GetSuggestionRequest

Bug: 223728521
Test: manual
Change-Id: I838896e2fad2d37c22e665473d59cc1b2c9a14d7
diff --git a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
index fd8945a..09344c8 100644
--- a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
+++ b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
@@ -100,12 +100,14 @@
     @Override
     public void afterTextChanged(final Editable s) {
         mQuery = s.toString();
+        mInput.getSelectionStart();
         if (mQuery.isEmpty()) {
             mSearchAlgorithm.cancel(true);
             mCallback.clearSearchResult();
         } else {
             mSearchAlgorithm.cancel(false);
-            mSearchAlgorithm.doSearch(mQuery, mTextConversions, mCallback);
+            mSearchAlgorithm.doSearch(mQuery, mInput.getSelectionStart(), mTextConversions,
+                    mCallback);
         }
     }
 
@@ -115,7 +117,7 @@
         }
         // If play store continues auto updating an app, we want to show partial result.
         mSearchAlgorithm.cancel(false);
-        mSearchAlgorithm.doSearch(mQuery, mCallback);
+        mSearchAlgorithm.doSearch(mQuery, mInput.getSelectionStart(), mCallback);
     }
 
     @Override
diff --git a/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java b/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java
index 222c8fe..62b7807 100644
--- a/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java
+++ b/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java
@@ -58,7 +58,7 @@
     }
 
     @Override
-    public void doSearch(String query, SearchCallback<AdapterItem> callback) {
+    public void doSearch(String query, int cursorLocation, SearchCallback<AdapterItem> callback) {
         mAppState.getModel().enqueueModelUpdateTask(new BaseModelUpdateTask() {
             @Override
             public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
diff --git a/src/com/android/launcher3/search/SearchAlgorithm.java b/src/com/android/launcher3/search/SearchAlgorithm.java
index 96a15f4..8d85021 100644
--- a/src/com/android/launcher3/search/SearchAlgorithm.java
+++ b/src/com/android/launcher3/search/SearchAlgorithm.java
@@ -25,13 +25,14 @@
     /**
      * Performs search and sends the result to {@link SearchCallback}.
      */
-    void doSearch(String query, SearchCallback<T> callback);
+    void doSearch(String query, int cursorLocation, SearchCallback<T> callback);
 
     /**
      * Performs search with {@code query} and the {@code suggestedQueries}/
      */
-    default void doSearch(String query, String[] suggestedQueries, SearchCallback<T> callback) {
-        doSearch(query, callback);
+    default void doSearch(String query, int cursorLocation, String[] suggestedQueries,
+            SearchCallback<T> callback) {
+        doSearch(query, cursorLocation, callback);
     }
 
     /**
diff --git a/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithm.java b/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithm.java
index 9be3b5f..1e58154 100644
--- a/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithm.java
+++ b/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithm.java
@@ -48,7 +48,8 @@
     }
 
     @Override
-    public void doSearch(String query, SearchCallback<WidgetsListBaseEntry> callback) {
+    public void doSearch(String query, int cursorLocation,
+            SearchCallback<WidgetsListBaseEntry> callback) {
         ArrayList<WidgetsListBaseEntry> result = getFilteredWidgets(mDataProvider, query);
         mResultHandler.post(() -> callback.onSearchResult(query, result));
     }
diff --git a/src/com/android/launcher3/widget/picker/search/WidgetsSearchBarController.java b/src/com/android/launcher3/widget/picker/search/WidgetsSearchBarController.java
index 2751a52..35a2dbd 100644
--- a/src/com/android/launcher3/widget/picker/search/WidgetsSearchBarController.java
+++ b/src/com/android/launcher3/widget/picker/search/WidgetsSearchBarController.java
@@ -71,7 +71,7 @@
         } else {
             mSearchAlgorithm.cancel(/* interruptActiveRequests= */ false);
             mSearchModeListener.enterSearchMode();
-            mSearchAlgorithm.doSearch(mQuery, this);
+            mSearchAlgorithm.doSearch(mQuery, mInput.getSelectionStart(), this);
             mCancelButton.setVisibility(VISIBLE);
         }
     }
diff --git a/tests/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithmTest.java b/tests/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithmTest.java
index d812ab0..945c992 100644
--- a/tests/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithmTest.java
+++ b/tests/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithmTest.java
@@ -163,7 +163,7 @@
                 mCameraContentEntry, mClockHeaderEntry, mClockContentEntry))
                 .when(mDataProvider)
                 .getAllWidgets();
-        mSimpleWidgetsSearchAlgorithm.doSearch("Ca", mSearchCallback);
+        mSimpleWidgetsSearchAlgorithm.doSearch("Ca", 2, mSearchCallback);
         MAIN_EXECUTOR.submit(() -> { }).get();
         verify(mSearchCallback).onSearchResult(
                 matches("Ca"), argThat(a -> a != null && !a.isEmpty()));
diff --git a/tests/src/com/android/launcher3/widget/picker/search/WidgetsSearchBarControllerTest.java b/tests/src/com/android/launcher3/widget/picker/search/WidgetsSearchBarControllerTest.java
index 583d37f..cff601e 100644
--- a/tests/src/com/android/launcher3/widget/picker/search/WidgetsSearchBarControllerTest.java
+++ b/tests/src/com/android/launcher3/widget/picker/search/WidgetsSearchBarControllerTest.java
@@ -86,7 +86,7 @@
     public void afterTextChanged_shouldDoSearch() {
         mEditText.setText("abc");
 
-        verify(mSearchAlgorithm).doSearch(eq("abc"), any());
+        verify(mSearchAlgorithm).doSearch(eq("abc"), 3, any());
     }
 
     @Test