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

Commit b8c7cddd 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: e38a303d

parents d7881960 e38a303d
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")