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

Commit 8c2dbb00 authored by Shawn Lee's avatar Shawn Lee Committed by Automerger Merge Worker
Browse files

Merge "Added logging for shade top padding and clipping" into tm-qpr-dev am:...

Merge "Added logging for shade top padding and clipping" into tm-qpr-dev am: 5f02519f am: 81fcd88b

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



Change-Id: I6062b2380fa48f56fe0805d2853099f3ad42738e
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 9887bdc7 81fcd88b
Loading
Loading
Loading
Loading
+61 −5
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import static com.android.systemui.shade.NotificationPanelViewController.FLING_E
import static com.android.systemui.shade.NotificationPanelViewController.FLING_HIDE;
import static com.android.systemui.shade.NotificationPanelViewController.QS_PARALLAX_AMOUNT;
import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
import static com.android.systemui.statusbar.StatusBarState.SHADE;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -258,6 +259,12 @@ public class QuickSettingsController {
    /** The duration of the notification bounds animation. */
    private long mNotificationBoundsAnimationDuration;

    /** TODO(b/273591201): remove after bug resolved */
    private int mLastClippingTopBound;
    private int mLastNotificationsTopPadding;
    private int mLastNotificationsClippingTopBound;
    private int mLastNotificationsClippingTopBoundNssl;

    private final Region mInterceptRegion = new Region();
    /** The end bounds of a clipping animation. */
    private final Rect mClippingAnimationEndBounds = new Rect();
@@ -643,7 +650,7 @@ public class QuickSettingsController {
        float appearAmount = mNotificationStackScrollLayoutController
                .calculateAppearFraction(mShadeExpandedHeight);
        float startHeight = -getExpansionHeight();
        if (mBarState == StatusBarState.SHADE) {
        if (mBarState == SHADE) {
            // Small parallax as we pull down and clip QS
            startHeight = -getExpansionHeight() * QS_PARALLAX_AMOUNT;
        }
@@ -1123,6 +1130,7 @@ public class QuickSettingsController {
                        mClippingAnimationEndBounds.left, fraction);
                int animTop = (int) MathUtils.lerp(startTop,
                        mClippingAnimationEndBounds.top, fraction);
                logClippingTopBound("interpolated top bound", top);
                int animRight = (int) MathUtils.lerp(startRight,
                        mClippingAnimationEndBounds.right, fraction);
                int animBottom = (int) MathUtils.lerp(startBottom,
@@ -1243,6 +1251,8 @@ public class QuickSettingsController {
            // the screen without clipping.
            return -mAmbientState.getStackTopMargin();
        } else {
            logNotificationsClippingTopBound(qsTop,
                    mNotificationStackScrollLayoutController.getTop());
            return qsTop - mNotificationStackScrollLayoutController.getTop();
        }
    }
@@ -1265,6 +1275,7 @@ public class QuickSettingsController {
    /** Calculate top padding for notifications */
    public float calculateNotificationsTopPadding(boolean isShadeExpanding,
            int keyguardNotificationStaticPadding, float expandedFraction) {
        float topPadding;
        boolean keyguardShowing = mBarState == KEYGUARD;
        if (mSplitShadeEnabled) {
            return keyguardShowing
@@ -1281,19 +1292,27 @@ public class QuickSettingsController {
            int maxQsPadding = getMaxExpansionHeight();
            int max = keyguardShowing ? Math.max(
                    keyguardNotificationStaticPadding, maxQsPadding) : maxQsPadding;
            return (int) MathUtils.lerp((float) getMinExpansionHeight(),
            topPadding = (int) MathUtils.lerp((float) getMinExpansionHeight(),
                    (float) max, expandedFraction);
            logNotificationsTopPadding("keyguard and expandImmediate", topPadding);
            return topPadding;
        } else if (isSizeChangeAnimationRunning()) {
            return Math.max((int) mSizeChangeAnimator.getAnimatedValue(),
            topPadding = Math.max((int) mSizeChangeAnimator.getAnimatedValue(),
                    keyguardNotificationStaticPadding);
            logNotificationsTopPadding("size change animation running", topPadding);
            return topPadding;
        } else if (keyguardShowing) {
            // We can only do the smoother transition on Keyguard when we also are not collapsing
            // from a scrolled quick settings.
            return MathUtils.lerp((float) keyguardNotificationStaticPadding,
            topPadding = MathUtils.lerp((float) keyguardNotificationStaticPadding,
                    (float) (getMaxExpansionHeight()), computeExpansionFraction());
            logNotificationsTopPadding("keyguard", topPadding);
            return topPadding;
        } else {
            return mQsFrameTranslateController.getNotificationsTopPadding(
            topPadding = mQsFrameTranslateController.getNotificationsTopPadding(
                    mExpansionHeight, mNotificationStackScrollLayoutController);
            logNotificationsTopPadding("default case", topPadding);
            return topPadding;
        }
    }

@@ -1340,6 +1359,38 @@ public class QuickSettingsController {
                        - mAmbientState.getScrollY());
    }

    /** TODO(b/273591201): remove after bug resolved */
    private void logNotificationsTopPadding(String message, float rawPadding) {
        int padding =  ((int) rawPadding / 10) * 10;
        if (mBarState != KEYGUARD && padding != mLastNotificationsTopPadding && !mExpanded) {
            mLastNotificationsTopPadding = padding;
            mShadeLog.logNotificationsTopPadding(message, padding);
        }
    }

    /** TODO(b/273591201): remove after bug resolved */
    private void logClippingTopBound(String message, int top) {
        top = (top / 10) * 10;
        if (mBarState != KEYGUARD && mShadeExpandedFraction == 1
                && top != mLastClippingTopBound && !mExpanded) {
            mLastClippingTopBound = top;
            mShadeLog.logClippingTopBound(message, top);
        }
    }

    /** TODO(b/273591201): remove after bug resolved */
    private void logNotificationsClippingTopBound(int top, int nsslTop) {
        top = (top / 10) * 10;
        nsslTop = (nsslTop / 10) * 10;
        if (mBarState == SHADE && mShadeExpandedFraction == 1
                && (top != mLastNotificationsClippingTopBound
                || nsslTop != mLastNotificationsClippingTopBoundNssl) && !mExpanded) {
            mLastNotificationsClippingTopBound = top;
            mLastNotificationsClippingTopBoundNssl = nsslTop;
            mShadeLog.logNotificationsClippingTopBound(top, nsslTop);
        }
    }

    private int calculateTopClippingBound(int qsPanelBottomY) {
        int top;
        if (mSplitShadeEnabled) {
@@ -1349,6 +1400,7 @@ public class QuickSettingsController {
                // If we're transitioning, let's use the actual value. The else case
                // can be wrong during transitions when waiting for the keyguard to unlock
                top = mTransitionToFullShadePosition;
                logClippingTopBound("set while transitioning to full shade", top);
            } else {
                final float notificationTop = getEdgePosition();
                if (mBarState == KEYGUARD) {
@@ -1357,8 +1409,10 @@ public class QuickSettingsController {
                        // this should go away once we unify the stackY position and don't have
                        // to do this min anymore below.
                        top = qsPanelBottomY;
                        logClippingTopBound("bypassing keyguard", top);
                    } else {
                        top = (int) Math.min(qsPanelBottomY, notificationTop);
                        logClippingTopBound("keyguard default case", top);
                    }
                } else {
                    top = (int) notificationTop;
@@ -1366,12 +1420,14 @@ public class QuickSettingsController {
            }
            // TODO (b/265193930): remove dependency on NPVC
            top += mPanelViewControllerLazy.get().getOverStretchAmount();
            logClippingTopBound("including overstretch", top);
            // Correction for instant expansion caused by HUN pull down/
            float minFraction = mPanelViewControllerLazy.get().getMinFraction();
            if (minFraction > 0f && minFraction < 1f) {
                float realFraction = (mShadeExpandedFraction
                        - minFraction) / (1f - minFraction);
                top *= MathUtils.saturate(realFraction / minFraction);
                logClippingTopBound("after adjusted fraction", top);
            }
        }
        return top;
+36 −0
Original line number Diff line number Diff line
@@ -280,4 +280,40 @@ class ShadeLogger @Inject constructor(@ShadeLog private val buffer: LogBuffer) {
            { "Split shade state changed: split shade ${if (bool1) "enabled" else "disabled"}" }
        )
    }

    fun logNotificationsTopPadding(message: String, padding: Int) {
        buffer.log(
            TAG,
            LogLevel.VERBOSE,
            {
                str1 = message
                int1 = padding
            },
            { "QSC NotificationsTopPadding $str1: $int1"}
        )
    }

    fun logClippingTopBound(message: String, top: Int) {
        buffer.log(
            TAG,
            LogLevel.VERBOSE,
            {
                str1 = message
                int1 = top
            },
            { "QSC ClippingTopBound $str1: $int1" }
        )
    }

    fun logNotificationsClippingTopBound(top: Int, nsslTop: Int) {
        buffer.log(
            TAG,
            LogLevel.VERBOSE,
            {
                int1 = top
                int2 = nsslTop
            },
            { "QSC NotificationsClippingTopBound set to $int1 - $int2" }
        )
    }
}