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:
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user