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

Commit 58a1a99d authored by Peter Kalauskas's avatar Peter Kalauskas
Browse files

Move guest creation to background thread

Fix bug where phone could not unlock if guest user was being created in
the background.

This bug only affected devices with config_guestUserAutoCreated=true.

Test: In scheduleGuestCreation, replace createGuest() with
      Thread.sleep(20000). Ensure device can be unlocked within a few
      seconds after killing sysui process.
Bug: 194531015
Change-Id: Idc86a7afdb58a64baa3725d8aa56d7c93a409662
parent 7ee0307a
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -65,8 +65,8 @@ import com.android.systemui.R;
import com.android.systemui.SystemUISecondaryUserService;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.qs.DetailAdapter;
@@ -138,7 +138,7 @@ public class UserSwitcherController implements Dumpable {
    private SparseBooleanArray mForcePictureLoadForUserId = new SparseBooleanArray(2);
    private final UiEventLogger mUiEventLogger;
    public final DetailAdapter mUserDetailAdapter;
    private final Executor mUiBgExecutor;
    private final Executor mBgExecutor;
    private final boolean mGuestUserAutoCreated;
    private final AtomicBoolean mGuestIsResetting;
    private final AtomicBoolean mGuestCreationScheduled;
@@ -158,7 +158,7 @@ public class UserSwitcherController implements Dumpable {
            IActivityTaskManager activityTaskManager,
            UserDetailAdapter userDetailAdapter,
            SecureSettings secureSettings,
            @UiBackground Executor uiBgExecutor) {
            @Background Executor bgExecutor) {
        mContext = context;
        mUserTracker = userTracker;
        mBroadcastDispatcher = broadcastDispatcher;
@@ -169,7 +169,7 @@ public class UserSwitcherController implements Dumpable {
        mGuestResumeSessionReceiver = new GuestResumeSessionReceiver(
                this, mUserTracker, mUiEventLogger, secureSettings);
        mUserDetailAdapter = userDetailAdapter;
        mUiBgExecutor = uiBgExecutor;
        mBgExecutor = bgExecutor;
        if (!UserManager.isGuestUserEphemeral()) {
            mGuestResumeSessionReceiver.register(mBroadcastDispatcher);
        }
@@ -718,7 +718,7 @@ public class UserSwitcherController implements Dumpable {
            return;
        }

        mUiBgExecutor.execute(() -> {
        mBgExecutor.execute(() -> {
            int newGuestId = createGuest();
            mGuestCreationScheduled.set(false);
            mGuestIsResetting.set(false);