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

Commit ead7c212 authored by Matt Pietal's avatar Matt Pietal Committed by Android (Google) Code Review
Browse files

Merge "Remove user switcher callback when exiting user switcher mode" into main

parents 5020a6ff ab1a29e9
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ import com.android.systemui.classifier.FalsingA11yDelegate;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.policy.UserSwitcherController.UserSwitchCallback;
import com.android.systemui.user.data.source.UserRecord;
import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.settings.GlobalSettings;
@@ -70,6 +71,8 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
@@ -96,6 +99,9 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
    private UserSwitcherController mUserSwitcherController;
    @Mock
    private FalsingA11yDelegate mFalsingA11yDelegate;
    @Captor
    private ArgumentCaptor<UserSwitchCallback> mUserSwitchCallbackCaptor =
            ArgumentCaptor.forClass(UserSwitchCallback.class);

    private KeyguardSecurityContainer mKeyguardSecurityContainer;
    private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
@@ -359,6 +365,18 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
        assertThat(anchor.isClickable()).isTrue();
    }

    @Test
    public void goingOutOfUserSwitcherRemovesCallback() {
        // WHEN UserSwitcherViewMode is initialized
        setupUserSwitcher();
        verify(mUserSwitcherController).addUserSwitchCallback(mUserSwitchCallbackCaptor.capture());

        // Back to default mode, as SIM PIN would be
        initMode(MODE_DEFAULT);
        verify(mUserSwitcherController).removeUserSwitchCallback(
                mUserSwitchCallbackCaptor.getValue());
    }

    @Test
    public void testOnDensityOrFontScaleChanged() {
        setupUserSwitcher();
+21 −5
Original line number Diff line number Diff line
@@ -1067,6 +1067,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout {

        @Override
        public void onDestroy() {
            mUserSwitcherController.removeUserSwitchCallback(mUserSwitchCallback);

            ConstraintSet constraintSet = new ConstraintSet();
            constraintSet.clone(mView);
            constraintSet.clear(mUserSwitcherViewGroup.getId());
@@ -1075,6 +1077,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout {

            mView.removeView(mUserSwitcherViewGroup);
            mView.removeView(mUserSwitcher);
            mUserSwitcher = null;
            mUserSwitcherViewGroup = null;
        }

        private void findLargeUserIcon(int userId, Consumer<Drawable> consumer) {
@@ -1102,6 +1106,10 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
                return;
            }

            if (mUserSwitcherViewGroup == null) {
                return;
            }

            mUserSwitcherViewGroup.setAlpha(0f);
            ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
            int yTrans = mView.getResources().getDimensionPixelSize(R.dimen.pin_view_trans_y_entry);
@@ -1110,14 +1118,18 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
            animator.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    if (mUserSwitcherViewGroup != null) {
                        mUserSwitcherViewGroup.setAlpha(1f);
                        mUserSwitcherViewGroup.setTranslationY(0f);
                    }
                }
            });
            animator.addUpdateListener(animation -> {
                if (mUserSwitcherViewGroup != null) {
                    float value = (float) animation.getAnimatedValue();
                    mUserSwitcherViewGroup.setAlpha(value);
                    mUserSwitcherViewGroup.setTranslationY(yTrans - yTrans * value);
                }
            });
            animator.start();
        }
@@ -1148,6 +1160,10 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
                Log.e(TAG, "Current user in user switcher is null.");
                return;
            }
            if (mUserSwitcher == null) {
                Log.w(TAG, "User switcher is not inflated, cannot setupUserSwitcher");
                return;
            }
            final String currentUserName = mUserSwitcherController.getCurrentUserName();
            findLargeUserIcon(currentUser.info.id,
                    (Drawable userIcon) -> {