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

This commit is contained in:
Winson Chung
2023-07-20 15:53:13 +00:00
committed by Android (Google) Code Review
2 changed files with 49 additions and 1 deletions

View File

@@ -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();

View File

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