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

Commit 970d0be2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Reapply nav hints when systemui crashes or killed" into qt-dev

parents 55fdf6d9 94380655
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.systemui.statusbar.car;
package com.android.systemui.statusbar.car;


import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.ActivityTaskManager;
import android.app.ActivityTaskManager;
import android.car.drivingstate.CarDrivingStateEvent;
import android.car.drivingstate.CarDrivingStateEvent;
@@ -39,6 +40,7 @@ import com.android.car.notification.CarUxRestrictionManagerWrapper;
import com.android.car.notification.NotificationClickHandlerFactory;
import com.android.car.notification.NotificationClickHandlerFactory;
import com.android.car.notification.NotificationViewController;
import com.android.car.notification.NotificationViewController;
import com.android.car.notification.PreprocessingManager;
import com.android.car.notification.PreprocessingManager;
import com.android.internal.statusbar.RegisterStatusBarResult;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.BatteryMeterView;
import com.android.systemui.BatteryMeterView;
import com.android.systemui.CarSystemUIFactory;
import com.android.systemui.CarSystemUIFactory;
@@ -259,8 +261,8 @@ public class CarStatusBar extends StatusBar implements




    @Override
    @Override
    protected void makeStatusBarView() {
    protected void makeStatusBarView(@Nullable RegisterStatusBarResult result) {
        super.makeStatusBarView();
        super.makeStatusBarView(result);
        mHvacController = new HvacController(mContext);
        mHvacController = new HvacController(mContext);


        CarSystemUIFactory factory = SystemUIFactory.getInstance();
        CarSystemUIFactory factory = SystemUIFactory.getInstance();
@@ -432,7 +434,7 @@ public class CarStatusBar extends StatusBar implements
    }
    }


    @Override
    @Override
    protected void createNavigationBar() {
    protected void createNavigationBar(@Nullable RegisterStatusBarResult result) {
        mShowBottom = mContext.getResources().getBoolean(R.bool.config_enableBottomNavigationBar);
        mShowBottom = mContext.getResources().getBoolean(R.bool.config_enableBottomNavigationBar);
        mShowLeft = mContext.getResources().getBoolean(R.bool.config_enableLeftNavigationBar);
        mShowLeft = mContext.getResources().getBoolean(R.bool.config_enableLeftNavigationBar);
        mShowRight = mContext.getResources().getBoolean(R.bool.config_enableRightNavigationBar);
        mShowRight = mContext.getResources().getBoolean(R.bool.config_enableRightNavigationBar);
@@ -443,7 +445,7 @@ public class CarStatusBar extends StatusBar implements


        // There has been a car customized nav bar on the default display, so just create nav bars
        // There has been a car customized nav bar on the default display, so just create nav bars
        // on external displays.
        // on external displays.
        mNavigationBarController.createNavigationBars(false /* includeDefaultDisplay */);
        mNavigationBarController.createNavigationBars(false /* includeDefaultDisplay */, result);
    }
    }


    private void buildNavBarContent() {
    private void buildNavBarContent() {
+12 −4
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ import android.view.View;
import android.view.WindowManagerGlobal;
import android.view.WindowManagerGlobal;


import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.statusbar.RegisterStatusBarResult;
import com.android.systemui.Dependency;
import com.android.systemui.Dependency;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.CommandQueue.Callbacks;
@@ -81,7 +82,7 @@ public class NavigationBarController implements Callbacks {
    @Override
    @Override
    public void onDisplayReady(int displayId) {
    public void onDisplayReady(int displayId) {
        Display display = mDisplayManager.getDisplay(displayId);
        Display display = mDisplayManager.getDisplay(displayId);
        createNavigationBar(display);
        createNavigationBar(display, null);
    }
    }


    // TODO(b/117478341): I use {@code includeDefaultDisplay} to make this method compatible to
    // TODO(b/117478341): I use {@code includeDefaultDisplay} to make this method compatible to
@@ -91,11 +92,12 @@ public class NavigationBarController implements Callbacks {
     *
     *
     * @param includeDefaultDisplay {@code true} to create navigation bar on default display.
     * @param includeDefaultDisplay {@code true} to create navigation bar on default display.
     */
     */
    public void createNavigationBars(final boolean includeDefaultDisplay) {
    public void createNavigationBars(final boolean includeDefaultDisplay,
            RegisterStatusBarResult result) {
        Display[] displays = mDisplayManager.getDisplays();
        Display[] displays = mDisplayManager.getDisplays();
        for (Display display : displays) {
        for (Display display : displays) {
            if (includeDefaultDisplay || display.getDisplayId() != DEFAULT_DISPLAY) {
            if (includeDefaultDisplay || display.getDisplayId() != DEFAULT_DISPLAY) {
                createNavigationBar(display);
                createNavigationBar(display, result);
            }
            }
        }
        }
    }
    }
@@ -107,7 +109,7 @@ public class NavigationBarController implements Callbacks {
     * @param display the display to add navigation bar on.
     * @param display the display to add navigation bar on.
     */
     */
    @VisibleForTesting
    @VisibleForTesting
    void createNavigationBar(Display display) {
    void createNavigationBar(Display display, RegisterStatusBarResult result) {
        if (display == null) {
        if (display == null) {
            return;
            return;
        }
        }
@@ -151,6 +153,12 @@ public class NavigationBarController implements Callbacks {
            navBar.setAutoHideController(autoHideController);
            navBar.setAutoHideController(autoHideController);
            navBar.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
            navBar.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
            mNavigationBars.append(displayId, navBar);
            mNavigationBars.append(displayId, navBar);

            if (result != null) {
                navBar.setImeWindowStatus(display.getDisplayId(), result.mImeToken,
                        result.mImeWindowVis, result.mImeBackDisposition,
                        result.mShowImeSwitcher);
            }
        });
        });
    }
    }


+1 −0
Original line number Original line Diff line number Diff line
@@ -316,6 +316,7 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
        if (savedInstanceState != null) {
        if (savedInstanceState != null) {
            mNavigationBarView.getLightTransitionsController().restoreState(savedInstanceState);
            mNavigationBarView.getLightTransitionsController().restoreState(savedInstanceState);
        }
        }
        mNavigationBarView.setNavigationIconHints(mNavigationIconHints);


        prepareNavigationBarView();
        prepareNavigationBarView();
        checkNavBarModes();
        checkNavBarModes();
+7 −12
Original line number Original line Diff line number Diff line
@@ -660,7 +660,6 @@ public class StatusBar extends SystemUI implements DemoMode,
        mDisplayId = mDisplay.getDisplayId();
        mDisplayId = mDisplay.getDisplayId();
        updateDisplaySize();
        updateDisplaySize();


        Resources res = mContext.getResources();
        mVibrateOnOpening = mContext.getResources().getBoolean(
        mVibrateOnOpening = mContext.getResources().getBoolean(
                R.bool.config_vibrateOnIconAnimation);
                R.bool.config_vibrateOnIconAnimation);
        mVibratorHelper = Dependency.get(VibratorHelper.class);
        mVibratorHelper = Dependency.get(VibratorHelper.class);
@@ -696,7 +695,7 @@ public class StatusBar extends SystemUI implements DemoMode,
            ex.rethrowFromSystemServer();
            ex.rethrowFromSystemServer();
        }
        }


        createAndAddWindows();
        createAndAddWindows(result);


        // Make sure we always have the most current wallpaper info.
        // Make sure we always have the most current wallpaper info.
        IntentFilter wallpaperChangedFilter = new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED);
        IntentFilter wallpaperChangedFilter = new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED);
