Merge "Adding suggested app as part of app discovery." into ub-launcher3-dorval-polish
diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
index f291a80..7963719 100644
--- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
+++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
@@ -183,7 +183,10 @@
     private final List<ComponentKey> mPredictedAppComponents = new ArrayList<>();
     // The set of predicted apps resolved from the component names and the current set of apps
     private final List<AppInfo> mPredictedApps = new ArrayList<>();
+    // The set of apps returned from a discovery service while searching
     private final List<AppDiscoveryAppInfo> mDiscoveredApps = new ArrayList<>();
+    // The suggested app returned by a discovery service
+    private AppDiscoveryAppInfo mSuggestedApp;
 
     // The of ordered component names as a result of a search query
     private ArrayList<ComponentKey> mSearchResults;
@@ -288,6 +291,9 @@
                 @NonNull AppDiscoveryUpdateState state) {
         mAppDiscoveryUpdateState = state;
         switch (state) {
+            case SUGGESTED:
+                mSuggestedApp = app != null ? new AppDiscoveryAppInfo(app) : null;
+                break;
             case START:
                 mDiscoveredApps.clear();
                 break;
@@ -435,6 +441,7 @@
         // Process the predicted app components
         mPredictedApps.clear();
         if (mPredictedAppComponents != null && !mPredictedAppComponents.isEmpty() && !hasFilter()) {
+            int suggestedAppsCount = mSuggestedApp != null ? 1 : 0;
             for (ComponentKey ck : mPredictedAppComponents) {
                 AppInfo info = mComponentToAppMap.get(ck);
                 if (info != null) {
@@ -445,11 +452,16 @@
                     }
                 }
                 // Stop at the number of predicted apps
-                if (mPredictedApps.size() == mNumPredictedAppsPerRow) {
+                if (mPredictedApps.size() + suggestedAppsCount == mNumPredictedAppsPerRow) {
                     break;
                 }
             }
 
+            if (mSuggestedApp != null) {
+                // adding suggested app as the last predicted app
+                mPredictedApps.add(mSuggestedApp);
+            }
+
             if (!mPredictedApps.isEmpty()) {
                 // Add a section for the predictions
                 lastFastScrollerSectionInfo = new FastScrollSectionInfo("");
diff --git a/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java b/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java
index 0700a10..6c68044 100644
--- a/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java
+++ b/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java
@@ -17,5 +17,5 @@
 package com.android.launcher3.discovery;
 
 public enum AppDiscoveryUpdateState {
-    START, UPDATE, END
+    START, UPDATE, END, SUGGESTED
 }