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

Commit 2bf152b3 authored by Heemin Seog's avatar Heemin Seog Committed by Automerger Merge Worker
Browse files

Merge "Connect to hvac in background thread, post status icons init" into rvc-dev am: 7fc97ad1

Change-Id: I48d19ac1a10433b5f521668d4ccc4fa07cd330a5
parents 1d2aaf2b 7fc97ad1
Loading
Loading
Loading
Loading
+14 −9
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.view.Display;
import android.view.Gravity;
import android.view.View;
@@ -47,6 +46,7 @@ import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.car.CarDeviceProvisionedController;
import com.android.systemui.car.CarDeviceProvisionedListener;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.statusbar.AutoHideUiElement;
@@ -76,6 +76,8 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks
    private final AutoHideController mAutoHideController;
    private final ButtonSelectionStateListener mButtonSelectionStateListener;
    private final Handler mMainHandler;
    private final Handler mBgHandler;
    private final IStatusBarService mBarService;
    private final Lazy<KeyguardStateController> mKeyguardStateControllerLazy;
    private final ButtonSelectionStateController mButtonSelectionStateController;
    private final PhoneStatusBarPolicy mIconPolicy;
@@ -84,7 +86,6 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks
    private final int mDisplayId;

    private StatusBarSignalPolicy mSignalPolicy;
    private IStatusBarService mBarService;
    private ActivityManagerWrapper mActivityManagerWrapper;

    // If the nav bar should be hidden when the soft keyboard is visible.
@@ -121,6 +122,8 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks
            AutoHideController autoHideController,
            ButtonSelectionStateListener buttonSelectionStateListener,
            @Main Handler mainHandler,
            @Background Handler bgHandler,
            IStatusBarService barService,
            Lazy<KeyguardStateController> keyguardStateControllerLazy,
            ButtonSelectionStateController buttonSelectionStateController,
            PhoneStatusBarPolicy iconPolicy,
@@ -135,6 +138,8 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks
        mAutoHideController = autoHideController;
        mButtonSelectionStateListener = buttonSelectionStateListener;
        mMainHandler = mainHandler;
        mBgHandler = bgHandler;
        mBarService = barService;
        mKeyguardStateControllerLazy = keyguardStateControllerLazy;
        mButtonSelectionStateController = buttonSelectionStateController;
        mIconPolicy = iconPolicy;
@@ -150,10 +155,6 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks
                com.android.internal.R.bool.config_automotiveHideNavBarForKeyboard);
        mBottomNavBarVisible = false;

        // Get bar service.
        mBarService = IStatusBarService.Stub.asInterface(
                ServiceManager.getService(Context.STATUS_BAR_SERVICE));

        // Connect into the status bar manager service
        mCommandQueue.addCallback(this);

@@ -233,11 +234,15 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks
        mActivityManagerWrapper = ActivityManagerWrapper.getInstance();
        mActivityManagerWrapper.registerTaskStackListener(mButtonSelectionStateListener);

        mCarNavigationBarController.connectToHvac();
        mBgHandler.post(() -> mCarNavigationBarController.connectToHvac());

        // Lastly, call to the icon policy to install/update all the icons.
        // Must be called on the main thread due to the use of observeForever() in
        // mIconPolicy.init().
        mMainHandler.post(() -> {
            mIconPolicy.init();
            mSignalPolicy = new StatusBarSignalPolicy(mContext, mIconController);
        });
    }

    private void restartNavBarsIfNecessary() {
+11 −6
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.view.WindowManager;

import androidx.test.filters.SmallTest;

import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.car.CarDeviceProvisionedController;
@@ -57,6 +58,7 @@ public class CarNavigationBarTest extends SysuiTestCase {
    private CarNavigationBar mCarNavigationBar;
    private TestableResources mTestableResources;
    private Handler mHandler;
    private Handler mBackgroundHandler;

    @Mock
    private CarNavigationBarController mCarNavigationBarController;
@@ -69,6 +71,8 @@ public class CarNavigationBarTest extends SysuiTestCase {
    @Mock
    private ButtonSelectionStateListener mButtonSelectionStateListener;
    @Mock
    private IStatusBarService mBarService;
    @Mock
    private KeyguardStateController mKeyguardStateController;
    @Mock
    private ButtonSelectionStateController mButtonSelectionStateController;
@@ -82,11 +86,12 @@ public class CarNavigationBarTest extends SysuiTestCase {
        MockitoAnnotations.initMocks(this);
        mTestableResources = mContext.getOrCreateTestableResources();
        mHandler = Handler.getMain();
        mBackgroundHandler = Handler.createAsync(TestableLooper.get(this).getLooper());
        mCarNavigationBar = new CarNavigationBar(mContext, mTestableResources.getResources(),
                mCarNavigationBarController, mWindowManager, mDeviceProvisionedController,
                new CommandQueue(mContext), mAutoHideController, mButtonSelectionStateListener,
                mHandler, () -> mKeyguardStateController, mButtonSelectionStateController,
                mIconPolicy, mIconController);
                mHandler, mBackgroundHandler, mBarService, () -> mKeyguardStateController,
                mButtonSelectionStateController, mIconPolicy, mIconController);
    }

    @Test
@@ -103,7 +108,7 @@ public class CarNavigationBarTest extends SysuiTestCase {
        verify(mDeviceProvisionedController).addCallback(deviceProvisionedCallbackCaptor.capture());

        deviceProvisionedCallbackCaptor.getValue().onUserSwitched();
        waitForIdleSync(mHandler);
        waitForIdleSync(mBackgroundHandler);

        verify(mButtonSelectionStateListener).onTaskStackChanged();
    }
@@ -123,7 +128,7 @@ public class CarNavigationBarTest extends SysuiTestCase {
        verify(mDeviceProvisionedController).addCallback(deviceProvisionedCallbackCaptor.capture());

        deviceProvisionedCallbackCaptor.getValue().onUserSwitched();
        waitForIdleSync(mHandler);
        waitForIdleSync(mBackgroundHandler);

        verify(mCarNavigationBarController).showAllKeyguardButtons(false);
    }
@@ -142,12 +147,12 @@ public class CarNavigationBarTest extends SysuiTestCase {
        when(mDeviceProvisionedController.isCurrentUserSetup()).thenReturn(false);
        verify(mDeviceProvisionedController).addCallback(deviceProvisionedCallbackCaptor.capture());
        deviceProvisionedCallbackCaptor.getValue().onUserSwitched();
        waitForIdleSync(mHandler);
        waitForIdleSync(mBackgroundHandler);
        when(mDeviceProvisionedController.isCurrentUserSetup()).thenReturn(true);
        when(mKeyguardStateController.isShowing()).thenReturn(false);

        deviceProvisionedCallbackCaptor.getValue().onUserSetupChanged();
        waitForIdleSync(mHandler);
        waitForIdleSync(mBackgroundHandler);

        verify(mCarNavigationBarController).hideAllKeyguardButtons(true);
    }