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

Commit 5260d2d7 authored by Julia Kawano's avatar Julia Kawano Committed by Android (Google) Code Review
Browse files

Merge "Fix crash from UserNameViewController.removeAll()"

parents 88da930c 1e91e474
Loading
Loading
Loading
Loading
+10 −3
Original line number Original line Diff line number Diff line
@@ -59,6 +59,8 @@ public class UserNameViewController {
        }
        }
    };
    };


    private boolean mUserLifecycleListenerRegistered = false;

    private final CarUserManager.UserLifecycleListener mUserLifecycleListener =
    private final CarUserManager.UserLifecycleListener mUserLifecycleListener =
            new CarUserManager.UserLifecycleListener() {
            new CarUserManager.UserLifecycleListener() {
                @Override
                @Override
@@ -100,10 +102,14 @@ public class UserNameViewController {
     * Clean up the controller and unregister receiver.
     * Clean up the controller and unregister receiver.
     */
     */
    public void removeAll() {
    public void removeAll() {
        mUserNameView = null;
        if (mUserLifecycleListenerRegistered) {
            mBroadcastDispatcher.unregisterReceiver(mUserUpdateReceiver);
            mBroadcastDispatcher.unregisterReceiver(mUserUpdateReceiver);
            if (mCarUserManager != null) {
            if (mCarUserManager != null) {
                mCarUserManager.removeListener(mUserLifecycleListener);
                mCarUserManager.removeListener(mUserLifecycleListener);
            }
            }
            mUserLifecycleListenerRegistered = false;
        }
    }
    }


    private void registerForUserChangeEvents() {
    private void registerForUserChangeEvents() {
@@ -112,6 +118,7 @@ public class UserNameViewController {
            mCarUserManager = (CarUserManager) car.getCarManager(Car.CAR_USER_SERVICE);
            mCarUserManager = (CarUserManager) car.getCarManager(Car.CAR_USER_SERVICE);
            if (mCarUserManager != null) {
            if (mCarUserManager != null) {
                mCarUserManager.addListener(Runnable::run, mUserLifecycleListener);
                mCarUserManager.addListener(Runnable::run, mUserLifecycleListener);
                mUserLifecycleListenerRegistered = true;
            } else {
            } else {
                Log.e(TAG, "CarUserManager could not be obtained.");
                Log.e(TAG, "CarUserManager could not be obtained.");
            }
            }
+7 −0
Original line number Original line Diff line number Diff line
@@ -108,6 +108,13 @@ public class UserNameViewControllerTest extends SysuiTestCase {
        verifyZeroInteractions(mUserManager);
        verifyZeroInteractions(mUserManager);
    }
    }


    @Test
    public void removeAll_withNoRegisteredListener_doesNotUnregister() {
        mUserNameViewController.removeAll();

        verifyZeroInteractions(mCarUserManager);
    }

    @Test
    @Test
    public void userLifecycleListener_onUserSwitchLifecycleEvent_updatesUserNameView() {
    public void userLifecycleListener_onUserSwitchLifecycleEvent_updatesUserNameView() {
        ArgumentCaptor<CarUserManager.UserLifecycleListener> userLifecycleListenerArgumentCaptor =
        ArgumentCaptor<CarUserManager.UserLifecycleListener> userLifecycleListenerArgumentCaptor =