Merge "Add keyguard before app removal in Home Controls" into udc-dev

This commit is contained in:
Anton Potapov
2023-05-12 11:13:13 +00:00
committed by Android (Google) Code Review
2 changed files with 45 additions and 1 deletions

View File

@@ -328,6 +328,13 @@ class ControlsUiControllerImpl @Inject constructor (
@VisibleForTesting
internal fun startRemovingApp(componentName: ComponentName, appName: CharSequence) {
activityStarter.dismissKeyguardThenExecute({
showAppRemovalDialog(componentName, appName)
true
}, null, true)
}
private fun showAppRemovalDialog(componentName: ComponentName, appName: CharSequence) {
removeAppDialog?.cancel()
removeAppDialog = dialogsFactory.createRemoveAppDialog(context, appName) { shouldRemove ->
if (!shouldRemove || !controlsController.get().removeFavorites(componentName)) {

View File

@@ -70,7 +70,9 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.doAnswer
import org.mockito.Mockito.doReturn
import org.mockito.Mockito.isNull
import org.mockito.Mockito.never
import org.mockito.Mockito.spy
import org.mockito.Mockito.verify
@@ -104,6 +106,9 @@ class ControlsUiControllerImplTest : SysuiTestCase() {
private lateinit var parent: FrameLayout
private lateinit var underTest: ControlsUiControllerImpl
private var isKeyguardDismissed: Boolean = true
private var isRemoveAppDialogCreated: Boolean = false
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
@@ -140,11 +145,23 @@ class ControlsUiControllerImplTest : SysuiTestCase() {
authorizedPanelsRepository,
preferredPanelRepository,
featureFlags,
ControlsDialogsFactory { fakeDialogController.dialog },
ControlsDialogsFactory {
isRemoveAppDialogCreated = true
fakeDialogController.dialog
},
dumpManager,
)
`when`(userTracker.userId).thenReturn(0)
`when`(userTracker.userHandle).thenReturn(UserHandle.of(0))
doAnswer {
if (isKeyguardDismissed) {
it.getArgument<ActivityStarter.OnDismissAction>(0).onDismiss()
} else {
it.getArgument<Runnable?>(1)?.run()
}
}
.whenever(activityStarter)
.dismissKeyguardThenExecute(any(), isNull(), any())
}
@Test
@@ -413,6 +430,26 @@ class ControlsUiControllerImplTest : SysuiTestCase() {
assertThat(preferredPanelRepository.getSelectedComponent()).isNull()
}
@Test
fun testKeyguardRemovingAppsNotShowingDialog() {
isKeyguardDismissed = false
val componentName = ComponentName(context, "cls")
whenever(controlsController.removeFavorites(eq(componentName))).thenReturn(true)
val panel = SelectedItem.PanelItem("App name", componentName)
preferredPanelRepository.setSelectedComponent(
SelectedComponentRepository.SelectedComponent(panel)
)
underTest.show(parent, {}, context)
underTest.startRemovingApp(componentName, "Test App")
assertThat(isRemoveAppDialogCreated).isFalse()
verify(controlsController, never()).removeFavorites(eq(componentName))
assertThat(underTest.getPreferredSelectedItem(emptyList())).isEqualTo(panel)
assertThat(preferredPanelRepository.shouldAddDefaultComponent()).isTrue()
assertThat(preferredPanelRepository.getSelectedComponent())
.isEqualTo(SelectedComponentRepository.SelectedComponent(panel))
}
@Test
fun testCancelRemovingAppsDoesntRemoveFavorite() {
val componentName = ComponentName(context, "cls")