Add more information to removed controls

Removed controls should have as much cached information as possible.
This adds structure name and subtitle.
Also, if the structure is not set it would cause issues (as empty
structure is a valid structure).

Fixes: 151089232
Test: atest ControlsControllerImplTest
Test: manual
Change-Id: I6cf5f285fe85ddc78ae59133dcf406793293a3f7
This commit is contained in:
Fabian Kozynski
2020-03-26 12:07:21 -04:00
parent 5cb264d9df
commit a9803044be
2 changed files with 24 additions and 14 deletions

View File

@@ -252,10 +252,17 @@ class ControlsControllerImpl @Inject constructor (
it.controlId in favoritesForComponentKeys
)
}
val removedControls = mutableListOf<ControlStatus>()
Favorites.getStructuresForComponent(componentName).forEach { st ->
st.controls.forEach {
if (it.controlId in removed) {
val r = createRemovedStatus(componentName, it, st.structure)
removedControls.add(r)
}
}
}
val loadData = createLoadDataObject(
Favorites.getControlsForComponent(componentName)
.filter { it.controlId in removed }
.map { createRemovedStatus(componentName, it) } +
removedControls +
controlsWithFavorite,
favoritesForComponentKeys
)
@@ -266,17 +273,15 @@ class ControlsControllerImpl @Inject constructor (
override fun error(message: String) {
loadCanceller = null
executor.execute {
val loadData = Favorites.getControlsForComponent(componentName)
.let { controls ->
val keys = controls.map { it.controlId }
createLoadDataObject(
controls.map {
createRemovedStatus(componentName, it, false)
},
keys,
true
)
}
val controls = Favorites.getStructuresForComponent(componentName)
.flatMap { st ->
st.controls.map {
createRemovedStatus(componentName, it, st.structure,
false)
}
}
val keys = controls.map { it.control.controlId }
val loadData = createLoadDataObject(controls, keys, true)
dataCallback.accept(loadData)
}
}
@@ -372,6 +377,7 @@ class ControlsControllerImpl @Inject constructor (
private fun createRemovedStatus(
componentName: ComponentName,
controlInfo: ControlInfo,
structure: CharSequence,
setRemoved: Boolean = true
): ControlStatus {
val intent = Intent(Intent.ACTION_MAIN).apply {
@@ -384,6 +390,8 @@ class ControlsControllerImpl @Inject constructor (
0)
val control = Control.StatelessBuilder(controlInfo.controlId, pendingIntent)
.setTitle(controlInfo.controlTitle)
.setSubtitle(controlInfo.controlSubtitle)
.setStructure(structure)
.setDeviceType(controlInfo.deviceType)
.build()
return ControlStatus(control, componentName, true, setRemoved)

View File

@@ -307,6 +307,7 @@ class ControlsControllerImplTest : SysuiTestCase() {
assertEquals(1, controls.size)
val controlStatus = controls[0]
assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId)
assertEquals(TEST_STRUCTURE_INFO.structure, controlStatus.control.structure)
assertTrue(controlStatus.favorite)
assertTrue(controlStatus.removed)
@@ -337,6 +338,7 @@ class ControlsControllerImplTest : SysuiTestCase() {
assertEquals(1, controls.size)
val controlStatus = controls[0]
assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId)
assertEquals(TEST_STRUCTURE_INFO.structure, controlStatus.control.structure)
assertTrue(controlStatus.favorite)
assertFalse(controlStatus.removed)