Remove CONTROLS_MANAGEMENT_NEW_FLOWS flag

Test: manual add/edit app control in Device Controls
Test: atest ControlsEditingActivityTest
Test: atest CibtriksFavoritingActivityTest
Test: atest ControlsUiControllerImplTest
Fixes: 292236957
Change-Id: I155e43ccf8caa55818a03425bbab48ab2d59b614
This commit is contained in:
Anton Potapov
2023-07-21 17:32:55 +01:00
parent 88c874299e
commit a55613e620
6 changed files with 14 additions and 142 deletions

View File

@@ -40,8 +40,6 @@ import com.android.systemui.controls.controller.ControlsControllerImpl
import com.android.systemui.controls.controller.StructureInfo
import com.android.systemui.controls.ui.ControlsActivity
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.settings.UserTracker
import java.util.concurrent.Executor
import javax.inject.Inject
@@ -50,7 +48,6 @@ import javax.inject.Inject
* Activity for rearranging and removing controls for a given structure
*/
open class ControlsEditingActivity @Inject constructor(
featureFlags: FeatureFlags,
@Main private val mainExecutor: Executor,
private val controller: ControlsControllerImpl,
private val userTracker: UserTracker,
@@ -76,8 +73,6 @@ open class ControlsEditingActivity @Inject constructor(
private var isFromFavoriting: Boolean = false
private val isNewFlowEnabled: Boolean =
featureFlags.isEnabled(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS)
private val userTrackerCallback: UserTracker.Callback = object : UserTracker.Callback {
private val startingUser = controller.currentUserId
@@ -176,7 +171,7 @@ open class ControlsEditingActivity @Inject constructor(
private fun bindButtons() {
addControls = requireViewById<Button>(R.id.addControls).apply {
isEnabled = true
visibility = if (isNewFlowEnabled) View.VISIBLE else View.GONE
visibility = View.VISIBLE
setOnClickListener {
if (saveButton.isEnabled) {
// The user has made changes

View File

@@ -33,7 +33,6 @@ import android.view.ViewStub
import android.widget.Button
import android.widget.FrameLayout
import android.widget.TextView
import android.widget.Toast
import android.window.OnBackInvokedCallback
import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
@@ -41,24 +40,19 @@ import androidx.annotation.VisibleForTesting
import androidx.viewpager2.widget.ViewPager2
import com.android.systemui.Prefs
import com.android.systemui.R
import com.android.systemui.controls.ControlsServiceInfo
import com.android.systemui.controls.TooltipManager
import com.android.systemui.controls.controller.ControlsControllerImpl
import com.android.systemui.controls.controller.StructureInfo
import com.android.systemui.controls.ui.ControlsActivity
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.settings.UserTracker
import java.text.Collator
import java.util.concurrent.Executor
import javax.inject.Inject
open class ControlsFavoritingActivity @Inject constructor(
featureFlags: FeatureFlags,
@Main private val executor: Executor,
private val controller: ControlsControllerImpl,
private val listingController: ControlsListingController,
private val userTracker: UserTracker,
) : ComponentActivity() {
@@ -92,7 +86,6 @@ open class ControlsFavoritingActivity @Inject constructor(
private lateinit var pageIndicator: ManagementPageIndicator
private var mTooltipManager: TooltipManager? = null
private lateinit var doneButton: View
private lateinit var otherAppsButton: View
private lateinit var rearrangeButton: Button
private var listOfStructures = emptyList<StructureContainer>()
@@ -104,8 +97,6 @@ open class ControlsFavoritingActivity @Inject constructor(
get() = openSource == EXTRA_SOURCE_VALUE_FROM_PROVIDER_SELECTOR
private val fromEditing: Boolean
get() = openSource == EXTRA_SOURCE_VALUE_FROM_EDITING
private val isNewFlowEnabled: Boolean =
featureFlags.isEnabled(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS)
private val userTrackerCallback: UserTracker.Callback = object : UserTracker.Callback {
private val startingUser = controller.currentUserId
@@ -124,20 +115,6 @@ open class ControlsFavoritingActivity @Inject constructor(
onBackPressed()
}
private val listingCallback = object : ControlsListingController.ControlsListingCallback {
override fun onServicesUpdated(serviceInfos: List<ControlsServiceInfo>) {
if (serviceInfos.size > 1) {
val newVisibility = if (isNewFlowEnabled) View.GONE else View.VISIBLE
if (otherAppsButton.visibility != newVisibility) {
otherAppsButton.post {
otherAppsButton.visibility = newVisibility
}
}
}
}
}
override fun onBackPressed() {
if (fromEditing) {
animateExitAndFinish()
@@ -342,7 +319,7 @@ open class ControlsFavoritingActivity @Inject constructor(
getString(R.string.controls_favorite_rearrange_button)
}
isEnabled = false
visibility = if (isNewFlowEnabled) View.VISIBLE else View.GONE
visibility = View.VISIBLE
setOnClickListener {
if (component == null) return@setOnClickListener
saveFavorites()
@@ -361,24 +338,6 @@ open class ControlsFavoritingActivity @Inject constructor(
)
}
}
otherAppsButton = requireViewById<Button>(R.id.other_apps).apply {
setOnClickListener {
if (doneButton.isEnabled) {
// The user has made changes
Toast.makeText(
applicationContext,
R.string.controls_favorite_toast_no_changes,
Toast.LENGTH_SHORT
).show()
}
startActivity(
Intent(context, ControlsProviderSelectorActivity::class.java),
ActivityOptions
.makeSceneTransitionAnimation(this@ControlsFavoritingActivity).toBundle()
)
animateExitAndFinish()
}
}
doneButton = requireViewById<Button>(R.id.done).apply {
isEnabled = false
@@ -415,7 +374,6 @@ open class ControlsFavoritingActivity @Inject constructor(
override fun onStart() {
super.onStart()
listingController.addCallback(listingCallback)
userTracker.addCallback(userTrackerCallback, executor)
if (DEBUG) {
@@ -440,7 +398,6 @@ open class ControlsFavoritingActivity @Inject constructor(
override fun onStop() {
super.onStop()
listingController.removeCallback(listingCallback)
userTracker.removeCallback(userTrackerCallback)
if (DEBUG) {

View File

@@ -506,30 +506,22 @@ class ControlsUiControllerImpl @Inject constructor (
val isPanel = selectedItem is SelectedItem.PanelItem
val selectedStructure = (selectedItem as? SelectedItem.StructureItem)?.structure
?: EMPTY_STRUCTURE
val newFlows = featureFlags.isEnabled(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS)
val items = buildList {
add(OverflowMenuAdapter.MenuItem(
context.getText(R.string.controls_open_app),
OPEN_APP_ID
))
if (newFlows || isPanel) {
if (extraApps) {
add(OverflowMenuAdapter.MenuItem(
context.getText(R.string.controls_menu_add_another_app),
ADD_APP_ID
))
}
if (featureFlags.isEnabled(Flags.APP_PANELS_REMOVE_APPS_ALLOWED)) {
add(OverflowMenuAdapter.MenuItem(
context.getText(R.string.controls_menu_remove),
REMOVE_APP_ID,
))
}
} else {
if (extraApps) {
add(OverflowMenuAdapter.MenuItem(
context.getText(R.string.controls_menu_add),
ADD_CONTROLS_ID
context.getText(R.string.controls_menu_add_another_app),
ADD_APP_ID
))
}
if (featureFlags.isEnabled(Flags.APP_PANELS_REMOVE_APPS_ALLOWED)) {
add(OverflowMenuAdapter.MenuItem(
context.getText(R.string.controls_menu_remove),
REMOVE_APP_ID,
))
}
if (!isPanel) {

View File

@@ -619,9 +619,6 @@ object Flags {
// 2000 - device controls
@JvmField val APP_PANELS_ALL_APPS_ALLOWED = releasedFlag(2001, "app_panels_all_apps_allowed")
@JvmField
val CONTROLS_MANAGEMENT_NEW_FLOWS = releasedFlag(2002, "controls_management_new_flows")
// Enables removing app from Home control panel as a part of a new flow
// TODO(b/269132640): Tracking Bug
@JvmField

View File

@@ -16,8 +16,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.controls.CustomIconCache
import com.android.systemui.controls.controller.ControlsControllerImpl
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.settings.UserTracker
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.time.FakeSystemClock
@@ -46,7 +44,6 @@ class ControlsEditingActivityTest : SysuiTestCase() {
}
private val uiExecutor = FakeExecutor(FakeSystemClock())
private val featureFlags = FakeFeatureFlags()
@Mock lateinit var controller: ControlsControllerImpl
@@ -65,7 +62,6 @@ class ControlsEditingActivityTest : SysuiTestCase() {
ActivityTestRule(
/* activityFactory= */ SingleActivityFactory {
TestableControlsEditingActivity(
featureFlags,
uiExecutor,
controller,
userTracker,
@@ -81,8 +77,6 @@ class ControlsEditingActivityTest : SysuiTestCase() {
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
featureFlags.set(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS, false)
}
@Test
@@ -101,16 +95,7 @@ class ControlsEditingActivityTest : SysuiTestCase() {
}
@Test
fun testNewFlowDisabled_addControlsButton_gone() {
with(launchActivity()) {
val addControlsButton = requireViewById<Button>(R.id.addControls)
assertThat(addControlsButton.visibility).isEqualTo(View.GONE)
}
}
@Test
fun testNewFlowEnabled_addControlsButton_visible() {
featureFlags.set(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS, true)
fun testAddControlsButton_visible() {
with(launchActivity()) {
val addControlsButton = requireViewById<Button>(R.id.addControls)
assertThat(addControlsButton.visibility).isEqualTo(View.VISIBLE)
@@ -120,7 +105,6 @@ class ControlsEditingActivityTest : SysuiTestCase() {
@Test
fun testNotLaunchFromFavoriting_saveButton_disabled() {
featureFlags.set(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS, true)
with(launchActivity(isFromFavoriting = false)) {
val saveButton = requireViewById<Button>(R.id.done)
assertThat(saveButton.isEnabled).isFalse()
@@ -129,7 +113,6 @@ class ControlsEditingActivityTest : SysuiTestCase() {
@Test
fun testLaunchFromFavoriting_saveButton_enabled() {
featureFlags.set(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS, true)
with(launchActivity(isFromFavoriting = true)) {
val saveButton = requireViewById<Button>(R.id.done)
assertThat(saveButton.isEnabled).isTrue()
@@ -138,7 +121,6 @@ class ControlsEditingActivityTest : SysuiTestCase() {
@Test
fun testNotFromFavoriting_addControlsPressed_launchesFavouriting() {
featureFlags.set(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS, true)
with(launchActivity(isFromFavoriting = false)) {
val addControls = requireViewById<Button>(R.id.addControls)
@@ -177,7 +159,6 @@ class ControlsEditingActivityTest : SysuiTestCase() {
)
class TestableControlsEditingActivity(
featureFlags: FakeFeatureFlags,
executor: FakeExecutor,
controller: ControlsControllerImpl,
userTracker: UserTracker,
@@ -186,7 +167,6 @@ class ControlsEditingActivityTest : SysuiTestCase() {
private val latch: CountDownLatch
) :
ControlsEditingActivity(
featureFlags,
executor,
controller,
userTracker,

View File

@@ -17,14 +17,11 @@ import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.controls.ControlStatus
import com.android.systemui.controls.ControlsServiceInfo
import com.android.systemui.controls.controller.ControlsController
import com.android.systemui.controls.controller.ControlsControllerImpl
import com.android.systemui.controls.controller.createLoadDataObject
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.settings.UserTracker
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.capture
@@ -73,8 +70,6 @@ class ControlsFavoritingActivityTest : SysuiTestCase() {
@Mock lateinit var controller: ControlsControllerImpl
@Mock lateinit var listingController: ControlsListingController
@Mock lateinit var userTracker: UserTracker
private var latch: CountDownLatch = CountDownLatch(1)
@@ -82,9 +77,6 @@ class ControlsFavoritingActivityTest : SysuiTestCase() {
@Mock private lateinit var mockDispatcher: OnBackInvokedDispatcher
@Captor private lateinit var captureCallback: ArgumentCaptor<OnBackInvokedCallback>
@Captor
private lateinit var listingCallback:
ArgumentCaptor<ControlsListingController.ControlsListingCallback>
@Captor
private lateinit var controlsCallback: ArgumentCaptor<Consumer<ControlsController.LoadData>>
@Rule
@@ -93,10 +85,8 @@ class ControlsFavoritingActivityTest : SysuiTestCase() {
ActivityTestRule(
/* activityFactory= */ SingleActivityFactory {
TestableControlsFavoritingActivity(
featureFlags,
executor,
controller,
listingController,
userTracker,
mockDispatcher,
latch
@@ -109,7 +99,6 @@ class ControlsFavoritingActivityTest : SysuiTestCase() {
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
featureFlags.set(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS, false)
}
// b/259549854 to root-cause and fix
@@ -130,14 +119,8 @@ class ControlsFavoritingActivityTest : SysuiTestCase() {
}
@Test
fun testNewFlowEnabled_buttons() {
featureFlags.set(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS, true)
fun testButtons() {
with(launchActivity()) {
verify(listingController).addCallback(listingCallback.capture())
listingCallback.value.onServicesUpdated(
listOf(mock(ControlsServiceInfo::class.java), mock(ControlsServiceInfo::class.java))
)
val rearrangeButton = requireViewById<Button>(R.id.rearrange)
assertThat(rearrangeButton.visibility).isEqualTo(View.VISIBLE)
assertThat(rearrangeButton.isEnabled).isFalse()
@@ -149,36 +132,8 @@ class ControlsFavoritingActivityTest : SysuiTestCase() {
}
@Test
fun testNewFlowDisabled_buttons() {
fun testRearrangePressed_savesAndlaunchesActivity() {
with(launchActivity()) {
verify(listingController).addCallback(listingCallback.capture())
activityRule.runOnUiThread {
listingCallback.value.onServicesUpdated(
listOf(
mock(ControlsServiceInfo::class.java),
mock(ControlsServiceInfo::class.java)
)
)
}
val rearrangeButton = requireViewById<Button>(R.id.rearrange)
assertThat(rearrangeButton.visibility).isEqualTo(View.GONE)
assertThat(rearrangeButton.isEnabled).isFalse()
val otherAppsButton = requireViewById<Button>(R.id.other_apps)
otherAppsButton.waitForPost()
assertThat(otherAppsButton.visibility).isEqualTo(View.VISIBLE)
}
}
@Test
fun testNewFlowEnabled_rearrangePressed_savesAndlaunchesActivity() {
featureFlags.set(Flags.CONTROLS_MANAGEMENT_NEW_FLOWS, true)
with(launchActivity()) {
verify(listingController).addCallback(capture(listingCallback))
listingCallback.value.onServicesUpdated(
listOf(mock(ControlsServiceInfo::class.java), mock(ControlsServiceInfo::class.java))
)
verify(controller).loadForComponent(any(), capture(controlsCallback), any())
activityRule.runOnUiThread {
controlsCallback.value.accept(
@@ -224,19 +179,15 @@ class ControlsFavoritingActivityTest : SysuiTestCase() {
)
class TestableControlsFavoritingActivity(
featureFlags: FeatureFlags,
executor: Executor,
controller: ControlsControllerImpl,
listingController: ControlsListingController,
userTracker: UserTracker,
private val mockDispatcher: OnBackInvokedDispatcher,
private val latch: CountDownLatch
) :
ControlsFavoritingActivity(
featureFlags,
executor,
controller,
listingController,
userTracker,
) {