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

Commit a20b9203 authored by Tony Wickham's avatar Tony Wickham
Browse files

Pipe dark intensity through OverviewProxy

Test: in 3 button mode, nav buttons in taskbar are dark on light wallpaper; in both 3 button and fully gestural, IME dismiss button is dark on light IME
Bug: 204256643
Change-Id: Ib6488a393e9cf021c806a5caf5b81654cf5164eb
parent dd9f25b1
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -95,4 +95,9 @@ oneway interface IOverviewProxy {
     * Sent when screen turned on and ready to use (blocker scrim is hidden)
     * Sent when screen turned on and ready to use (blocker scrim is hidden)
     */
     */
    void onScreenTurnedOn() = 21;
    void onScreenTurnedOn() = 21;

    /**
     * Sent when the desired dark intensity of the nav buttons has changed
     */
    void onNavButtonsDarkIntensityChanged(float darkIntensity) = 22;
}
}
+4 −2
Original line number Original line Diff line number Diff line
@@ -57,6 +57,7 @@ import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode;
import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode;
import com.android.systemui.statusbar.phone.LightBarController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
@@ -104,7 +105,8 @@ public class NavigationBarController implements
            TaskbarDelegate taskbarDelegate,
            TaskbarDelegate taskbarDelegate,
            NavigationBar.Factory navigationBarFactory,
            NavigationBar.Factory navigationBarFactory,
            DumpManager dumpManager,
            DumpManager dumpManager,
            AutoHideController autoHideController) {
            AutoHideController autoHideController,
            LightBarController lightBarController) {
        mContext = context;
        mContext = context;
        mHandler = mainHandler;
        mHandler = mainHandler;
        mNavigationBarFactory = navigationBarFactory;
        mNavigationBarFactory = navigationBarFactory;
@@ -116,7 +118,7 @@ public class NavigationBarController implements
        mTaskbarDelegate = taskbarDelegate;
        mTaskbarDelegate = taskbarDelegate;
        mTaskbarDelegate.setDependencies(commandQueue, overviewProxyService,
        mTaskbarDelegate.setDependencies(commandQueue, overviewProxyService,
                navBarHelper, navigationModeController, sysUiFlagsContainer,
                navBarHelper, navigationModeController, sysUiFlagsContainer,
                dumpManager, autoHideController);
                dumpManager, autoHideController, lightBarController);
        mIsTablet = isTablet(mContext);
        mIsTablet = isTablet(mContext);
        dumpManager.registerDumpable(this);
        dumpManager.registerDumpable(this);
    }
    }
+38 −1
Original line number Original line Diff line number Diff line
@@ -64,6 +64,9 @@ import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.statusbar.AutoHideUiElement;
import com.android.systemui.statusbar.AutoHideUiElement;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.BarTransitions;
import com.android.systemui.statusbar.phone.LightBarController;
import com.android.systemui.statusbar.phone.LightBarTransitionsController;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.PrintWriter;
@@ -85,6 +88,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
    private NavigationModeController mNavigationModeController;
    private NavigationModeController mNavigationModeController;
    private SysUiState mSysUiState;
    private SysUiState mSysUiState;
    private AutoHideController mAutoHideController;
    private AutoHideController mAutoHideController;
    private LightBarController mLightBarController;
    private LightBarTransitionsController mLightBarTransitionsController;
    private int mDisplayId;
    private int mDisplayId;
    private int mNavigationIconHints;
    private int mNavigationIconHints;
    private final NavBarHelper.NavbarTaskbarStateUpdater mNavbarTaskbarStateUpdater =
    private final NavBarHelper.NavbarTaskbarStateUpdater mNavbarTaskbarStateUpdater =
