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 07e5cf9d9df27..2080614333254 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 @@ -28,6 +28,8 @@ import android.util.Log import android.view.WindowManagerGlobal import android.widget.Toast import com.android.internal.logging.UiEventLogger +import com.android.systemui.GuestResetOrExitSessionReceiver +import com.android.systemui.GuestResumeSessionReceiver import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background @@ -58,6 +60,8 @@ constructor( private val devicePolicyManager: DevicePolicyManager, private val refreshUsersScheduler: RefreshUsersScheduler, private val uiEventLogger: UiEventLogger, + resumeSessionReceiver: GuestResumeSessionReceiver, + resetOrExitSessionReceiver: GuestResetOrExitSessionReceiver, ) { /** Whether the device is configured to always have a guest user available. */ val isGuestUserAutoCreated: Boolean = repository.isGuestUserAutoCreated @@ -65,6 +69,11 @@ constructor( /** Whether the guest user is currently being reset. */ val isGuestUserResetting: Boolean = repository.isGuestUserResetting + init { + resumeSessionReceiver.register() + resetOrExitSessionReceiver.register() + } + /** Notifies that the device has finished booting. */ fun onDeviceBootCompleted() { applicationScope.launch { 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 120bf791c4625..b485693af50f1 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 @@ -23,6 +23,8 @@ import android.os.UserHandle import android.os.UserManager import androidx.test.filters.SmallTest import com.android.internal.logging.UiEventLogger +import com.android.systemui.GuestResetOrExitSessionReceiver +import com.android.systemui.GuestResumeSessionReceiver import com.android.systemui.SysuiTestCase import com.android.systemui.statusbar.policy.DeviceProvisionedController import com.android.systemui.user.data.repository.FakeUserRepository @@ -55,6 +57,8 @@ class GuestUserInteractorTest : SysuiTestCase() { @Mock private lateinit var dismissDialog: () -> Unit @Mock private lateinit var selectUser: (Int) -> Unit @Mock private lateinit var switchUser: (Int) -> Unit + @Mock private lateinit var resumeSessionReceiver: GuestResumeSessionReceiver + @Mock private lateinit var resetOrExitSessionReceiver: GuestResetOrExitSessionReceiver private lateinit var underTest: GuestUserInteractor @@ -87,9 +91,17 @@ class GuestUserInteractorTest : SysuiTestCase() { repository = repository, ), uiEventLogger = uiEventLogger, + resumeSessionReceiver = resumeSessionReceiver, + resetOrExitSessionReceiver = resetOrExitSessionReceiver, ) } + @Test + fun `registers broadcast receivers`() { + verify(resumeSessionReceiver).register() + verify(resetOrExitSessionReceiver).register() + } + @Test fun `onDeviceBootCompleted - allowed to add - create guest`() = runBlocking(IMMEDIATE) { 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 1680c36cef871..58f55314c1b6a 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 @@ -21,6 +21,8 @@ import android.app.ActivityManager import android.app.admin.DevicePolicyManager import android.os.UserManager import com.android.internal.logging.UiEventLogger +import com.android.systemui.GuestResetOrExitSessionReceiver +import com.android.systemui.GuestResumeSessionReceiver import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags @@ -48,6 +50,8 @@ abstract class UserInteractorTest : SysuiTestCase() { @Mock protected lateinit var devicePolicyManager: DevicePolicyManager @Mock protected lateinit var uiEventLogger: UiEventLogger @Mock protected lateinit var dialogShower: UserSwitchDialogController.DialogShower + @Mock private lateinit var resumeSessionReceiver: GuestResumeSessionReceiver + @Mock private lateinit var resetOrExitSessionReceiver: GuestResetOrExitSessionReceiver protected lateinit var underTest: UserInteractor @@ -107,6 +111,8 @@ abstract class UserInteractorTest : SysuiTestCase() { devicePolicyManager = devicePolicyManager, refreshUsersScheduler = refreshUsersScheduler, uiEventLogger = uiEventLogger, + resumeSessionReceiver = resumeSessionReceiver, + resetOrExitSessionReceiver = resetOrExitSessionReceiver, ) ) } 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 c12a868dbaed9..116023aca6550 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 @@ -23,6 +23,8 @@ import android.graphics.drawable.Drawable import android.os.UserManager import androidx.test.filters.SmallTest import com.android.internal.logging.UiEventLogger +import com.android.systemui.GuestResetOrExitSessionReceiver +import com.android.systemui.GuestResumeSessionReceiver import com.android.systemui.SysuiTestCase import com.android.systemui.common.shared.model.Text import com.android.systemui.flags.FakeFeatureFlags @@ -69,6 +71,8 @@ class UserSwitcherViewModelTest : SysuiTestCase() { @Mock private lateinit var deviceProvisionedController: DeviceProvisionedController @Mock private lateinit var devicePolicyManager: DevicePolicyManager @Mock private lateinit var uiEventLogger: UiEventLogger + @Mock private lateinit var resumeSessionReceiver: GuestResumeSessionReceiver + @Mock private lateinit var resetOrExitSessionReceiver: GuestResetOrExitSessionReceiver private lateinit var underTest: UserSwitcherViewModel @@ -104,6 +108,8 @@ class UserSwitcherViewModelTest : SysuiTestCase() { devicePolicyManager = devicePolicyManager, refreshUsersScheduler = refreshUsersScheduler, uiEventLogger = uiEventLogger, + resumeSessionReceiver = resumeSessionReceiver, + resetOrExitSessionReceiver = resetOrExitSessionReceiver, ) underTest =