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

Commit 0b418ab3 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Remove OverviewProxyService from NavBarView.

Remove the call to Dependency.get(OverviewProxyService) from
NavigationBarView. Listeners on NavigationBar update the view
as needed.

Bug: 218354102
Test: manual
Change-Id: I991edf533f53557c331d03c679319325fad31343
Merged-In: I991edf533f53557c331d03c679319325fad31343
parent e0793c9f
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -327,7 +327,8 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
    private final OverviewProxyListener mOverviewProxyListener = new OverviewProxyListener() {
        @Override
        public void onConnectionChanged(boolean isConnected) {
            mView.updateStates();
            mView.onOverviewProxyConnectionChange(
                    mOverviewProxyService.isEnabled(), mOverviewProxyService.shouldShowSwipeUpUI());
            updateScreenPinningGestures();
        }

@@ -557,11 +558,10 @@ public class NavigationBar extends ViewController<NavigationBarView> implements

    @Override
    public void onInit() {
        // TODO: A great deal of this code should probalby live in onViewAttached.
        // TODO: A great deal of this code should probably live in onViewAttached.
        // It should also has corresponding cleanup in onViewDetached.
        mView.setTouchHandler(mTouchHandler);
        mView.setNavBarMode(mNavBarMode);

        mView.updateRotationButton();

        mView.setVisibility(
@@ -637,6 +637,12 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
        mView.setWindowVisible(isNavBarWindowVisible());
        mView.setBehavior(mBehavior);
        mView.setNavBarMode(mNavBarMode);
        mView.setUpdateActiveTouchRegionsCallback(
                () -> mOverviewProxyService.onActiveNavBarRegionChanges(
                        mView.getButtonLocations(
                                true /* includeFloatingButtons */,
                                true /* inScreen */,
                                true /* useNearestRegion */)));

        mNavBarHelper.registerNavTaskStateUpdater(mNavbarTaskbarStateUpdater);

@@ -697,6 +703,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
        final RotationButtonController rotationButtonController =
                mView.getRotationButtonController();
        rotationButtonController.setRotationCallback(null);
        mView.setUpdateActiveTouchRegionsCallback(null);
        mView.getBarTransitions().destroy();
        mView.getLightTransitionsController().destroy(mContext);
        mOverviewProxyService.removeCallback(mOverviewProxyListener);
+34 −19
Original line number Diff line number Diff line
@@ -77,7 +77,6 @@ import com.android.systemui.navigationbar.buttons.KeyButtonDrawable;
import com.android.systemui.navigationbar.buttons.NearestTouchFrame;
import com.android.systemui.navigationbar.buttons.RotationContextButton;
import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.recents.Recents;
import com.android.systemui.shared.navigationbar.RegionSamplingHelper;
import com.android.systemui.shared.rotation.FloatingRotationButton;
@@ -142,7 +141,7 @@ public class NavigationBarView extends FrameLayout {
    private final DeadZone mDeadZone;
    private boolean mDeadZoneConsuming = false;
    private final NavigationBarTransitions mBarTransitions;
    private final OverviewProxyService mOverviewProxyService;
    @Nullable
    private AutoHideController mAutoHideController;

    // performs manual animation in sync with layout transitions
@@ -197,6 +196,9 @@ public class NavigationBarView extends FrameLayout {
     */
    private final boolean mImeCanRenderGesturalNavButtons = canImeRenderGesturalNavButtons();
    private Gefingerpoken mTouchHandler;
    private boolean mOverviewProxyEnabled;
    private boolean mShowSwipeUpUi;
    private UpdateActiveTouchRegionsCallback mUpdateActiveTouchRegionsCallback;

    private class NavTransitionListener implements TransitionListener {
        private boolean mBackTransitioning;
@@ -363,8 +365,6 @@ public class NavigationBarView extends FrameLayout {
                R.drawable.ic_sysbar_rotate_button_cw_start_90,
                () -> getDisplay().getRotation());

        mOverviewProxyService = Dependency.get(OverviewProxyService.class);

        mConfiguration = new Configuration();
        mTmpLastConfiguration = new Configuration();
        mConfiguration.updateFrom(context.getResources().getConfiguration());
@@ -561,7 +561,7 @@ public class NavigationBarView extends FrameLayout {
    }

    private boolean isQuickStepSwipeUpEnabled() {
        return mOverviewProxyService.shouldShowSwipeUpUI() && isOverviewEnabled();
        return mShowSwipeUpUi && isOverviewEnabled();
    }

    private void reloadNavIcons() {
@@ -615,8 +615,7 @@ public class NavigationBarView extends FrameLayout {
    }

    public KeyButtonDrawable getHomeDrawable() {
        final boolean quickStepEnabled = mOverviewProxyService.shouldShowSwipeUpUI();
        KeyButtonDrawable drawable = quickStepEnabled
        KeyButtonDrawable drawable = mShowSwipeUpUi
                ? getDrawable(R.drawable.ic_sysbar_home_quick_step)
                : getDrawable(R.drawable.ic_sysbar_home);
        orientHomeButton(drawable);
@@ -639,7 +638,7 @@ public class NavigationBarView extends FrameLayout {

        // Animate the back button's rotation to the new degrees and only in portrait move up the
        // back button to line up with the other buttons
        float targetY = !mOverviewProxyService.shouldShowSwipeUpUI() && !mIsVertical && useAltBack
        float targetY = !mShowSwipeUpUi && !mIsVertical && useAltBack
                ? - getResources().getDimension(R.dimen.navbar_back_button_ime_offset)
                : 0;
        ObjectAnimator navBarAnimator = ObjectAnimator.ofPropertyValuesHolder(drawable,
@@ -656,8 +655,7 @@ public class NavigationBarView extends FrameLayout {

    private @DrawableRes int chooseNavigationIconDrawableRes(@DrawableRes int icon,
            @DrawableRes int quickStepIcon) {
        final boolean quickStepEnabled = mOverviewProxyService.shouldShowSwipeUpUI();
        return quickStepEnabled ? quickStepIcon : icon;
        return mShowSwipeUpUi ? quickStepIcon : icon;
    }

    private KeyButtonDrawable getDrawable(@DrawableRes int icon) {
@@ -769,7 +767,7 @@ public class NavigationBarView extends FrameLayout {
        // recents buttons when disconnected from launcher service in screen pinning mode,
        // as they are used for exiting.
        final boolean pinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive();
        if (mOverviewProxyService.isEnabled()) {
        if (mOverviewProxyEnabled) {
            // Force disable recents when not in legacy mode
            disableRecent |= !QuickStepContract.isLegacyMode(mNavBarMode);
            if (pinningActive && !QuickStepContract.isGesturalMode(mNavBarMode)) {
@@ -890,9 +888,14 @@ public class NavigationBarView extends FrameLayout {
        }
    }

    public void updateStates() {
        final boolean showSwipeUpUI = mOverviewProxyService.shouldShowSwipeUpUI();
    void onOverviewProxyConnectionChange(boolean enabled, boolean showSwipeUpUi) {
        mOverviewProxyEnabled = enabled;
        mShowSwipeUpUi = showSwipeUpUi;
        updateStates();
    }

    /** */
    public void updateStates() {
        if (mNavigationInflaterView != null) {
            // Reinflate the navbar if needed, no-op unless the swipe up state changes
            mNavigationInflaterView.onLikelyDefaultLayoutChange();
@@ -901,9 +904,10 @@ public class NavigationBarView extends FrameLayout {
        updateSlippery();
        reloadNavIcons();
        updateNavButtonIcons();
        WindowManagerWrapper.getInstance().setNavBarVirtualKeyHapticFeedbackEnabled(!showSwipeUpUI);
        WindowManagerWrapper.getInstance().setNavBarVirtualKeyHapticFeedbackEnabled(
                !mShowSwipeUpUi);
        getHomeButton().setAccessibilityDelegate(
                showSwipeUpUI ? mQuickStepAccessibilityDelegate : null);
                mShowSwipeUpUi ? mQuickStepAccessibilityDelegate : null);
    }

    /**
@@ -1009,9 +1013,14 @@ public class NavigationBarView extends FrameLayout {
     * Notifies the overview service of the active touch regions.
     */
    public void notifyActiveTouchRegions() {
        mOverviewProxyService.onActiveNavBarRegionChanges(
                getButtonLocations(true /* includeFloatingButtons */, true /* inScreen */,
                        true /* useNearestRegion */));
        if (mUpdateActiveTouchRegionsCallback != null) {
            mUpdateActiveTouchRegionsCallback.update();
        }
    }

    void setUpdateActiveTouchRegionsCallback(UpdateActiveTouchRegionsCallback callback) {
        mUpdateActiveTouchRegionsCallback = callback;
        notifyActiveTouchRegions();
    }

    private void updateButtonTouchRegionCache() {
@@ -1029,8 +1038,10 @@ public class NavigationBarView extends FrameLayout {
     * @param useNearestRegion Whether to use the nearest region instead of the actual button bounds
     * @return
     */
    private Region getButtonLocations(boolean includeFloatingButtons, boolean inScreenSpace,
    Region getButtonLocations(boolean includeFloatingButtons, boolean inScreenSpace,
            boolean useNearestRegion) {
        // TODO: move this method to NavigationBar.
        // TODO: don't use member variables for temp storage like mTmpRegion.
        if (useNearestRegion && !inScreenSpace) {
            // We currently don't support getting the nearest region in anything but screen space
            useNearestRegion = false;
@@ -1425,4 +1436,8 @@ public class NavigationBarView extends FrameLayout {
            mRegionSamplingHelper.stop();
        }
    }

    interface UpdateActiveTouchRegionsCallback {
        void update();
    }
}