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

Commit bb32ee38 authored by Prince's avatar Prince
Browse files

Showing lock screen when unpausing work widget

Fixes: 358010161
Test: atest CommunalInteractorTest ManagedProfileControllerImplTest
Flag: NONE small change
Change-Id: I319dd03552630b3c7561ae90bfe8ddb2d99d8231
parent 4f76b942
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -68,15 +68,16 @@ import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.FakeUserTracker
import com.android.systemui.settings.fakeUserTracker
import com.android.systemui.statusbar.phone.fakeManagedProfileController
import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.FakeUserRepository
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.capture
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.mockito.whenever
import com.android.systemui.utils.leaks.FakeManagedProfileController
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
@@ -122,6 +123,7 @@ class CommunalInteractorTest : SysuiTestCase() {
    private lateinit var userTracker: FakeUserTracker
    private lateinit var activityStarter: ActivityStarter
    private lateinit var userManager: UserManager
    private lateinit var managedProfileController: FakeManagedProfileController

    private lateinit var underTest: CommunalInteractor

@@ -143,6 +145,7 @@ class CommunalInteractorTest : SysuiTestCase() {
        userTracker = kosmos.fakeUserTracker
        activityStarter = kosmos.activityStarter
        userManager = kosmos.userManager
        managedProfileController = kosmos.fakeManagedProfileController

        whenever(mainUser.isMain).thenReturn(true)
        whenever(secondaryUser.isMain).thenReturn(false)
@@ -1070,6 +1073,14 @@ class CommunalInteractorTest : SysuiTestCase() {
        }
    }

    @Test
    fun unpauseWorkProfileEnablesWorkMode() =
        testScope.runTest {
            underTest.unpauseWorkProfile()

            assertThat(managedProfileController.isWorkModeEnabled()).isTrue()
        }

    private fun setKeyguardFeaturesDisabled(user: UserInfo, disabledFlags: Int) {
        whenever(kosmos.devicePolicyManager.getKeyguardDisabledFeatures(nullable(), eq(user.id)))
            .thenReturn(disabledFlags)
+3 −6
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.phone.ManagedProfileController
import com.android.systemui.util.kotlin.BooleanFlowOperators.allOf
import com.android.systemui.util.kotlin.BooleanFlowOperators.not
import com.android.systemui.util.kotlin.emitOnStart
@@ -116,6 +117,7 @@ constructor(
    sceneInteractor: SceneInteractor,
    @CommunalLog logBuffer: LogBuffer,
    @CommunalTableLog tableLogBuffer: TableLogBuffer,
    private val managedProfileController: ManagedProfileController
) {
    private val logger = Logger(logBuffer, "CommunalInteractor")

@@ -401,12 +403,7 @@ constructor(

    /** Request to unpause work profile that is currently in quiet mode. */
    fun unpauseWorkProfile() {
        userTracker.userProfiles
            .find { it.isManagedProfile }
            ?.userHandle
            ?.let { userHandle ->
                userManager.requestQuietModeEnabled(/* enableQuietMode */ false, userHandle)
            }
        managedProfileController.setWorkModeEnabled(true)
    }

    /** Returns true if work profile is in quiet mode (disabled) for user handle. */
+6 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.UserManager;

import androidx.annotation.NonNull;

import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.settings.UserTracker;
@@ -43,17 +44,20 @@ public class ManagedProfileControllerImpl implements ManagedProfileController {
    private final UserManager mUserManager;
    private final UserTracker mUserTracker;
    private final LinkedList<UserInfo> mProfiles;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;

    private boolean mListening;
    private int mCurrentUser;

    @Inject
    public ManagedProfileControllerImpl(Context context, @Main Executor mainExecutor,
            UserTracker userTracker, UserManager userManager) {
            UserTracker userTracker, UserManager userManager,
            KeyguardUpdateMonitor keyguardUpdateMonitor) {
        mContext = context;
        mMainExecutor = mainExecutor;
        mUserManager = userManager;
        mUserTracker = userTracker;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mProfiles = new LinkedList<>();
    }

@@ -80,6 +84,7 @@ public class ManagedProfileControllerImpl implements ManagedProfileController {
                    StatusBarManager statusBarManager = (StatusBarManager) mContext
                            .getSystemService(android.app.Service.STATUS_BAR_SERVICE);
                    statusBarManager.collapsePanels();
                    mKeyguardUpdateMonitor.awakenFromDream();
                }
            }
        }
+29 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.pm.UserInfo
import android.os.UserManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.SysuiTestCase
import com.android.systemui.settings.UserTracker
import com.android.systemui.util.concurrency.FakeExecutor
@@ -35,6 +36,7 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.never

@SmallTest
@RunWith(AndroidJUnit4::class)
@@ -46,12 +48,20 @@ class ManagedProfileControllerImplTest : SysuiTestCase() {

    @Mock private lateinit var userTracker: UserTracker
    @Mock private lateinit var userManager: UserManager
    @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor

    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)

        controller = ManagedProfileControllerImpl(context, mainExecutor, userTracker, userManager)
        controller =
            ManagedProfileControllerImpl(
                context,
                mainExecutor,
                userTracker,
                userManager,
                keyguardUpdateMonitor
            )
    }

    @Test
@@ -107,6 +117,24 @@ class ManagedProfileControllerImplTest : SysuiTestCase() {
        captor.value.onProfilesChanged(userManager.getEnabledProfiles(1))
    }

    @Test
    fun hasWorkingProfile_setWorkModeEnabled_callsAwakenFromDream() {
        `when`(userTracker.userId).thenReturn(1)
        setupWorkingProfile(1)
        `when`(userManager.requestQuietModeEnabled(any(), any())).thenReturn(false)
        controller.hasActiveProfile()

        controller.isWorkModeEnabled = true

        verify(keyguardUpdateMonitor).awakenFromDream()
    }

    @Test
    fun noWorkingProfile_setWorkModeEnabled_NoAwakenFromDreamCall() {
        controller.isWorkModeEnabled = true
        verify(keyguardUpdateMonitor, never()).awakenFromDream()
    }

    private fun setupWorkingProfile(userId: Int) {
        `when`(userManager.getEnabledProfiles(userId))
            .thenReturn(
+2 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.plugins.activityStarter
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.settings.userTracker
import com.android.systemui.statusbar.phone.fakeManagedProfileController
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.mockito.mock

@@ -61,6 +62,7 @@ val Kosmos.communalInteractor by Fixture {
        sceneInteractor = sceneInteractor,
        logBuffer = logcatLogBuffer("CommunalInteractor"),
        tableLogBuffer = mock(),
        managedProfileController = fakeManagedProfileController
    )
}

Loading