Moving bindSmartspaceWidget to ModelCallbacks

Changes are part of go/launcher_SoR .

Flag: NA
Bug: 301108526
Test: This is a no-op change, compiling should be the test
Change-Id: I960cb767e3c4db4a952e019ee489ec1611e2dbd2
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index dd03035..776f766 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -27,7 +27,6 @@
 import static com.android.launcher3.AbstractFloatingView.TYPE_ICON_SURFACE;
 import static com.android.launcher3.AbstractFloatingView.TYPE_REBIND_SAFE;
 import static com.android.launcher3.AbstractFloatingView.getTopOpenViewWithType;
-import static com.android.launcher3.BuildConfig.APPLICATION_ID;
 import static com.android.launcher3.BuildConfig.QSB_ON_FIRST_SCREEN;
 import static com.android.launcher3.LauncherAnimUtils.HOTSEAT_SCALE_PROPERTY_FACTORY;
 import static com.android.launcher3.LauncherAnimUtils.SCALE_INDEX_WIDGET_TRANSITION;
@@ -49,8 +48,8 @@
 import static com.android.launcher3.LauncherConstants.TraceEvents.COLD_STARTUP_TRACE_METHOD_NAME;
 import static com.android.launcher3.LauncherConstants.TraceEvents.DISPLAY_ALL_APPS_TRACE_COOKIE;
 import static com.android.launcher3.LauncherConstants.TraceEvents.DISPLAY_ALL_APPS_TRACE_METHOD_NAME;
-import static com.android.launcher3.LauncherConstants.TraceEvents.DISPLAY_WORKSPACE_TRACE_METHOD_NAME;
 import static com.android.launcher3.LauncherConstants.TraceEvents.DISPLAY_WORKSPACE_TRACE_COOKIE;
+import static com.android.launcher3.LauncherConstants.TraceEvents.DISPLAY_WORKSPACE_TRACE_METHOD_NAME;
 import static com.android.launcher3.LauncherConstants.TraceEvents.ON_CREATE_EVT;
 import static com.android.launcher3.LauncherConstants.TraceEvents.ON_NEW_INTENT_EVT;
 import static com.android.launcher3.LauncherConstants.TraceEvents.ON_RESUME_EVT;
@@ -2845,32 +2844,7 @@
 
     @Override
     public void bindSmartspaceWidget() {
-        CellLayout cl = mWorkspace.getScreenWithId(FIRST_SCREEN_ID);
-        int spanX = InvariantDeviceProfile.INSTANCE.get(this).numSearchContainerColumns;
-        if (cl != null) {
-            for (int col = 0; col < spanX; col++) {
-                if (cl.isOccupied(col, 0)) {
-                    return;
-                }
-            }
-        } else {
-            return;
-        }
-
-        WidgetsListBaseEntry widgetsListBaseEntry = getPopupDataProvider()
-                .getAllWidgets().stream().filter(
-                        item -> item.mPkgItem.packageName.equals(
-                                APPLICATION_ID))
-                .findFirst()
-                .orElse(null);
-        if (widgetsListBaseEntry != null) {
-            LauncherAppWidgetProviderInfo launcherAppWidgetProviderInfo =
-                    widgetsListBaseEntry.mWidgets.get(0).widgetInfo;
-            PendingAddWidgetInfo info = new PendingAddWidgetInfo(launcherAppWidgetProviderInfo,
-                    CONTAINER_DESKTOP);
-            addPendingItem(info, info.container, FIRST_SCREEN_ID, new int[]{0, 0}, info.spanX,
-                    info.spanY);
-        }
+        mModelCallbacks.bindSmartspaceWidget();
     }
 
     @Override
diff --git a/src/com/android/launcher3/ModelCallbacks.kt b/src/com/android/launcher3/ModelCallbacks.kt
index 8304e96..2c3e74d 100644
--- a/src/com/android/launcher3/ModelCallbacks.kt
+++ b/src/com/android/launcher3/ModelCallbacks.kt
@@ -12,6 +12,7 @@
 import com.android.launcher3.util.IntSet as LIntSet
 import com.android.launcher3.util.PackageUserKey
 import com.android.launcher3.util.Preconditions
+import com.android.launcher3.widget.PendingAddWidgetInfo
 import com.android.launcher3.widget.model.WidgetsListBaseEntry
 import java.util.function.Predicate
 
@@ -135,4 +136,34 @@
         }
         return result
     }
+
+    override fun bindSmartspaceWidget() {
+        val cl: CellLayout? =
+            launcher.workspace.getScreenWithId(WorkspaceLayoutManager.FIRST_SCREEN_ID)
+        val spanX = InvariantDeviceProfile.INSTANCE.get(launcher).numSearchContainerColumns
+
+        if (cl?.isRegionVacant(0, 0, spanX, 1) != true) {
+            return
+        }
+
+        val widgetsListBaseEntry: WidgetsListBaseEntry =
+            launcher.popupDataProvider.allWidgets.firstOrNull { item: WidgetsListBaseEntry ->
+                item.mPkgItem.packageName == BuildConfig.APPLICATION_ID
+            }
+                ?: return
+
+        val info =
+            PendingAddWidgetInfo(
+                widgetsListBaseEntry.mWidgets[0].widgetInfo,
+                LauncherSettings.Favorites.CONTAINER_DESKTOP
+            )
+        launcher.addPendingItem(
+            info,
+            info.container,
+            WorkspaceLayoutManager.FIRST_SCREEN_ID,
+            intArrayOf(0, 0),
+            info.spanX,
+            info.spanY
+        )
+    }
 }