@@ -778,7 +777,7 @@ public class StatusBar extends SystemUI implements DemoMode,
    // ================================================================================
    // ================================================================================
    // Constructing the view
    // Constructing the view
    // ================================================================================
    // ================================================================================
    protected void makeStatusBarView() {
    protected void makeStatusBarView(@Nullable RegisterStatusBarResult result) {
        final Context context = mContext;
        final Context context = mContext;
        updateDisplaySize(); // populates mDisplayMetrics
        updateDisplaySize(); // populates mDisplayMetrics
        updateResources();
        updateResources();
@@ -871,7 +870,7 @@ public class StatusBar extends SystemUI implements DemoMode,
        mNotificationLogger.setHeadsUpManager(mHeadsUpManager);
        mNotificationLogger.setHeadsUpManager(mHeadsUpManager);
        putComponent(HeadsUpManager.class, mHeadsUpManager);
        putComponent(HeadsUpManager.class, mHeadsUpManager);


        createNavigationBar();
        createNavigationBar(result);


        if (ENABLE_LOCKSCREEN_WALLPAPER) {
        if (ENABLE_LOCKSCREEN_WALLPAPER) {
            mLockscreenWallpaper = new LockscreenWallpaper(mContext, this, mHandler);
            mLockscreenWallpaper = new LockscreenWallpaper(mContext, this, mHandler);
@@ -1118,8 +1117,8 @@ public class StatusBar extends SystemUI implements DemoMode,


    // TODO(b/117478341): This was left such that CarStatusBar can override this method.
    // TODO(b/117478341): This was left such that CarStatusBar can override this method.
    // Try to remove this.
    // Try to remove this.
    protected void createNavigationBar() {
    protected void createNavigationBar(@Nullable RegisterStatusBarResult result) {
        mNavigationBarController.createNavigationBars(true /* includeDefaultDisplay */);
        mNavigationBarController.createNavigationBars(true /* includeDefaultDisplay */, result);
    }
    }


    /**
    /**
@@ -2401,12 +2400,8 @@ public class StatusBar extends SystemUI implements DemoMode,
        pw.println(BarTransitions.modeToString(transitions.getMode()));
        pw.println(BarTransitions.modeToString(transitions.getMode()));
    }
    }


    public void createAndAddWindows() {
    public void createAndAddWindows(@Nullable RegisterStatusBarResult result) {
        addStatusBarWindow();
        makeStatusBarView(result);
    }

    private void addStatusBarWindow() {
        makeStatusBarView();
        mStatusBarWindowController = Dependency.get(StatusBarWindowController.class);
        mStatusBarWindowController = Dependency.get(StatusBarWindowController.class);
        mStatusBarWindowController.add(mStatusBarWindow, getStatusBarHeight());
        mStatusBarWindowController.add(mStatusBarWindow, getStatusBarHeight());
    }
    }
+6 −6
Original line number Original line Diff line number Diff line
@@ -96,21 +96,21 @@ public class NavigationBarControllerTest extends SysuiTestCase {
    @Test
    @Test
    public void testCreateNavigationBarsIncludeDefaultTrue() {
    public void testCreateNavigationBarsIncludeDefaultTrue() {
        initializeDisplayManager();
        initializeDisplayManager();
        doNothing().when(mNavigationBarController).createNavigationBar(any());
        doNothing().when(mNavigationBarController).createNavigationBar(any(), any());


        mNavigationBarController.createNavigationBars(true);
        mNavigationBarController.createNavigationBars(true, null);


        verify(mNavigationBarController).createNavigationBar(any(Display.class));
        verify(mNavigationBarController).createNavigationBar(any(Display.class), any());
    }
    }


    @Test
    @Test
    public void testCreateNavigationBarsIncludeDefaultFalse() {
    public void testCreateNavigationBarsIncludeDefaultFalse() {
        initializeDisplayManager();
        initializeDisplayManager();
        doNothing().when(mNavigationBarController).createNavigationBar(any());
        doNothing().when(mNavigationBarController).createNavigationBar(any(), any());


        mNavigationBarController.createNavigationBars(false);
        mNavigationBarController.createNavigationBars(false, null);


        verify(mNavigationBarController, never()).createNavigationBar(any());
        verify(mNavigationBarController, never()).createNavigationBar(any(), any());
    }
    }


    private void initializeDisplayManager() {
    private void initializeDisplayManager() {