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

Commit d6cbc876 authored by Justin Weir's avatar Justin Weir
Browse files

Disable Dual Shade educational tips in test harness mode

Fixes: 427958287
Test: ran affected tests, manual
Flag: com.android.systemui.scene_container
Change-Id: I14ba550f12e3f6ad618238dd05b14c7665845f64
parent a1f819a3
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -66,7 +66,10 @@ class DualShadeEducationalTooltipsViewModelTest(
        overrideResource(R.string.dual_shade_educational_tooltip_qs, QS_TOOLTIP)

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

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

import android.app.ActivityManager
import android.content.Context
import androidx.compose.ui.unit.IntRect
import com.android.systemui.lifecycle.ExclusiveActivatable
@@ -34,8 +35,16 @@ class DualShadeEducationalTooltipsViewModel
constructor(
    private val interactor: DualShadeEducationInteractor,
    @Assisted private val context: Context,
    @Assisted private val ignoreTestHarness: Boolean,
) : 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.
     *
@@ -45,11 +54,15 @@ constructor(
     */
    val visibleTooltip: DualShadeEducationalTooltipViewModel?
        get() =
            if (disableEducationTooltips) {
                null
            } else {
                when (interactor.education) {
                    DualShadeEducationModel.ForNotificationsShade -> notificationsTooltip()
                    DualShadeEducationModel.ForQuickSettingsShade -> quickSettingsTooltip()
                    else -> null
                }
            }

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

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

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

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