Merge "Added logging for shade top padding and clipping" into tm-qpr-dev am: 5f02519f9c am: 81fcd88b63
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22189801
Change-Id: I6062b2380fa48f56fe0805d2853099f3ad42738e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java
index 9f46707..07c8e52 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java
@@ -25,6 +25,7 @@
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 @@
/** 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 @@
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 @@
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 @@
// the screen without clipping.
return -mAmbientState.getStackTopMargin();
} else {
+ logNotificationsClippingTopBound(qsTop,
+ mNotificationStackScrollLayoutController.getTop());
return qsTop - mNotificationStackScrollLayoutController.getTop();
}
}
@@ -1265,6 +1275,7 @@
/** 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 @@
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 @@
- 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 @@
// 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 @@
// 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 @@
}
// 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;
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt
index d34e127..da4944c 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt
@@ -280,4 +280,40 @@
{ "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" }
+ )
+ }
}