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

Commit d9192ee9 authored by Helen Cheuk's avatar Helen Cheuk Committed by Android (Google) Code Review
Browse files

Merge "[Contextual Edu] Dismiss the existing dialog when a new dialog is shown" into main

parents 3758c29c 11b1a28e
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.contextualeducation.GestureType
import com.android.systemui.contextualeducation.GestureType.BACK
import com.android.systemui.contextualeducation.GestureType.HOME
import com.android.systemui.education.data.repository.fakeEduClock
import com.android.systemui.education.domain.interactor.KeyboardTouchpadEduInteractor
import com.android.systemui.education.domain.interactor.contextualEducationInteractor
@@ -52,6 +53,7 @@ import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.junit.MockitoJUnit
import org.mockito.kotlin.any
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever

@@ -66,6 +68,7 @@ class ContextualEduUiCoordinatorTest : SysuiTestCase() {
    private val minDurationForNextEdu =
        KeyboardTouchpadEduInteractor.minIntervalBetweenEdu + 1.seconds
    private lateinit var underTest: ContextualEduUiCoordinator
    private lateinit var previousDialog: Dialog
    @Mock private lateinit var dialog: Dialog
    @Mock private lateinit var notificationManager: NotificationManager
    @Mock private lateinit var accessibilityManagerWrapper: AccessibilityManagerWrapper
@@ -95,9 +98,11 @@ class ContextualEduUiCoordinatorTest : SysuiTestCase() {
                kosmos.applicationCoroutineScope,
                viewModel,
                kosmos.applicationContext,
                notificationManager
                notificationManager,
            ) { model ->
                toastContent = model.message
                previousDialog = dialog
                dialog = mock<Dialog>()
                dialog
            }
        underTest.start()
@@ -128,6 +133,14 @@ class ContextualEduUiCoordinatorTest : SysuiTestCase() {
            verify(dialog).dismiss()
        }

    @Test
    fun dismissPreviousDialogOnNewDialog() =
        testScope.runTest {
            triggerEducation(BACK)
            triggerEducation(HOME)
            verify(previousDialog).dismiss()
        }

    @Test
    fun verifyBackEduToastContent() =
        testScope.runTest {
@@ -149,14 +162,14 @@ class ContextualEduUiCoordinatorTest : SysuiTestCase() {
            verifyNotificationContent(
                R.string.back_edu_notification_title,
                R.string.back_edu_notification_content,
                notificationCaptor.value
                notificationCaptor.value,
            )
        }

    private fun verifyNotificationContent(
        titleResId: Int,
        contentResId: Int,
        notification: Notification
        notification: Notification,
    ) {
        val expectedContent = context.getString(contentResId)
        val expectedTitle = context.getString(titleResId)
+2 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.os.Bundle
import android.os.UserHandle
import android.view.accessibility.AccessibilityManager
import androidx.core.app.NotificationCompat
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
@@ -39,7 +40,6 @@ import com.android.systemui.inputdevice.tutorial.ui.view.KeyboardTouchpadTutoria
import com.android.systemui.res.R
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import com.android.app.tracing.coroutines.launchTraced as launch

/**
 * A class to show contextual education on UI based on the edu produced from
@@ -107,6 +107,7 @@ constructor(
    }

    private fun showDialog(model: ContextualEduToastViewModel) {
        dialog?.dismiss()
        dialog = createDialog(model)
        dialog?.show()
    }