@@ -141,7 +146,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
            NavBarHelper navBarHelper,
            NavBarHelper navBarHelper,
            NavigationModeController navigationModeController,
            NavigationModeController navigationModeController,
            SysUiState sysUiState, DumpManager dumpManager,
            SysUiState sysUiState, DumpManager dumpManager,
            AutoHideController autoHideController) {
            AutoHideController autoHideController,
            LightBarController lightBarController) {
        // TODO: adding this in the ctor results in a dagger dependency cycle :(
        // TODO: adding this in the ctor results in a dagger dependency cycle :(
        mCommandQueue = commandQueue;
        mCommandQueue = commandQueue;
        mOverviewProxyService = overviewProxyService;
        mOverviewProxyService = overviewProxyService;
@@ -150,6 +156,30 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
        mSysUiState = sysUiState;
        mSysUiState = sysUiState;
        dumpManager.registerDumpable(this);
        dumpManager.registerDumpable(this);
        mAutoHideController = autoHideController;
        mAutoHideController = autoHideController;
        mLightBarController = lightBarController;
        mLightBarTransitionsController = createLightBarTransitionsController();
    }

    // Separated into a method to keep setDependencies() clean/readable.
    private LightBarTransitionsController createLightBarTransitionsController() {
        return new LightBarTransitionsController(mContext,
                new LightBarTransitionsController.DarkIntensityApplier() {
                    @Override
                    public void applyDarkIntensity(float darkIntensity) {
                        mOverviewProxyService.onNavButtonsDarkIntensityChanged(darkIntensity);
                    }

                    @Override
                    public int getTintAnimationDuration() {
                        return LightBarTransitionsController.DEFAULT_TINT_ANIMATION_DURATION;
                    }
                }, mCommandQueue) {
            @Override
            public boolean supportsIconTintForNavMode(int navigationMode) {
                // Always tint taskbar nav buttons (region sampling handles gesture bar separately).
                return true;
            }
        };
    }
    }


    public void init(int displayId) {
    public void init(int displayId) {
@@ -171,6 +201,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
        // Set initial state for any listeners
        // Set initial state for any listeners
        updateSysuiFlags();
        updateSysuiFlags();
        mAutoHideController.setNavigationBar(mAutoHideUiElement);
        mAutoHideController.setNavigationBar(mAutoHideUiElement);
        mLightBarController.setNavigationBar(mLightBarTransitionsController);
        mInitialized = true;
        mInitialized = true;
    }
    }


@@ -189,6 +220,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
            mWindowContext = null;
            mWindowContext = null;
        }
        }
        mAutoHideController.setNavigationBar(null);
        mAutoHideController.setNavigationBar(null);
        mLightBarTransitionsController.destroy(mContext);
        mLightBarController.setNavigationBar(null);
        mInitialized = false;
        mInitialized = false;
    }
    }


@@ -268,6 +301,10 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
            AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme, int behavior,
            AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme, int behavior,
            InsetsVisibilities requestedVisibilities, String packageName) {
            InsetsVisibilities requestedVisibilities, String packageName) {
        mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior);
        mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior);
        if (mLightBarController != null && displayId == mDisplayId) {
            mLightBarController.onNavigationBarAppearanceChanged(appearance, false/*nbModeChanged*/,
                    BarTransitions.MODE_TRANSPARENT /*navigationBarMode*/, navbarColorManagedByIme);
        }
        if (mBehavior != behavior) {
        if (mBehavior != behavior) {
            mBehavior = behavior;
            mBehavior = behavior;
            updateSysuiFlags();
            updateSysuiFlags();
+12 −0
Original line number Original line Diff line number Diff line
@@ -986,6 +986,18 @@ public class OverviewProxyService extends CurrentUserTracker implements
        }
        }
    }
    }


    public void onNavButtonsDarkIntensityChanged(float darkIntensity) {
        try {
            if (mOverviewProxy != null) {
                mOverviewProxy.onNavButtonsDarkIntensityChanged(darkIntensity);
            } else {
                Log.e(TAG_OPS, "Failed to get overview proxy to update nav buttons dark intensity");
            }
        } catch (RemoteException e) {
            Log.e(TAG_OPS, "Failed to call onNavButtonsDarkIntensityChanged()", e);
        }
    }

    private void updateEnabledState() {
    private void updateEnabledState() {
        final int currentUser = ActivityManagerWrapper.getInstance().getCurrentUserId();
        final int currentUser = ActivityManagerWrapper.getInstance().getCurrentUserId();
        mIsEnabled = mContext.getPackageManager().resolveServiceAsUser(mQuickStepIntent,
        mIsEnabled = mContext.getPackageManager().resolveServiceAsUser(mQuickStepIntent,
+1 −2
Original line number Original line Diff line number Diff line
@@ -37,7 +37,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BatteryController;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
@@ -251,7 +250,7 @@ public class LightBarController implements BatteryController.BatteryStateChangeC


    private void updateNavigation() {
    private void updateNavigation() {
        if (mNavigationBarController != null
        if (mNavigationBarController != null
                && !QuickStepContract.isGesturalMode(mNavigationMode)) {
                && mNavigationBarController.supportsIconTintForNavMode(mNavigationMode)) {
            mNavigationBarController.setIconsDark(mNavigationLight, animateChange());
            mNavigationBarController.setIconsDark(mNavigationLight, animateChange());
        }
        }
    }
    }
Loading