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

Commit f3a707f1 authored by Anton Potapov's avatar Anton Potapov
Browse files

Add keyguard before app removal in Home Controls

Test: manual
Test: atest ControlsUiControllerImplTest
Fixes: 280338980
Change-Id: Icb8244c6f09e275f10423447e05b0cd1a88402bf
parent 53c901a0
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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)) {
+38 −1
Original line number Diff line number Diff line
@@ -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")