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

Commit 8a025044 authored by Justin Weir's avatar Justin Weir Committed by Android (Google) Code Review
Browse files

Merge "Disable Dual Shade educational tips in test harness mode" into main

parents 27fd677a d6cbc876
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -66,7 +66,10 @@ class DualShadeEducationalTooltipsViewModelTest(
        overrideResource(R.string.dual_shade_educational_tooltip_qs, QS_TOOLTIP)
        overrideResource(R.string.dual_shade_educational_tooltip_qs, QS_TOOLTIP)


        underTest =
        underTest =
            kosmos.dualShadeEducationalTooltipsViewModelFactory.create(kosmos.applicationContext)
            kosmos.dualShadeEducationalTooltipsViewModelFactory.create(
                kosmos.applicationContext,
                ignoreTestHarness = true,
            )
        underTest.activateIn(kosmos.testScope)
        underTest.activateIn(kosmos.testScope)
        kosmos.runCurrent()
        kosmos.runCurrent()
    }
    }
+21 −5
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.systemui.scene.ui.viewmodel
package com.android.systemui.scene.ui.viewmodel


import android.app.ActivityManager
import android.content.Context
import android.content.Context
import androidx.compose.ui.unit.IntRect
import androidx.compose.ui.unit.IntRect
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.ExclusiveActivatable
@@ -34,8 +35,16 @@ class DualShadeEducationalTooltipsViewModel
constructor(
constructor(
    private val interactor: DualShadeEducationInteractor,
    private val interactor: DualShadeEducationInteractor,
    @Assisted private val context: Context,
    @Assisted private val context: Context,
    @Assisted private val ignoreTestHarness: Boolean,
) : ExclusiveActivatable() {
) : ExclusiveActivatable() {


    /**
     * Avoid showing the dual shade educational tooltips in test harness mode and not explicitly
     * allowed, as the tooltip may interfere with test automation.
     */
    private val disableEducationTooltips =
        !ignoreTestHarness && ActivityManager.isRunningInUserTestHarness()

    /**
    /**
     * The tooltip to show, or `null` if none should be shown.
     * The tooltip to show, or `null` if none should be shown.
     *
     *
@@ -45,11 +54,15 @@ constructor(
     */
     */
    val visibleTooltip: DualShadeEducationalTooltipViewModel?
    val visibleTooltip: DualShadeEducationalTooltipViewModel?
        get() =
        get() =
            if (disableEducationTooltips) {
                null
            } else {
                when (interactor.education) {
                when (interactor.education) {
                    DualShadeEducationModel.ForNotificationsShade -> notificationsTooltip()
                    DualShadeEducationModel.ForNotificationsShade -> notificationsTooltip()
                    DualShadeEducationModel.ForQuickSettingsShade -> quickSettingsTooltip()
                    DualShadeEducationModel.ForQuickSettingsShade -> quickSettingsTooltip()
                    else -> null
                    else -> null
                }
                }
            }


    override suspend fun onActivated(): Nothing = coroutineScope { awaitCancellation() }
    override suspend fun onActivated(): Nothing = coroutineScope { awaitCancellation() }


@@ -87,6 +100,9 @@ constructor(


    @AssistedFactory
    @AssistedFactory
    interface Factory {
    interface Factory {
        fun create(context: Context): DualShadeEducationalTooltipsViewModel
        fun create(
            context: Context,
            ignoreTestHarness: Boolean = false,
        ): DualShadeEducationalTooltipsViewModel
    }
    }
}
}
+5 −1
Original line number Original line Diff line number Diff line
@@ -23,10 +23,14 @@ import com.android.systemui.scene.domain.interactor.dualShadeEducationInteractor


val Kosmos.dualShadeEducationalTooltipsViewModelFactory by Fixture {
val Kosmos.dualShadeEducationalTooltipsViewModelFactory by Fixture {
    object : DualShadeEducationalTooltipsViewModel.Factory {
    object : DualShadeEducationalTooltipsViewModel.Factory {
        override fun create(context: Context): DualShadeEducationalTooltipsViewModel {
        override fun create(
            context: Context,
            ignoreTestHarness: Boolean,
        ): DualShadeEducationalTooltipsViewModel {
            return DualShadeEducationalTooltipsViewModel(
            return DualShadeEducationalTooltipsViewModel(
                interactor = dualShadeEducationInteractor,
                interactor = dualShadeEducationInteractor,
                context = context,
                context = context,
                ignoreTestHarness = ignoreTestHarness,
            )
            )
        }
        }
    }
    }