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

Commit 749a7457 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Showing lock screen when unpausing work widget" into main

parents 385c434c bb32ee38
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