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

Commit c74cee43 authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Also update manage profile state after a transition finishes" into udc-qpr-dev

parents 872d54fb 7d375fdf
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -546,7 +546,7 @@ public class PhoneStatusBarPolicy
                userId = ActivityTaskManager.getService().getLastResumedActivityUserId();
                boolean isManagedProfile = mUserManager.isManagedProfile(userId);
                String accessibilityString = getManagedProfileAccessibilityString();
                mHandler.post(() -> {
                mMainExecutor.execute(() -> {
                    final boolean showIcon;
                    if (isManagedProfile && (!mKeyguardStateController.isShowing()
                            || mKeyguardStateController.isOccluded())) {
@@ -626,6 +626,13 @@ public class PhoneStatusBarPolicy
        }
    }

    @Override
    public void appTransitionFinished(int displayId) {
        if (mDisplayId == displayId) {
            updateManagedProfile();
        }
    }

    @Override
    public void onKeyguardShowingChanged() {
        updateManagedProfile();
+41 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone

import android.app.AlarmManager
import android.app.admin.DevicePolicyManager
import android.app.admin.DevicePolicyResourcesManager
import android.content.SharedPreferences
import android.os.UserManager
import android.telecom.TelecomManager
@@ -49,6 +50,7 @@ import com.android.systemui.statusbar.policy.ZenModeController
import com.android.systemui.util.RingerModeTracker
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.kotlin.JavaAdapter
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.capture
import com.android.systemui.util.time.DateFormatUtil
import com.android.systemui.util.time.FakeSystemClock
@@ -67,6 +69,7 @@ import org.mockito.ArgumentCaptor
import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mockito.anyInt
import org.mockito.Mockito.anyString
import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.inOrder
import org.mockito.Mockito.never
@@ -83,6 +86,7 @@ class PhoneStatusBarPolicyTest : SysuiTestCase() {
    companion object {
        private const val ALARM_SLOT = "alarm"
        private const val CONNECTED_DISPLAY_SLOT = "connected_display"
        private const val MANAGED_PROFILE_SLOT = "managed_profile"
    }

    @Mock private lateinit var iconController: StatusBarIconController
@@ -104,6 +108,7 @@ class PhoneStatusBarPolicyTest : SysuiTestCase() {
    @Mock private lateinit var userManager: UserManager
    @Mock private lateinit var userTracker: UserTracker
    @Mock private lateinit var devicePolicyManager: DevicePolicyManager
    @Mock private lateinit var devicePolicyManagerResources: DevicePolicyResourcesManager
    @Mock private lateinit var recordingController: RecordingController
    @Mock private lateinit var telecomManager: TelecomManager
    @Mock private lateinit var sharedPreferences: SharedPreferences
@@ -132,6 +137,12 @@ class PhoneStatusBarPolicyTest : SysuiTestCase() {
            com.android.internal.R.string.status_bar_alarm_clock,
            ALARM_SLOT
        )
        context.orCreateTestableResources.addOverride(
            com.android.internal.R.string.status_bar_managed_profile,
            MANAGED_PROFILE_SLOT
        )
        whenever(devicePolicyManager.resources).thenReturn(devicePolicyManagerResources)
        whenever(devicePolicyManagerResources.getString(anyString(), any())).thenReturn("")
        statusBarPolicy = createStatusBarPolicy()
    }

@@ -181,6 +192,36 @@ class PhoneStatusBarPolicyTest : SysuiTestCase() {
        verify(iconController).setIconVisibility(ALARM_SLOT, true)
    }

    @Test
    fun testAppTransitionFinished_doesNotShowManagedProfileIcon() {
        whenever(userManager.isManagedProfile(anyInt())).thenReturn(false)
        whenever(keyguardStateController.isShowing).thenReturn(false)

        statusBarPolicy.appTransitionFinished(0)
        // The above call posts to bgExecutor and then back to mainExecutor
        executor.advanceClockToLast()
        executor.runAllReady()
        executor.advanceClockToLast()
        executor.runAllReady()

        verify(iconController, never()).setIconVisibility(MANAGED_PROFILE_SLOT, true)
    }

    @Test
    fun testAppTransitionFinished_showsManagedProfileIcon() {
        whenever(userManager.isManagedProfile(anyInt())).thenReturn(true)
        whenever(keyguardStateController.isShowing).thenReturn(false)

        statusBarPolicy.appTransitionFinished(0)
        // The above call posts to bgExecutor and then back to mainExecutor
        executor.advanceClockToLast()
        executor.runAllReady()
        executor.advanceClockToLast()
        executor.runAllReady()

        verify(iconController).setIconVisibility(MANAGED_PROFILE_SLOT, true)
    }

    @Test
    fun connectedDisplay_connected_iconShown() =
        testScope.runTest {