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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23049439

Change-Id: Ic0c4e64d46d2a15d1de40a183209f8fdf8d2861f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Anton Potapov
2023-05-12 12:01:34 +00:00
committed by Automerger Merge Worker
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")