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

Commit 6575c252 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "[Status Bar Refactor] Move PanelBar#updateScrimFraction into...

Merge "[Status Bar Refactor] Move PanelBar#updateScrimFraction into ScrimController." into sc-v2-dev am: a06b1666

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15993903

Change-Id: I15b94f0f0642c7b4e078f93fbca7aa452fa46105
parents 8cb32bb3 a06b1666
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3332,9 +3332,9 @@ public class NotificationPanelViewController extends PanelViewController {
     * cases, such as if there's a heads-up notification.
     */
    public void setPanelScrimMinFraction(float minFraction) {
        mBar.onPanelMinFractionChanged(minFraction);
        mMinFraction = minFraction;
        mDepthController.setPanelPullDownMinFraction(mMinFraction);
        mScrimController.setPanelScrimMinFraction(mMinFraction);
    }

    public void clearNotificationEffects() {
+0 −5
Original line number Diff line number Diff line
@@ -145,11 +145,6 @@ public abstract class PanelBar extends FrameLayout {
        return mPanel == null || mPanel.getView().dispatchTouchEvent(event);
    }

    /**
     * Percentage of panel expansion offset, caused by pulling down on a heads-up.
     */
    abstract void onPanelMinFractionChanged(float minFraction);

    /**
     * @param frac the fraction from the expansion in [0, 1]
     * @param expanded whether the panel is currently expanded; this is independent from the
+0 −24
Original line number Diff line number Diff line
@@ -18,8 +18,6 @@ package com.android.systemui.statusbar.phone;

import static com.android.systemui.ScreenDecorations.DisplayCutoutView.boundsFromDirection;

import static java.lang.Float.isNaN;

import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Configuration;
@@ -57,7 +55,6 @@ public class PhoneStatusBarView extends PanelBar {
    StatusBar mBar;

    private ScrimController mScrimController;
    private float mMinFraction;
    private Runnable mHideExpandedRunnable = new Runnable() {
        @Override
        public void run() {
@@ -267,21 +264,9 @@ public class PhoneStatusBarView extends PanelBar {
        return mBar.interceptTouchEvent(event) || super.onInterceptTouchEvent(event);
    }

    @Override
    public void onPanelMinFractionChanged(float minFraction) {
        if (isNaN(minFraction)) {
            throw new IllegalArgumentException("minFraction cannot be NaN");
        }
        if (mMinFraction != minFraction) {
            mMinFraction = minFraction;
            updateScrimFraction();
        }
    }

    @Override
    public void panelExpansionChanged(float frac, boolean expanded) {
        super.panelExpansionChanged(frac, expanded);
        updateScrimFraction();
        if ((frac == 0 || frac == 1)) {
            if (mPanelExpansionStateChangedListener != null) {
                mPanelExpansionStateChangedListener.onPanelExpansionStateChanged();
@@ -302,15 +287,6 @@ public class PhoneStatusBarView extends PanelBar {
        mPanelEnabledProvider = panelEnabledProvider;
    }

    private void updateScrimFraction() {
        float scrimFraction = mPanelFraction;
        if (mMinFraction < 1.0f) {
            scrimFraction = Math.max((mPanelFraction - mMinFraction) / (1.0f - mMinFraction),
                    0);
        }
        mScrimController.setPanelExpansion(scrimFraction);
    }

    public void updateResources() {
        mCutoutSideNudge = getResources().getDimensionPixelSize(
                R.dimen.display_cutout_margin_consumption);
+40 −11
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.view.ViewTreeObserver;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;

import androidx.annotation.FloatRange;
import androidx.annotation.Nullable;

import com.android.internal.annotations.VisibleForTesting;
@@ -183,8 +184,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
    private float mScrimBehindAlphaKeyguard = KEYGUARD_SCRIM_ALPHA;
    private final float mDefaultScrimAlpha;

    // Assuming the shade is expanded during initialization
    private float mPanelExpansion = 1f;
    private float mRawPanelExpansionFraction;
    private float mPanelScrimMinFraction;
    // Calculated based on mRawPanelExpansionFraction and mPanelScrimMinFraction
    private float mPanelExpansionFraction = 1f; // Assume shade is expanded during initialization
    private float mQsExpansion;
    private boolean mQsBottomVisible;

@@ -483,14 +486,39 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
     *
     * The expansion fraction is tied to the scrim opacity.
     *
     * @param fraction From 0 to 1 where 0 means collapsed and 1 expanded.
     * See {@link PanelBar#panelExpansionChanged}.
     *
     * @param rawPanelExpansionFraction From 0 to 1 where 0 means collapsed and 1 expanded.
     */
    public void setPanelExpansion(float fraction) {
        if (isNaN(fraction)) {
            throw new IllegalArgumentException("Fraction should not be NaN");
    public void setRawPanelExpansionFraction(
            @FloatRange(from = 0.0, to = 1.0) float rawPanelExpansionFraction) {
        if (isNaN(rawPanelExpansionFraction)) {
            throw new IllegalArgumentException("rawPanelExpansionFraction should not be NaN");
        }
        mRawPanelExpansionFraction = rawPanelExpansionFraction;
        calculateAndUpdatePanelExpansion();
    }

    /** See {@link NotificationPanelViewController#setPanelScrimMinFraction(float)}. */
    public void setPanelScrimMinFraction(float minFraction) {
        if (isNaN(minFraction)) {
            throw new IllegalArgumentException("minFraction should not be NaN");
        }
        if (mPanelExpansion != fraction) {
            mPanelExpansion = fraction;
        mPanelScrimMinFraction = minFraction;
        calculateAndUpdatePanelExpansion();
    }

    private void calculateAndUpdatePanelExpansion() {
        float panelExpansionFraction = mRawPanelExpansionFraction;
        if (mPanelScrimMinFraction < 1.0f) {
            panelExpansionFraction = Math.max(
                    (mRawPanelExpansionFraction - mPanelScrimMinFraction)
                            / (1.0f - mPanelScrimMinFraction),
                    0);
        }

        if (mPanelExpansionFraction != panelExpansionFraction) {
            mPanelExpansionFraction = panelExpansionFraction;

            boolean relevantState = (mState == ScrimState.UNLOCKED
                    || mState == ScrimState.KEYGUARD
@@ -892,7 +920,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
    }

    private float getInterpolatedFraction() {
        return Interpolators.getNotificationScrimAlpha(mPanelExpansion, false /* notification */);
        return Interpolators.getNotificationScrimAlpha(
                mPanelExpansionFraction, false /* notification */);
    }

    private void setScrimAlpha(ScrimView scrim, float alpha) {
@@ -1228,8 +1257,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
        pw.println(mTracking);
        pw.print("  mDefaultScrimAlpha=");
        pw.println(mDefaultScrimAlpha);
        pw.print("  mExpansionFraction=");
        pw.println(mPanelExpansion);
        pw.print("  mPanelExpansionFraction=");
        pw.println(mPanelExpansionFraction);
        pw.print("  mExpansionAffectsAlpha=");
        pw.println(mExpansionAffectsAlpha);

+13 −3
Original line number Diff line number Diff line
@@ -900,6 +900,8 @@ public class StatusBar extends SystemUI implements
        lockscreenShadeTransitionController.setStatusbar(this);

        mExpansionChangedListeners = new ArrayList<>();
        addExpansionChangedListener(
                (expansion, expanded) -> mScrimController.setRawPanelExpansionFraction(expansion));

        mBubbleExpandListener =
                (isExpanding, key) -> mContext.getMainExecutor().execute(() -> {
@@ -1406,6 +1408,12 @@ public class StatusBar extends SystemUI implements
        mDeviceProvisionedController.addCallback(mUserSetupObserver);
        mUserSetupObserver.onUserSetupChanged();

        for (ExpansionChangedListener listener : mExpansionChangedListeners) {
            // The initial expansion amount comes from mNotificationPanelViewController, so we
            // should send the amount once we've fully set up that controller.
            sendInitialExpansionAmount(listener);
        }

        // disable profiling bars, since they overlap and clutter the output on app windows
        ThreadedRenderer.overrideProperty("disableProfileBars", "true");

@@ -4247,10 +4255,12 @@ public class StatusBar extends SystemUI implements
    }

    private void sendInitialExpansionAmount(ExpansionChangedListener expansionChangedListener) {
        if (mNotificationPanelViewController != null) {
            expansionChangedListener.onExpansionChanged(
                    mNotificationPanelViewController.getExpandedFraction(),
                    mNotificationPanelViewController.isExpanded());
        }
    }

    public void removeExpansionChangedListener(@NonNull ExpansionChangedListener listener) {
        mExpansionChangedListeners.remove(listener);
Loading