diff options
2 files changed, 38 insertions, 22 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt index bfed0c44f6b7..0a1724c189c8 100644 --- a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/GuestUserInteractor.kt @@ -70,8 +70,10 @@ constructor( val isGuestUserResetting: Boolean = repository.isGuestUserResetting init { - resumeSessionReceiver.register() - resetOrExitSessionReceiver.register() + if (applicationContext.userId == UserHandle.USER_SYSTEM) { + resumeSessionReceiver.register() + resetOrExitSessionReceiver.register() + } } /** Notifies that the device has finished booting. */ diff --git a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt index 948670f95f97..01795e92d141 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/GuestUserInteractorTest.kt @@ -18,6 +18,7 @@ package com.android.systemui.user.domain.interactor import android.app.admin.DevicePolicyManager +import android.content.Context import android.content.pm.UserInfo import android.os.UserHandle import android.os.UserManager @@ -59,6 +60,7 @@ class GuestUserInteractorTest : SysuiTestCase() { @Mock private lateinit var switchUser: (Int) -> Unit @Mock private lateinit var resumeSessionReceiver: GuestResumeSessionReceiver @Mock private lateinit var resetOrExitSessionReceiver: GuestResetOrExitSessionReceiver + @Mock private lateinit var otherContext: Context private lateinit var underTest: GuestUserInteractor @@ -74,28 +76,30 @@ class GuestUserInteractorTest : SysuiTestCase() { repository = FakeUserRepository() repository.setUserInfos(ALL_USERS) - underTest = - GuestUserInteractor( - applicationContext = context, - applicationScope = scope, - mainDispatcher = IMMEDIATE, - backgroundDispatcher = IMMEDIATE, - manager = manager, - repository = repository, - deviceProvisionedController = deviceProvisionedController, - devicePolicyManager = devicePolicyManager, - refreshUsersScheduler = - RefreshUsersScheduler( - applicationScope = scope, - mainDispatcher = IMMEDIATE, - repository = repository, - ), - uiEventLogger = uiEventLogger, - resumeSessionReceiver = resumeSessionReceiver, - resetOrExitSessionReceiver = resetOrExitSessionReceiver, - ) + underTest = initGuestUserInteractor(context) } + private fun initGuestUserInteractor(context: Context) = + GuestUserInteractor( + applicationContext = context, + applicationScope = scope, + mainDispatcher = IMMEDIATE, + backgroundDispatcher = IMMEDIATE, + manager = manager, + repository = repository, + deviceProvisionedController = deviceProvisionedController, + devicePolicyManager = devicePolicyManager, + refreshUsersScheduler = + RefreshUsersScheduler( + applicationScope = scope, + mainDispatcher = IMMEDIATE, + repository = repository, + ), + uiEventLogger = uiEventLogger, + resumeSessionReceiver = resumeSessionReceiver, + resetOrExitSessionReceiver = resetOrExitSessionReceiver, + ) + @Test fun registersBroadcastReceivers() { verify(resumeSessionReceiver).register() @@ -103,6 +107,16 @@ class GuestUserInteractorTest : SysuiTestCase() { } @Test + fun registersBroadcastReceiversOnlyForSystemUser() { + for (i in 1..5) { + whenever(otherContext.userId).thenReturn(UserHandle.MIN_SECONDARY_USER_ID + i) + initGuestUserInteractor(otherContext) + } + verify(resumeSessionReceiver).register() + verify(resetOrExitSessionReceiver).register() + } + + @Test fun onDeviceBootCompleted_allowedToAdd_createGuest() = runBlocking(IMMEDIATE) { setAllowedToAdd() |