diff options
| author | 2024-02-07 18:25:25 +0000 | |
|---|---|---|
| committer | 2024-02-07 23:03:21 +0000 | |
| commit | 09b1588e58717495102c7834fce8cb1f5bc0a3f4 (patch) | |
| tree | d2d24526803e2e6b4400dc5b5e4834e89331a1a1 | |
| parent | 3f220263b9de9c161f174abda4f61653434bae39 (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
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)) } |