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 @VisibleForTesting
internal fun startRemovingApp(componentName: ComponentName, appName: CharSequence) { 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?.cancel()
removeAppDialog = dialogsFactory.createRemoveAppDialog(context, appName) { shouldRemove -> removeAppDialog = dialogsFactory.createRemoveAppDialog(context, appName) { shouldRemove ->
if (!shouldRemove || !controlsController.get().removeFavorites(componentName)) { if (!shouldRemove || !controlsController.get().removeFavorites(componentName)) {

View File

@@ -70,7 +70,9 @@ import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.clearInvocations import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.doAnswer
import org.mockito.Mockito.doReturn import org.mockito.Mockito.doReturn
import org.mockito.Mockito.isNull
import org.mockito.Mockito.never import org.mockito.Mockito.never
import org.mockito.Mockito.spy import org.mockito.Mockito.spy
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
@@ -104,6 +106,9 @@ class ControlsUiControllerImplTest : SysuiTestCase() {
private lateinit var parent: FrameLayout private lateinit var parent: FrameLayout
private lateinit var underTest: ControlsUiControllerImpl private lateinit var underTest: ControlsUiControllerImpl
private var isKeyguardDismissed: Boolean = true
private var isRemoveAppDialogCreated: Boolean = false
@Before @Before
fun setup() { fun setup() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.initMocks(this)
@@ -140,11 +145,23 @@ class ControlsUiControllerImplTest : SysuiTestCase() {
authorizedPanelsRepository, authorizedPanelsRepository,
preferredPanelRepository, preferredPanelRepository,
featureFlags, featureFlags,
ControlsDialogsFactory { fakeDialogController.dialog }, ControlsDialogsFactory {
isRemoveAppDialogCreated = true
fakeDialogController.dialog
},
dumpManager, dumpManager,
) )
`when`(userTracker.userId).thenReturn(0) `when`(userTracker.userId).thenReturn(0)
`when`(userTracker.userHandle).thenReturn(UserHandle.of(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 @Test
@@ -413,6 +430,26 @@ class ControlsUiControllerImplTest : SysuiTestCase() {
assertThat(preferredPanelRepository.getSelectedComponent()).isNull() 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 @Test
fun testCancelRemovingAppsDoesntRemoveFavorite() { fun testCancelRemovingAppsDoesntRemoveFavorite() {
val componentName = ComponentName(context, "cls") val componentName = ComponentName(context, "cls")