Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b080ebad authored by Anton Potapov's avatar Anton Potapov Committed by Automerger Merge Worker
Browse files

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

Merge "Add keyguard before app removal in Home Controls" into udc-dev am: e38a303d am: 8fbd49e1 am: 2a167708

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



Change-Id: I3ded109393c4776dc972cbdb0c1eb26400e380f5
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 8273e34a 2a167708
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -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)) {
+38 −1
Original line number Original line Diff line number Diff line
@@ -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")