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

Commit ea70312c authored by Darrell Shi's avatar Darrell Shi
Browse files

Avoid creating user context in a non system user

This change makes it so that when CommunalAppWidgetHostStartable is
started in a non system user and hsum is not enabled, do nothing.

Test: none
Fix: 431515488
Flag: EXEMPT bugfix
Change-Id: I29a44f06e1b73b34d3fed3d59d2712da9b98b877
parent 008dba6c
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -33,6 +33,9 @@ interface GlanceableHubMultiUserHelper {
    /** Whether the current process is running in the headless system user. */
    fun isInHeadlessSystemUser(): Boolean

    /** Whether the current process is running in the system user. */
    fun isSystemUser(): Boolean

    /**
     * Asserts that the current process is running in the headless system user.
     *
@@ -57,7 +60,11 @@ class GlanceableHubMultiUserHelperImpl @Inject constructor(private val userHandl
    override fun isHeadlessSystemUserMode(): Boolean = UserManager.isHeadlessSystemUserMode()

    override fun isInHeadlessSystemUser(): Boolean {
        return isHeadlessSystemUserMode() && userHandle.isSystem
        return isHeadlessSystemUserMode() && isSystemUser()
    }

    override fun isSystemUser(): Boolean {
        return userHandle.isSystem
    }

    override fun assertInHeadlessSystemUser() {
+8 −0
Original line number Diff line number Diff line
@@ -69,6 +69,14 @@ constructor(
    private val glanceableHubWidgetManager by lazy { glanceableHubWidgetManagerLazy.get() }

    override fun start() {
        // Do nothing on a non system user process when hsum is not enabled. See b/431515488.
        if (
            !glanceableHubMultiUserHelper.glanceableHubHsumFlagEnabled &&
                !glanceableHubMultiUserHelper.isSystemUser()
        ) {
            return
        }

        if (
            glanceableHubMultiUserHelper.glanceableHubHsumFlagEnabled &&
                glanceableHubMultiUserHelper.isInHeadlessSystemUser()
+9 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ class FakeGlanceableHubMultiUserHelper(
    override val glanceableHubHsumFlagEnabled: Boolean = true,
    private var isHeadlessSystemUserMode: Boolean = false,
    private var isInHeadlessSystemUser: Boolean = false,
    private var isSystemUser: Boolean = true,
) : GlanceableHubMultiUserHelper {

    override fun isHeadlessSystemUserMode(): Boolean {
@@ -34,10 +35,18 @@ class FakeGlanceableHubMultiUserHelper(
        return isInHeadlessSystemUser
    }

    override fun isSystemUser(): Boolean {
        return isSystemUser
    }

    fun setIsInHeadlessSystemUser(isInHeadlessSystemUser: Boolean) {
        this.isInHeadlessSystemUser = isInHeadlessSystemUser
    }

    fun setIsSystemUser(isSystemUser: Boolean) {
        this.isSystemUser = isSystemUser
    }

    override fun assertInHeadlessSystemUser() {
        check(isInHeadlessSystemUser())
    }