summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Coco Duan <cocod@google.com> 2024-02-07 18:25:25 +0000
committer Coco Duan <cocod@google.com> 2024-02-07 23:03:21 +0000
commit09b1588e58717495102c7834fce8cb1f5bc0a3f4 (patch)
treed2d24526803e2e6b4400dc5b5e4834e89331a1a1
parent3f220263b9de9c161f174abda4f61653434bae39 (diff)
Clean up delete widget functions in CommunalWidgetRepository
This follow-up change (after ag/26073820) is to consolidate the two deleteFromHost() and deleteFromDb() into one deleteWidget() function for simplicity. Still use DB as the source of truth to check whether the id requested to be deleted exists then delete. If returning false, nothing will be deleted from DB or widget host. Bug: b/323265998 Test: atest CommunalWidgetRepositoryImplTest Flag: ACONFIG com.android.systemui.communal_hub STAGING Change-Id: Ied2c69bcdfad7007bbcb6762cb96ff2239752729
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt15
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt25
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/domain/interactor/CommunalInteractor.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/ui/viewmodel/CommunalEditModeViewModel.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/widgets/CommunalAppWidgetHostStartable.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/communal/data/repository/FakeCommunalWidgetRepository.kt6
6 files changed, 25 insertions, 34 deletions
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 475179dfdb72..a54a00d539b8 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.Test
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 @@ class CommunalWidgetRepositoryImplTest : SysuiTestCase() {
}
@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 2ac9d053f8d0..e4c91957ee56 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 @@ interface CommunalWidgetRepository {
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 @@ constructor(
}
}
- 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 950ac3c3aae6..33520ef64ce8 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
@@ -238,14 +238,11 @@ constructor(
) = 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 69d55815fe01..0b355cc10db5 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 @@ constructor(
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 6fd0fbe80fd7..4ddd7681dd98 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 @@ constructor(
.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 7301404eada0..fab64e38e1f8 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 @@ class FakeCommunalWidgetRepository(private val coroutineScope: CoroutineScope) :
}
}
- override fun deleteWidgetFromDb(widgetId: Int) {
+ override fun deleteWidget(widgetId: Int) {
if (_communalWidgets.value.none { it.appWidgetId == widgetId }) {
return
}
@@ -44,10 +44,6 @@ class FakeCommunalWidgetRepository(private val coroutineScope: CoroutineScope) :
_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))
}