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

Commit b22c2006 authored by Yasin Kilicdere's avatar Yasin Kilicdere
Browse files

Prevent displaying duplicated guest notifications.

Bug: 333677801
Test: atest GuestUserInteractorTest#registersBroadcastReceiversOnlyForSystemUser
Test: Manually switch to guest user while at least one secondary user
      was running either in background or foreground,
      and verify there are no duplicated notifications.
Flag: None
Change-Id: I4ea487bb6dbcfec136c7c8dda77d0b3cde345164
parent 552c1bdf
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -70,9 +70,11 @@ constructor(
    val isGuestUserResetting: Boolean = repository.isGuestUserResetting

    init {
        if (applicationContext.userId == UserHandle.USER_SYSTEM) {
            resumeSessionReceiver.register()
            resetOrExitSessionReceiver.register()
        }
    }

    /** Notifies that the device has finished booting. */
    fun onDeviceBootCompleted() {
+34 −20
Original line number Diff line number Diff line
@@ -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,7 +76,10 @@ class GuestUserInteractorTest : SysuiTestCase() {
        repository = FakeUserRepository()
        repository.setUserInfos(ALL_USERS)

        underTest =
        underTest = initGuestUserInteractor(context)
    }

    private fun initGuestUserInteractor(context: Context) =
        GuestUserInteractor(
            applicationContext = context,
            applicationScope = scope,
@@ -94,7 +99,6 @@ class GuestUserInteractorTest : SysuiTestCase() {
            resumeSessionReceiver = resumeSessionReceiver,
            resetOrExitSessionReceiver = resetOrExitSessionReceiver,
        )
    }

    @Test
    fun registersBroadcastReceivers() {
@@ -102,6 +106,16 @@ class GuestUserInteractorTest : SysuiTestCase() {
        verify(resetOrExitSessionReceiver).register()
    }

    @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) {