Loading packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt +8 −7 Original line number Diff line number Diff line Loading @@ -439,15 +439,16 @@ class ControlsControllerImpl @Inject constructor ( Log.d(TAG, "Controls not available") return } // Assume that non STATUS_OK responses may contain incomplete or invalid information about // the control, and do not attempt to update it if (control.getStatus() == Control.STATUS_OK) { executor.execute { val changed = Favorites.updateControls( componentName, listOf(control) ) if (changed) { if (Favorites.updateControls(componentName, listOf(control))) { persistenceWrapper.storeFavorites(Favorites.getAllStructures()) } } } uiController.onRefreshState(componentName, listOf(control)) } Loading packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt +37 −9 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ class ControlsControllerImplTest : SysuiTestCase() { verify(listingController).addCallback(capture(listingCallbackCaptor)) } private fun builderFromInfo( private fun statelessBuilderFromInfo( controlInfo: ControlInfo, structure: CharSequence = "" ): Control.StatelessBuilder { Loading @@ -170,6 +170,15 @@ class ControlsControllerImplTest : SysuiTestCase() { .setSubtitle(controlInfo.controlSubtitle).setStructure(structure) } private fun statefulBuilderFromInfo( controlInfo: ControlInfo, structure: CharSequence = "" ): Control.StatefulBuilder { return Control.StatefulBuilder(controlInfo.controlId, pendingIntent) .setDeviceType(controlInfo.deviceType).setTitle(controlInfo.controlTitle) .setSubtitle(controlInfo.controlSubtitle).setStructure(structure) } @Test fun testStartOnUser() { assertEquals(user, controller.currentUserId) Loading Loading @@ -236,7 +245,7 @@ class ControlsControllerImplTest : SysuiTestCase() { @Test fun testLoadForComponent_noFavorites() { var loaded = false val control = builderFromInfo(TEST_CONTROL_INFO).build() val control = statelessBuilderFromInfo(TEST_CONTROL_INFO).build() controller.loadForComponent(TEST_COMPONENT, Consumer { data -> val controls = data.allControls Loading @@ -263,8 +272,8 @@ class ControlsControllerImplTest : SysuiTestCase() { @Test fun testLoadForComponent_favorites() { var loaded = false val control = builderFromInfo(TEST_CONTROL_INFO).build() val control2 = builderFromInfo(TEST_CONTROL_INFO_2).build() val control = statelessBuilderFromInfo(TEST_CONTROL_INFO).build() val control2 = statelessBuilderFromInfo(TEST_CONTROL_INFO_2).build() controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO_2) delayableExecutor.runAllReady() Loading Loading @@ -445,7 +454,7 @@ class ControlsControllerImplTest : SysuiTestCase() { delayableExecutor.runAllReady() val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2) val control = builderFromInfo(newControlInfo).build() val control = statelessBuilderFromInfo(newControlInfo).build() controller.loadForComponent(TEST_COMPONENT, Consumer {}) Loading @@ -461,11 +470,11 @@ class ControlsControllerImplTest : SysuiTestCase() { } @Test fun testFavoriteInformationModifiedOnRefresh() { fun testFavoriteInformationModifiedOnRefreshWithOkStatus() { controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2) val control = builderFromInfo(newControlInfo).build() val control = statefulBuilderFromInfo(newControlInfo).setStatus(Control.STATUS_OK).build() controller.refreshStatus(TEST_COMPONENT, control) Loading @@ -476,6 +485,23 @@ class ControlsControllerImplTest : SysuiTestCase() { assertEquals(newControlInfo, favorites[0]) } @Test fun testFavoriteInformationNotModifiedOnRefreshWithNonOkStatus() { controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2) val control = statefulBuilderFromInfo(newControlInfo).setStatus(Control.STATUS_ERROR) .build() controller.refreshStatus(TEST_COMPONENT, control) delayableExecutor.runAllReady() val favorites = controller.getFavorites().flatMap { it.controls } assertEquals(1, favorites.size) assertEquals(TEST_CONTROL_INFO, favorites[0]) } @Test fun testSwitchUsers() { controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) Loading Loading @@ -762,7 +788,8 @@ class ControlsControllerImplTest : SysuiTestCase() { @Test fun testSeedFavoritesForComponent() { var succeeded = false val control = builderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure).build() val control = statelessBuilderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure) .build() controller.seedFavoritesForComponent(TEST_COMPONENT, Consumer { accepted -> succeeded = accepted Loading Loading @@ -803,7 +830,8 @@ class ControlsControllerImplTest : SysuiTestCase() { fun testSeedFavoritesForComponent_inProgressCallback() { var succeeded = false var seeded = false val control = builderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure).build() val control = statelessBuilderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure) .build() controller.seedFavoritesForComponent(TEST_COMPONENT, Consumer { accepted -> succeeded = accepted Loading Loading
packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt +8 −7 Original line number Diff line number Diff line Loading @@ -439,15 +439,16 @@ class ControlsControllerImpl @Inject constructor ( Log.d(TAG, "Controls not available") return } // Assume that non STATUS_OK responses may contain incomplete or invalid information about // the control, and do not attempt to update it if (control.getStatus() == Control.STATUS_OK) { executor.execute { val changed = Favorites.updateControls( componentName, listOf(control) ) if (changed) { if (Favorites.updateControls(componentName, listOf(control))) { persistenceWrapper.storeFavorites(Favorites.getAllStructures()) } } } uiController.onRefreshState(componentName, listOf(control)) } Loading
packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt +37 −9 Original line number Diff line number Diff line Loading @@ -161,7 +161,7 @@ class ControlsControllerImplTest : SysuiTestCase() { verify(listingController).addCallback(capture(listingCallbackCaptor)) } private fun builderFromInfo( private fun statelessBuilderFromInfo( controlInfo: ControlInfo, structure: CharSequence = "" ): Control.StatelessBuilder { Loading @@ -170,6 +170,15 @@ class ControlsControllerImplTest : SysuiTestCase() { .setSubtitle(controlInfo.controlSubtitle).setStructure(structure) } private fun statefulBuilderFromInfo( controlInfo: ControlInfo, structure: CharSequence = "" ): Control.StatefulBuilder { return Control.StatefulBuilder(controlInfo.controlId, pendingIntent) .setDeviceType(controlInfo.deviceType).setTitle(controlInfo.controlTitle) .setSubtitle(controlInfo.controlSubtitle).setStructure(structure) } @Test fun testStartOnUser() { assertEquals(user, controller.currentUserId) Loading Loading @@ -236,7 +245,7 @@ class ControlsControllerImplTest : SysuiTestCase() { @Test fun testLoadForComponent_noFavorites() { var loaded = false val control = builderFromInfo(TEST_CONTROL_INFO).build() val control = statelessBuilderFromInfo(TEST_CONTROL_INFO).build() controller.loadForComponent(TEST_COMPONENT, Consumer { data -> val controls = data.allControls Loading @@ -263,8 +272,8 @@ class ControlsControllerImplTest : SysuiTestCase() { @Test fun testLoadForComponent_favorites() { var loaded = false val control = builderFromInfo(TEST_CONTROL_INFO).build() val control2 = builderFromInfo(TEST_CONTROL_INFO_2).build() val control = statelessBuilderFromInfo(TEST_CONTROL_INFO).build() val control2 = statelessBuilderFromInfo(TEST_CONTROL_INFO_2).build() controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO_2) delayableExecutor.runAllReady() Loading Loading @@ -445,7 +454,7 @@ class ControlsControllerImplTest : SysuiTestCase() { delayableExecutor.runAllReady() val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2) val control = builderFromInfo(newControlInfo).build() val control = statelessBuilderFromInfo(newControlInfo).build() controller.loadForComponent(TEST_COMPONENT, Consumer {}) Loading @@ -461,11 +470,11 @@ class ControlsControllerImplTest : SysuiTestCase() { } @Test fun testFavoriteInformationModifiedOnRefresh() { fun testFavoriteInformationModifiedOnRefreshWithOkStatus() { controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2) val control = builderFromInfo(newControlInfo).build() val control = statefulBuilderFromInfo(newControlInfo).setStatus(Control.STATUS_OK).build() controller.refreshStatus(TEST_COMPONENT, control) Loading @@ -476,6 +485,23 @@ class ControlsControllerImplTest : SysuiTestCase() { assertEquals(newControlInfo, favorites[0]) } @Test fun testFavoriteInformationNotModifiedOnRefreshWithNonOkStatus() { controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2) val control = statefulBuilderFromInfo(newControlInfo).setStatus(Control.STATUS_ERROR) .build() controller.refreshStatus(TEST_COMPONENT, control) delayableExecutor.runAllReady() val favorites = controller.getFavorites().flatMap { it.controls } assertEquals(1, favorites.size) assertEquals(TEST_CONTROL_INFO, favorites[0]) } @Test fun testSwitchUsers() { controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO) Loading Loading @@ -762,7 +788,8 @@ class ControlsControllerImplTest : SysuiTestCase() { @Test fun testSeedFavoritesForComponent() { var succeeded = false val control = builderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure).build() val control = statelessBuilderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure) .build() controller.seedFavoritesForComponent(TEST_COMPONENT, Consumer { accepted -> succeeded = accepted Loading Loading @@ -803,7 +830,8 @@ class ControlsControllerImplTest : SysuiTestCase() { fun testSeedFavoritesForComponent_inProgressCallback() { var succeeded = false var seeded = false val control = builderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure).build() val control = statelessBuilderFromInfo(TEST_CONTROL_INFO, TEST_STRUCTURE_INFO.structure) .build() controller.seedFavoritesForComponent(TEST_COMPONENT, Consumer { accepted -> succeeded = accepted Loading