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))
}