diff options
9 files changed, 47 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt index e4894992b49f..ce9d6fd752c5 100644 --- a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/UserInteractor.kt @@ -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, ) } diff --git a/packages/SystemUI/src/com/android/systemui/user/legacyhelper/data/LegacyUserDataHelper.kt b/packages/SystemUI/src/com/android/systemui/user/legacyhelper/data/LegacyUserDataHelper.kt index 93573fa42c96..80139bd6ac0c 100644 --- a/packages/SystemUI/src/com/android/systemui/user/legacyhelper/data/LegacyUserDataHelper.kt +++ b/packages/SystemUI/src/com/android/systemui/user/legacyhelper/data/LegacyUserDataHelper.kt @@ -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, diff --git a/packages/SystemUI/src/com/android/systemui/utils/UserRestrictionChecker.kt b/packages/SystemUI/src/com/android/systemui/utils/UserRestrictionChecker.kt new file mode 100644 index 000000000000..3f8346b98d39 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/utils/UserRestrictionChecker.kt @@ -0,0 +1,25 @@ +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) + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthDialogPanelInteractionDetectorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthDialogPanelInteractionDetectorTest.kt index 8fc63b246c9d..73654609ad7f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthDialogPanelInteractionDetectorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthDialogPanelInteractionDetectorTest.kt @@ -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( diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeInteractorTest.kt index d018cbbfbc24..2be1c09843c1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/data/repository/ShadeInteractorTest.kt @@ -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( diff --git a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorTest.kt index bbc49c859821..af941d03f191 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorTest.kt @@ -34,7 +34,6 @@ import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitorCallback import com.android.systemui.GuestResetOrExitSessionReceiver import com.android.systemui.GuestResumeSessionReceiver -import com.android.systemui.res.R import com.android.systemui.SysuiTestCase import com.android.systemui.animation.Expandable import com.android.systemui.common.shared.model.Text @@ -45,6 +44,7 @@ import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository import com.android.systemui.keyguard.domain.interactor.KeyguardInteractorFactory import com.android.systemui.plugins.ActivityStarter import com.android.systemui.qs.user.UserSwitchDialogController +import com.android.systemui.res.R import com.android.systemui.statusbar.policy.DeviceProvisionedController import com.android.systemui.telephony.data.repository.FakeTelephonyRepository import com.android.systemui.telephony.domain.interactor.TelephonyInteractor @@ -1120,6 +1120,7 @@ class UserInteractorTest : SysuiTestCase() { ), uiEventLogger = uiEventLogger, featureFlags = featureFlags, + userRestrictionChecker = mock(), ) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt index 2433e123a309..a8db368d4150 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt @@ -267,6 +267,7 @@ class StatusBarUserChipViewModelTest : SysuiTestCase() { refreshUsersScheduler = refreshUsersScheduler, guestUserInteractor = guestUserInteractor, uiEventLogger = uiEventLogger, + userRestrictionChecker = mock(), ) ) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt index 8c88f95d73a5..6932f5ed4b30 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt @@ -45,6 +45,7 @@ import com.android.systemui.user.domain.interactor.UserInteractor import com.android.systemui.user.legacyhelper.ui.LegacyUserUiHelper import com.android.systemui.user.shared.model.UserActionModel import com.android.systemui.util.mockito.any +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 @@ -176,6 +177,7 @@ class UserSwitcherViewModelTest : SysuiTestCase() { refreshUsersScheduler = refreshUsersScheduler, guestUserInteractor = guestUserInteractor, uiEventLogger = uiEventLogger, + userRestrictionChecker = mock(), ), guestUserInteractor = guestUserInteractor, ) diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt index ceab8e9e52ee..945aaede0087 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt @@ -50,6 +50,7 @@ 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.time.FakeSystemClock +import com.android.systemui.utils.UserRestrictionChecker import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.test.TestScope import org.mockito.Mockito.mock @@ -137,6 +138,7 @@ object KeyguardDismissInteractorFactory { refreshUsersScheduler = mock(RefreshUsersScheduler::class.java), guestUserInteractor = mock(GuestUserInteractor::class.java), uiEventLogger = mock(UiEventLogger::class.java), + userRestrictionChecker = mock(UserRestrictionChecker::class.java), ) return WithDependencies( trustRepository = trustRepository, |