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 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,
            )
        }
    }