Merge "Clean up delete widget functions in CommunalWidgetRepository" into main
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt
index 475179d..a54a00d 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt
@@ -52,6 +52,7 @@
 import org.junit.runner.RunWith
 import org.mockito.Mock
 import org.mockito.Mockito.anyInt
+import org.mockito.Mockito.eq
 import org.mockito.Mockito.never
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
@@ -198,23 +199,27 @@
         }
 
     @Test
-    fun deleteWidgetFromDb() =
+    fun deleteWidget_deletefromDbTrue_alsoDeleteFromHost() =
         testScope.runTest {
             val id = 1
-            underTest.deleteWidgetFromDb(id)
+            whenever(communalWidgetDao.deleteWidgetById(eq(id))).thenReturn(true)
+            underTest.deleteWidget(id)
             runCurrent()
 
             verify(communalWidgetDao).deleteWidgetById(id)
+            verify(appWidgetHost).deleteAppWidgetId(id)
         }
 
     @Test
-    fun deleteWidgetFromHost() =
+    fun deleteWidget_deletefromDbFalse_doesNotDeleteFromHost() =
         testScope.runTest {
             val id = 1
-            underTest.deleteWidgetFromHost(id)
+            whenever(communalWidgetDao.deleteWidgetById(eq(id))).thenReturn(false)
+            underTest.deleteWidget(id)
             runCurrent()
 
-            verify(appWidgetHost).deleteAppWidgetId(id)
+            verify(communalWidgetDao).deleteWidgetById(id)
+            verify(appWidgetHost, never()).deleteAppWidgetId(id)
         }
 
     @Test
diff --git a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt
index 2ac9d05..e4c9195 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt
@@ -54,11 +54,12 @@
         configurator: WidgetConfigurator? = null
     ) {}
 
-    /** Delete a widget by id from the database. */
-    fun deleteWidgetFromDb(widgetId: Int) {}
-
-    /** Delete a widget by id from app widget host. */
-    fun deleteWidgetFromHost(widgetId: Int) {}
+    /**
+     * Delete a widget by id from the database and app widget host.
+     *
+     * @param widgetId id of the widget to remove.
+     */
+    fun deleteWidget(widgetId: Int) {}
 
     /**
      * Update the order of widgets in the database.
@@ -146,23 +147,15 @@
         }
     }
 
-    override fun deleteWidgetFromDb(widgetId: Int) {
+    override fun deleteWidget(widgetId: Int) {
         bgScope.launch {
             if (communalWidgetDao.deleteWidgetById(widgetId)) {
-                logger.i("Deleted widget with id $widgetId from DB .")
-            } else {
-                logger.w("Widget with id $widgetId cannot be deleted from DB.")
+                appWidgetHost.deleteAppWidgetId(widgetId)
+                logger.i("Deleted widget with id $widgetId.")
             }
         }
     }
 
-    override fun deleteWidgetFromHost(widgetId: Int) {
-        bgScope.launch {
-            appWidgetHost.deleteAppWidgetId(widgetId)
-            logger.i("Deleted widget with id $widgetId.")
-        }
-    }
-
     override fun updateWidgetOrder(widgetIdToPriorityMap: Map<Int, Int>) {
         bgScope.launch {
             communalWidgetDao.updateWidgetOrder(widgetIdToPriorityMap)
diff --git a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt
index 23f590e..b4f4099 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt
@@ -236,14 +236,11 @@
     ) = widgetRepository.addWidget(componentName, priority, configurator)
 
     /**
-     * Delete a widget by id from the database. [CommunalAppWidgetHostStartable] invokes this
-     * function to manage the deletion from the database for uninstalled or user-deleted widgets,
-     * following the removal of a widget from the host.
+     * Delete a widget by id. Called when user deletes a widget from the hub or a widget is
+     * uninstalled from App widget host.
      */
-    fun deleteWidgetFromDb(id: Int) = widgetRepository.deleteWidgetFromDb(id)
+    fun deleteWidget(id: Int) = widgetRepository.deleteWidget(id)
 
-    /** Delete a widget by id from AppWidgetHost. Called when user deletes a widget from the hub */
-    fun deleteWidgetFromHost(id: Int) = widgetRepository.deleteWidgetFromHost(id)
     /**
      * Reorder the widgets.
      *
diff --git a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
index 69d5581..0b355cc 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt
@@ -62,7 +62,7 @@
     override val reorderingWidgets: StateFlow<Boolean>
         get() = _reorderingWidgets
 
-    override fun onDeleteWidget(id: Int) = communalInteractor.deleteWidgetFromHost(id)
+    override fun onDeleteWidget(id: Int) = communalInteractor.deleteWidget(id)
 
     override fun onReorderWidgets(widgetIdToPriorityMap: Map<Int, Int>) =
         communalInteractor.updateWidgetOrder(widgetIdToPriorityMap)
diff --git a/packages/SystemUI/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartable.kt b/packages/SystemUI/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartable.kt
index 6fd0fbe..4ddd768 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartable.kt
@@ -50,7 +50,7 @@
             .launchIn(bgScope)
 
         appWidgetHost.appWidgetIdToRemove
-            .onEach { appWidgetId -> communalInteractor.deleteWidgetFromDb(appWidgetId) }
+            .onEach { appWidgetId -> communalInteractor.deleteWidget(id = appWidgetId) }
             .launchIn(bgScope)
     }
 
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalWidgetRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalWidgetRepository.kt
index 7301404..fab64e3 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalWidgetRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalWidgetRepository.kt
@@ -36,7 +36,7 @@
         }
     }
 
-    override fun deleteWidgetFromDb(widgetId: Int) {
+    override fun deleteWidget(widgetId: Int) {
         if (_communalWidgets.value.none { it.appWidgetId == widgetId }) {
             return
         }
@@ -44,10 +44,6 @@
         _communalWidgets.value = _communalWidgets.value.filter { it.appWidgetId != widgetId }
     }
 
-    override fun deleteWidgetFromHost(widgetId: Int) {
-        deleteWidgetFromDb(widgetId)
-    }
-
     private fun onConfigured(id: Int, providerInfo: AppWidgetProviderInfo, priority: Int) {
         _communalWidgets.value += listOf(CommunalWidgetContentModel(id, providerInfo, priority))
     }