Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +1 −1 Original line number Diff line number Diff line Loading @@ -2603,7 +2603,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, if (mContext.getResources().getBoolean( com.android.internal.R.bool.config_guestUserAutoCreated)) { // TODO(b/191067027): Move post-boot guest creation to system_server mUserSwitcherController.guaranteeGuestPresent(); mUserSwitcherController.schedulePostBootGuestCreation(); } mBootCompleted = true; adjustStatusBarLocked(false, true); Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +41 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.app.ActivityManager; import android.app.AlertDialog; import android.app.Dialog; import android.app.IActivityTaskManager; import android.app.admin.DevicePolicyManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; Loading Loading @@ -114,6 +115,8 @@ public class UserSwitcherController implements Dumpable { @VisibleForTesting final GuestResumeSessionReceiver mGuestResumeSessionReceiver; private final KeyguardStateController mKeyguardStateController; private final DeviceProvisionedController mDeviceProvisionedController; private final DevicePolicyManager mDevicePolicyManager; protected final Handler mHandler; private final ActivityStarter mActivityStarter; private final BroadcastDispatcher mBroadcastDispatcher; Loading Loading @@ -149,6 +152,8 @@ public class UserSwitcherController implements Dumpable { UserManager userManager, UserTracker userTracker, KeyguardStateController keyguardStateController, DeviceProvisionedController deviceProvisionedController, DevicePolicyManager devicePolicyManager, @Main Handler handler, ActivityStarter activityStarter, BroadcastDispatcher broadcastDispatcher, Loading Loading @@ -178,6 +183,8 @@ public class UserSwitcherController implements Dumpable { mGuestIsResetting = new AtomicBoolean(); mGuestCreationScheduled = new AtomicBoolean(); mKeyguardStateController = keyguardStateController; mDeviceProvisionedController = deviceProvisionedController; mDevicePolicyManager = devicePolicyManager; mHandler = handler; mActivityStarter = activityStarter; mUserManager = userManager; Loading Loading @@ -732,11 +739,28 @@ public class UserSwitcherController implements Dumpable { } /** * Guarantee guest is present only if the device is provisioned. Otherwise, create a content * observer to wait until the device is provisioned, then schedule the guest creation. */ public void schedulePostBootGuestCreation() { if (isDeviceAllowedToAddGuest()) { guaranteeGuestPresent(); } else { mDeviceProvisionedController.addCallback(mGuaranteeGuestPresentAfterProvisioned); } } private boolean isDeviceAllowedToAddGuest() { return mDeviceProvisionedController.isDeviceProvisioned() && !mDevicePolicyManager.isDeviceManaged(); } /** * If there is no guest on the device, schedule creation of a new guest user in the background. */ public void guaranteeGuestPresent() { if (mUserManager.findCurrentGuestUser() == null) { private void guaranteeGuestPresent() { if (isDeviceAllowedToAddGuest() && mUserManager.findCurrentGuestUser() == null) { scheduleGuestCreation(); } } Loading Loading @@ -1056,6 +1080,21 @@ public class UserSwitcherController implements Dumpable { } }; private final DeviceProvisionedController.DeviceProvisionedListener mGuaranteeGuestPresentAfterProvisioned = new DeviceProvisionedController.DeviceProvisionedListener() { @Override public void onDeviceProvisionedChanged() { if (isDeviceAllowedToAddGuest()) { mBgExecutor.execute( () -> mDeviceProvisionedController.removeCallback( mGuaranteeGuestPresentAfterProvisioned)); guaranteeGuestPresent(); } } }; private final class ExitGuestDialog extends SystemUIDialog implements DialogInterface.OnClickListener { Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/UserSwitcherControllerTest.kt +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.policy import android.app.IActivityTaskManager import android.app.admin.DevicePolicyManager import android.content.Context import android.content.DialogInterface import android.content.Intent Loading Loading @@ -63,6 +64,8 @@ import org.mockito.MockitoAnnotations @SmallTest class UserSwitcherControllerTest : SysuiTestCase() { @Mock private lateinit var keyguardStateController: KeyguardStateController @Mock private lateinit var deviceProvisionedController: DeviceProvisionedController @Mock private lateinit var devicePolicyManager: DevicePolicyManager @Mock private lateinit var handler: Handler @Mock private lateinit var userTracker: UserTracker @Mock private lateinit var userManager: UserManager Loading Loading @@ -107,6 +110,8 @@ class UserSwitcherControllerTest : SysuiTestCase() { userManager, userTracker, keyguardStateController, deviceProvisionedController, devicePolicyManager, handler, activityStarter, broadcastDispatcher, Loading Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +1 −1 Original line number Diff line number Diff line Loading @@ -2603,7 +2603,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, if (mContext.getResources().getBoolean( com.android.internal.R.bool.config_guestUserAutoCreated)) { // TODO(b/191067027): Move post-boot guest creation to system_server mUserSwitcherController.guaranteeGuestPresent(); mUserSwitcherController.schedulePostBootGuestCreation(); } mBootCompleted = true; adjustStatusBarLocked(false, true); Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +41 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.app.ActivityManager; import android.app.AlertDialog; import android.app.Dialog; import android.app.IActivityTaskManager; import android.app.admin.DevicePolicyManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; Loading Loading @@ -114,6 +115,8 @@ public class UserSwitcherController implements Dumpable { @VisibleForTesting final GuestResumeSessionReceiver mGuestResumeSessionReceiver; private final KeyguardStateController mKeyguardStateController; private final DeviceProvisionedController mDeviceProvisionedController; private final DevicePolicyManager mDevicePolicyManager; protected final Handler mHandler; private final ActivityStarter mActivityStarter; private final BroadcastDispatcher mBroadcastDispatcher; Loading Loading @@ -149,6 +152,8 @@ public class UserSwitcherController implements Dumpable { UserManager userManager, UserTracker userTracker, KeyguardStateController keyguardStateController, DeviceProvisionedController deviceProvisionedController, DevicePolicyManager devicePolicyManager, @Main Handler handler, ActivityStarter activityStarter, BroadcastDispatcher broadcastDispatcher, Loading Loading @@ -178,6 +183,8 @@ public class UserSwitcherController implements Dumpable { mGuestIsResetting = new AtomicBoolean(); mGuestCreationScheduled = new AtomicBoolean(); mKeyguardStateController = keyguardStateController; mDeviceProvisionedController = deviceProvisionedController; mDevicePolicyManager = devicePolicyManager; mHandler = handler; mActivityStarter = activityStarter; mUserManager = userManager; Loading Loading @@ -732,11 +739,28 @@ public class UserSwitcherController implements Dumpable { } /** * Guarantee guest is present only if the device is provisioned. Otherwise, create a content * observer to wait until the device is provisioned, then schedule the guest creation. */ public void schedulePostBootGuestCreation() { if (isDeviceAllowedToAddGuest()) { guaranteeGuestPresent(); } else { mDeviceProvisionedController.addCallback(mGuaranteeGuestPresentAfterProvisioned); } } private boolean isDeviceAllowedToAddGuest() { return mDeviceProvisionedController.isDeviceProvisioned() && !mDevicePolicyManager.isDeviceManaged(); } /** * If there is no guest on the device, schedule creation of a new guest user in the background. */ public void guaranteeGuestPresent() { if (mUserManager.findCurrentGuestUser() == null) { private void guaranteeGuestPresent() { if (isDeviceAllowedToAddGuest() && mUserManager.findCurrentGuestUser() == null) { scheduleGuestCreation(); } } Loading Loading @@ -1056,6 +1080,21 @@ public class UserSwitcherController implements Dumpable { } }; private final DeviceProvisionedController.DeviceProvisionedListener mGuaranteeGuestPresentAfterProvisioned = new DeviceProvisionedController.DeviceProvisionedListener() { @Override public void onDeviceProvisionedChanged() { if (isDeviceAllowedToAddGuest()) { mBgExecutor.execute( () -> mDeviceProvisionedController.removeCallback( mGuaranteeGuestPresentAfterProvisioned)); guaranteeGuestPresent(); } } }; private final class ExitGuestDialog extends SystemUIDialog implements DialogInterface.OnClickListener { Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/UserSwitcherControllerTest.kt +5 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.policy import android.app.IActivityTaskManager import android.app.admin.DevicePolicyManager import android.content.Context import android.content.DialogInterface import android.content.Intent Loading Loading @@ -63,6 +64,8 @@ import org.mockito.MockitoAnnotations @SmallTest class UserSwitcherControllerTest : SysuiTestCase() { @Mock private lateinit var keyguardStateController: KeyguardStateController @Mock private lateinit var deviceProvisionedController: DeviceProvisionedController @Mock private lateinit var devicePolicyManager: DevicePolicyManager @Mock private lateinit var handler: Handler @Mock private lateinit var userTracker: UserTracker @Mock private lateinit var userManager: UserManager Loading Loading @@ -107,6 +110,8 @@ class UserSwitcherControllerTest : SysuiTestCase() { userManager, userTracker, keyguardStateController, deviceProvisionedController, devicePolicyManager, handler, activityStarter, broadcastDispatcher, Loading