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

Commit 19a14268 authored by Daniel Chapin's avatar Daniel Chapin Committed by Android Build Coastguard Worker
Browse files

Revert "Move onBeforeUserSwitching call to the beginning of the user switch."

This reverts commit bd139924.

Reason for revert: DF.daily blocking bug: b/369294724
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:11b16fe5a2aea9baa56e7aabd046bfb62b91dcf7)
Merged-In: I4f5f4ccc3d22d8197d0da2c5231a74ebf3538f61
Change-Id: I4f5f4ccc3d22d8197d0da2c5231a74ebf3538f61
parent 817847be
Loading
Loading
Loading
Loading
+11 −20
Original line number Diff line number Diff line
@@ -1986,7 +1986,6 @@ class UserController implements Handler.Callback {
                // it should be moved outside, but for now it's not as there are many calls to
                // external components here afterwards
                updateProfileRelatedCaches();
                dispatchOnBeforeUserSwitching(userId);
                mInjector.getWindowManager().setCurrentUser(userId);
                mInjector.reportCurWakefulnessUsageEvent();
                if (userSwitchUiEnabled) {
@@ -2285,25 +2284,6 @@ class UserController implements Handler.Callback {
        mUserSwitchObservers.finishBroadcast();
    }

    private void dispatchOnBeforeUserSwitching(@UserIdInt int newUserId) {
        final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
        t.traceBegin("dispatchOnBeforeUserSwitching-" + newUserId);
        final int observerCount = mUserSwitchObservers.beginBroadcast();
        for (int i = 0; i < observerCount; i++) {
            final String name = "#" + i + " " + mUserSwitchObservers.getBroadcastCookie(i);
            t.traceBegin("onBeforeUserSwitching-" + name);
            try {
                mUserSwitchObservers.getBroadcastItem(i).onBeforeUserSwitching(newUserId);
            } catch (RemoteException e) {
                // Ignore
            } finally {
                t.traceEnd();
            }
        }
        mUserSwitchObservers.finishBroadcast();
        t.traceEnd();
    }

    /** Called on handler thread */
    @VisibleForTesting
    void dispatchUserSwitchComplete(@UserIdInt int oldUserId, @UserIdInt int newUserId) {
@@ -2519,6 +2499,17 @@ class UserController implements Handler.Callback {

        final int observerCount = mUserSwitchObservers.beginBroadcast();
        if (observerCount > 0) {
            for (int i = 0; i < observerCount; i++) {
                final String name = "#" + i + " " + mUserSwitchObservers.getBroadcastCookie(i);
                t.traceBegin("onBeforeUserSwitching-" + name);
                try {
                    mUserSwitchObservers.getBroadcastItem(i).onBeforeUserSwitching(newUserId);
                } catch (RemoteException e) {
                    // Ignore
                } finally {
                    t.traceEnd();
                }
            }
            final ArraySet<String> curWaitingUserSwitchCallbacks = new ArraySet<>();
            synchronized (mLock) {
                uss.switching = true;
+2 −2
Original line number Diff line number Diff line
@@ -432,7 +432,6 @@ public class UserControllerTest {
        mUserController.registerUserSwitchObserver(observer, "mock");
        // Start user -- this will update state of mUserController
        mUserController.startUser(TEST_USER_ID, USER_START_MODE_FOREGROUND);
        verify(observer, times(1)).onBeforeUserSwitching(eq(TEST_USER_ID));
        Message reportMsg = mInjector.mHandler.getMessageForCode(REPORT_USER_SWITCH_MSG);
        assertNotNull(reportMsg);
        UserState userState = (UserState) reportMsg.obj;
@@ -441,6 +440,7 @@ public class UserControllerTest {
        // Call dispatchUserSwitch and verify that observer was called only once
        mInjector.mHandler.clearAllRecordedMessages();
        mUserController.dispatchUserSwitch(userState, oldUserId, newUserId);
        verify(observer, times(1)).onBeforeUserSwitching(eq(TEST_USER_ID));
        verify(observer, times(1)).onUserSwitching(eq(TEST_USER_ID), any());
        Set<Integer> expectedCodes = Collections.singleton(CONTINUE_USER_SWITCH_MSG);
        Set<Integer> actualCodes = mInjector.mHandler.getMessageCodes();
@@ -463,7 +463,6 @@ public class UserControllerTest {
        mUserController.registerUserSwitchObserver(observer, "mock");
        // Start user -- this will update state of mUserController
        mUserController.startUser(TEST_USER_ID, USER_START_MODE_FOREGROUND);
        verify(observer, times(1)).onBeforeUserSwitching(eq(TEST_USER_ID));
        Message reportMsg = mInjector.mHandler.getMessageForCode(REPORT_USER_SWITCH_MSG);
        assertNotNull(reportMsg);
        UserState userState = (UserState) reportMsg.obj;
@@ -472,6 +471,7 @@ public class UserControllerTest {
        // Call dispatchUserSwitch and verify that observer was called only once
        mInjector.mHandler.clearAllRecordedMessages();
        mUserController.dispatchUserSwitch(userState, oldUserId, newUserId);
        verify(observer, times(1)).onBeforeUserSwitching(eq(TEST_USER_ID));
        verify(observer, times(1)).onUserSwitching(eq(TEST_USER_ID), any());
        // Verify that CONTINUE_USER_SWITCH_MSG is not sent (triggers timeout)
        Set<Integer> actualCodes = mInjector.mHandler.getMessageCodes();