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

Commit f0a8c32e authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "Partial revert of "Prepare LightBarController for multi display""" into main

parents 31cc60aa 1a732291
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@ import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.data.repository.LightBarControllerStore;
import com.android.systemui.statusbar.phone.AutoHideControllerStore;
import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.phone.LightBarController;
@@ -213,7 +214,7 @@ public class NavigationBarTest extends SysuiTestCase {
    @Mock
    private LightBarController mLightBarController;
    @Mock
    private LightBarController.Factory mLightBarcontrollerFactory;
    private LightBarControllerStore mLightBarControllerStore;
    @Mock
    private WindowManager mWindowManager;
    @Mock
@@ -257,8 +258,7 @@ public class NavigationBarTest extends SysuiTestCase {
    @Before
    public void setup() throws Exception {
        MockitoAnnotations.initMocks(this);

        when(mLightBarcontrollerFactory.create(any(Context.class))).thenReturn(mLightBarController);
        when(mLightBarControllerStore.forDisplay(anyInt())).thenReturn(mLightBarController);
        when(mNavigationBarView.getHomeButton()).thenReturn(mHomeButton);
        when(mNavigationBarView.getRecentsButton()).thenReturn(mRecentsButton);
        when(mNavigationBarView.getAccessibilityButton()).thenReturn(mAccessibilityButton);
@@ -706,8 +706,7 @@ public class NavigationBarTest extends SysuiTestCase {
                mFakeExecutor,
                mUiEventLogger,
                mNavBarHelper,
                mLightBarController,
                mLightBarcontrollerFactory,
                mLightBarControllerStore,
                mAutoHideControllerStore,
                Optional.of(mTelecomManager),
                mInputMethodManager,
+5 −8
Original line number Diff line number Diff line
@@ -152,6 +152,7 @@ import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.data.repository.LightBarControllerStore;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.AutoHideControllerStore;
@@ -262,8 +263,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
    private boolean mTransientShownFromGestureOnSystemBar;
    private int mNavBarMode = NAV_BAR_MODE_3BUTTON;
    private LightBarController mLightBarController;
    private final LightBarController mMainLightBarController;
    private final LightBarController.Factory mLightBarControllerFactory;
    private final LightBarControllerStore mLightBarControllerStore;
    private AutoHideController mAutoHideController;
    private final AutoHideControllerStore mAutoHideControllerStore;
    private final Optional<TelecomManager> mTelecomManagerOptional;
@@ -578,8 +578,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
            @Background Executor bgExecutor,
            UiEventLogger uiEventLogger,
            NavBarHelper navBarHelper,
            LightBarController mainLightBarController,
            LightBarController.Factory lightBarControllerFactory,
            LightBarControllerStore lightBarControllerStore,
            AutoHideControllerStore autoHideControllerStore,
            Optional<TelecomManager> telecomManagerOptional,
            InputMethodManager inputMethodManager,
@@ -624,8 +623,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
        mUiEventLogger = uiEventLogger;
        mNavBarHelper = navBarHelper;
        mNotificationShadeDepthController = notificationShadeDepthController;
        mMainLightBarController = mainLightBarController;
        mLightBarControllerFactory = lightBarControllerFactory;
        mLightBarControllerStore = lightBarControllerStore;
        mAutoHideControllerStore = autoHideControllerStore;
        mTelecomManagerOptional = telecomManagerOptional;
        mInputMethodManager = inputMethodManager;
@@ -860,8 +858,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
        // Unfortunately, we still need it because status bar needs LightBarController
        // before notifications creation. We cannot directly use getLightBarController()
        // from NavigationBarFragment directly.
        LightBarController lightBarController = mIsOnDefaultDisplay
                ? mMainLightBarController : mLightBarControllerFactory.create(mContext);
        LightBarController lightBarController = mLightBarControllerStore.forDisplay(mDisplayId);
        setLightBarController(lightBarController);

        AutoHideController autoHideController = mAutoHideControllerStore.forDisplay(mDisplayId);
+0 −6
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import com.android.systemui.statusbar.layout.ui.viewmodel.StatusBarContentInsets
import com.android.systemui.statusbar.phone.AutoHideController
import com.android.systemui.statusbar.phone.AutoHideControllerImpl
import com.android.systemui.statusbar.phone.LightBarController
import com.android.systemui.statusbar.phone.LightBarControllerImpl
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallLog
@@ -91,11 +90,6 @@ interface StatusBarModule {

    @Binds @SysUISingleton fun autoHideController(impl: AutoHideControllerImpl): AutoHideController

    @Binds
    fun lightBarControllerFactory(
        legacyFactory: LightBarControllerImpl.LegacyFactory
    ): LightBarController.Factory

    companion object {
        @Provides
        @SysUISingleton
+0 −5
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.statusbar.phone

import android.content.Context
import android.view.WindowInsetsController
import com.android.internal.colorextraction.ColorExtractor
import com.android.internal.view.AppearanceRegion
@@ -65,8 +64,4 @@ interface LightBarController : CoreStartable {
        scrimBehindAlpha: Float,
        scrimInFrontColor: ColorExtractor.GradientColors,
    )

    fun interface Factory {
        fun create(context: Context): LightBarController
    }
}
+1 −50
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT;
import static com.android.systemui.shared.statusbar.phone.BarTransitions.MODE_TRANSPARENT;

import android.content.Context;
import android.graphics.Rect;
import android.util.Log;
import android.view.Display;
@@ -35,15 +34,12 @@ import androidx.annotation.Nullable;

import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.internal.view.AppearanceRegion;
import com.android.systemui.dagger.qualifiers.Application;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.statusbar.data.model.StatusBarAppearance;
import com.android.systemui.statusbar.data.repository.DarkIconDispatcherStore;
import com.android.systemui.statusbar.data.repository.StatusBarModePerDisplayRepository;
import com.android.systemui.statusbar.data.repository.StatusBarModeRepositoryStore;
import com.android.systemui.statusbar.layout.BoundsPair;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.util.Compile;
@@ -60,8 +56,6 @@ import kotlinx.coroutines.CoroutineScope;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.inject.Inject;

/**
 * Controls how light status bar flag applies to the icons.
 */
@@ -74,7 +68,6 @@ public class LightBarControllerImpl implements

    private static final float NAV_BAR_INVERSION_SCRIM_ALPHA_THRESHOLD = 0.1f;

    private final int mDisplayId;
    private final CoroutineScope mCoroutineScope;
    private final SysuiDarkIconDispatcher mStatusBarIconController;
    private final BatteryController mBatteryController;
@@ -148,7 +141,6 @@ public class LightBarControllerImpl implements
            DumpManager dumpManager,
            @Main CoroutineContext mainContext,
            BiometricUnlockController biometricUnlockController) {
        mDisplayId = displayId;
        mCoroutineScope = coroutineScope;
        mStatusBarIconController = (SysuiDarkIconDispatcher) darkIconDispatcher;
        mBatteryController = batteryController;
@@ -164,12 +156,7 @@ public class LightBarControllerImpl implements

    @Override
    public void start() {
        if (mDisplayId == Display.DEFAULT_DISPLAY) {
            // Can only register on default display, because NavigationBar creates its own instance
            // as well as PerDisplayStore.
            // TODO: b/380394368 - make sure there is only one instance per display.
        mDumpManager.registerCriticalDumpable(mDumpableName, this);
        }
        mBatteryController.addCallback(this);
        mNavigationMode = mNavModeController.addListener(mNavigationModeListener);
        JavaAdapterKt.collectFlow(
@@ -504,40 +491,4 @@ public class LightBarControllerImpl implements
                @NonNull DarkIconDispatcher darkIconDispatcher,
                @NonNull StatusBarModePerDisplayRepository statusBarModePerDisplayRepository);
    }

    public static class LegacyFactory implements LightBarController.Factory {

        private final Factory mFactory;
        private final CoroutineScope mApplicationScope;
        private final DarkIconDispatcherStore mDarkIconDispatcherStore;
        private final StatusBarModeRepositoryStore mStatusBarModeRepositoryStore;

        @Inject
        public LegacyFactory(
                LightBarControllerImpl.Factory factory,
                @Application CoroutineScope applicationScope,
                DarkIconDispatcherStore darkIconDispatcherStore,
                StatusBarModeRepositoryStore statusBarModeRepositoryStore) {
            mFactory = factory;
            mApplicationScope = applicationScope;
            mDarkIconDispatcherStore = darkIconDispatcherStore;
            mStatusBarModeRepositoryStore = statusBarModeRepositoryStore;
        }

        @NonNull
        @Override
        public LightBarController create(@NonNull Context context) {
            // TODO: b/380394368 - Make sure correct per display instances are used.
            LightBarControllerImpl lightBarController = mFactory.create(
                    context.getDisplayId(),
                    mApplicationScope,
                    mDarkIconDispatcherStore.getDefaultDisplay(),
                    mStatusBarModeRepositoryStore.getDefaultDisplay()
            );
            // Calling start() manually to keep the legacy behavior. Before, LightBarControllerImpl
            // was doing work in the constructor, which moved to start().
            lightBarController.start();
            return lightBarController;
        }
    }
}