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

Commit 97ff205a authored by Jeff Chen's avatar Jeff Chen
Browse files

Replace static RestrictedLockUtils call with injected UserRestrictionChecker,...

Replace static RestrictedLockUtils call with injected UserRestrictionChecker, so we can mock it in testing.

Test: SystemUIGoogleScreenshotTests SystemUITests
Bug: 301269931
Change-Id: I5cbd795ddea104d486e2479da7b5919e022703c7
parent b4339e42
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import com.android.internal.logging.UiEventLogger
import com.android.internal.util.UserIcons
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitorCallback
import com.android.systemui.res.R
import com.android.systemui.SystemUISecondaryUserService
import com.android.systemui.animation.Expandable
import com.android.systemui.broadcast.BroadcastDispatcher
@@ -50,6 +49,7 @@ import com.android.systemui.flags.Flags
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.qs.user.UserSwitchDialogController
import com.android.systemui.res.R
import com.android.systemui.telephony.domain.interactor.TelephonyInteractor
import com.android.systemui.user.CreateUserActivity
import com.android.systemui.user.data.model.UserSwitcherSettingsModel
@@ -62,6 +62,7 @@ import com.android.systemui.user.shared.model.UserModel
import com.android.systemui.user.utils.MultiUserActionsEvent
import com.android.systemui.user.utils.MultiUserActionsEventHelper
import com.android.systemui.util.kotlin.pairwise
import com.android.systemui.utils.UserRestrictionChecker
import java.io.PrintWriter
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
@@ -103,6 +104,7 @@ constructor(
    private val refreshUsersScheduler: RefreshUsersScheduler,
    private val guestUserInteractor: GuestUserInteractor,
    private val uiEventLogger: UiEventLogger,
    private val userRestrictionChecker: UserRestrictionChecker,
) {
    /**
     * Defines interface for classes that can be notified when the state of users on the device is
@@ -593,6 +595,7 @@ constructor(
                ) &&
                    // If the user is auto-created is must not be currently resetting.
                    !(isGuestUserAutoCreated && isGuestUserResetting),
            userRestrictionChecker = userRestrictionChecker,
        )
    }

+6 −3
Original line number Diff line number Diff line
@@ -22,10 +22,10 @@ import android.content.pm.UserInfo
import android.graphics.Bitmap
import android.os.UserManager
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin
import com.android.settingslib.RestrictedLockUtilsInternal
import com.android.systemui.res.R
import com.android.systemui.user.data.source.UserRecord
import com.android.systemui.user.shared.model.UserActionModel
import com.android.systemui.utils.UserRestrictionChecker

/**
 * Defines utility functions for helping with legacy data code for users.
@@ -68,6 +68,7 @@ object LegacyUserDataHelper {
        actionType: UserActionModel,
        isRestricted: Boolean,
        isSwitchToEnabled: Boolean,
        userRestrictionChecker: UserRestrictionChecker,
    ): UserRecord {
        return UserRecord(
            isGuest = actionType == UserActionModel.ENTER_GUEST_MODE,
@@ -79,6 +80,7 @@ object LegacyUserDataHelper {
                getEnforcedAdmin(
                    context = context,
                    selectedUserId = selectedUserId,
                    userRestrictionChecker = userRestrictionChecker,
                ),
            isManageUsers = actionType == UserActionModel.NAVIGATE_TO_USER_MANAGEMENT,
        )
@@ -103,9 +105,10 @@ object LegacyUserDataHelper {
    private fun getEnforcedAdmin(
        context: Context,
        selectedUserId: Int,
        userRestrictionChecker: UserRestrictionChecker
    ): EnforcedAdmin? {
        val admin =
            RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
            userRestrictionChecker.checkIfRestrictionEnforced(
                context,
                UserManager.DISALLOW_ADD_USER,
                selectedUserId,
@@ -113,7 +116,7 @@ object LegacyUserDataHelper {
                ?: return null

        return if (
            !RestrictedLockUtilsInternal.hasBaseUserRestriction(
            !userRestrictionChecker.hasBaseUserRestriction(
                context,
                UserManager.DISALLOW_ADD_USER,
                selectedUserId,
+25 −0
Original line number Diff line number Diff line
package com.android.systemui.utils

import android.content.Context
import com.android.settingslib.RestrictedLockUtils
import com.android.settingslib.RestrictedLockUtilsInternal
import javax.inject.Inject

/** Proxy to call [RestrictedLockUtilsInternal] */
class UserRestrictionChecker @Inject constructor() {
    fun checkIfRestrictionEnforced(
        context: Context,
        userRestriction: String,
        userId: Int
    ): RestrictedLockUtils.EnforcedAdmin? {
        return RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
            context,
            userRestriction,
            userId
        )
    }

    fun hasBaseUserRestriction(context: Context, userRestriction: String, userId: Int): Boolean {
        return RestrictedLockUtilsInternal.hasBaseUserRestriction(context, userRestriction, userId)
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import com.android.systemui.user.domain.interactor.GuestUserInteractor
import com.android.systemui.user.domain.interactor.HeadlessSystemUserMode
import com.android.systemui.user.domain.interactor.RefreshUsersScheduler
import com.android.systemui.user.domain.interactor.UserInteractor
import com.android.systemui.util.mockito.mock
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
@@ -126,6 +127,7 @@ class AuthDialogPanelInteractionDetectorTest : SysuiTestCase() {
                refreshUsersScheduler = refreshUsersScheduler,
                guestUserInteractor = guestInteractor,
                uiEventLogger = uiEventLogger,
                userRestrictionChecker = mock(),
            )
        shadeInteractor =
            ShadeInteractor(
+3 −1
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import android.os.UserManager
import androidx.test.filters.SmallTest
import com.android.internal.logging.UiEventLogger
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.res.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
import com.android.systemui.coroutines.collectLastValue
@@ -35,6 +34,7 @@ import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractorFactory
import com.android.systemui.keyguard.shared.model.StatusBarState
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.res.R
import com.android.systemui.scene.SceneTestUtils
import com.android.systemui.scene.shared.flag.FakeSceneContainerFlags
import com.android.systemui.scene.shared.model.ObservableTransitionState
@@ -54,6 +54,7 @@ import com.android.systemui.user.domain.interactor.GuestUserInteractor
import com.android.systemui.user.domain.interactor.HeadlessSystemUserMode
import com.android.systemui.user.domain.interactor.RefreshUsersScheduler
import com.android.systemui.user.domain.interactor.UserInteractor
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -153,6 +154,7 @@ class ShadeInteractorTest : SysuiTestCase() {
                refreshUsersScheduler = refreshUsersScheduler,
                guestUserInteractor = guestInteractor,
                uiEventLogger = uiEventLogger,
                userRestrictionChecker = mock(),
            )
        underTest =
            ShadeInteractor(
Loading