From 0f8dfa5326ccc13f94b8dec8abd3dd822dfd42dd Mon Sep 17 00:00:00 2001 From: Lyn Han Date: Mon, 26 Jul 2021 13:49:59 -0500 Subject: [PATCH] Add logs to ensure that QS / NPVC clip bounds match Bug: 191436459 Test: treehugger Change-Id: I07dbb58b234bee06c31a67fd38ab363ff13d9458 Merged-In: I07dbb58b234bee06c31a67fd38ab363ff13d9458 --- .../android/systemui/qs/QSContainerImpl.java | 13 ++++++++++++- .../src/com/android/systemui/qs/QSFragment.java | 9 ++++++++- .../phone/NotificationPanelViewController.java | 17 +++++++++++++---- .../com/android/systemui/qs/QSFragmentTest.java | 3 ++- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java index e9b19e5cfa6f2..59e5eb8d6ac8e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java @@ -28,13 +28,17 @@ import android.view.View; import android.view.WindowInsets; import android.widget.FrameLayout; +import com.android.systemui.Dumpable; import com.android.systemui.R; import com.android.systemui.qs.customize.QSCustomizer; +import java.io.FileDescriptor; +import java.io.PrintWriter; + /** * Wrapper view with background which contains {@link QSPanel} and {@link QuickStatusBarHeader} */ -public class QSContainerImpl extends FrameLayout { +public class QSContainerImpl extends FrameLayout implements Dumpable { private final Point mSizePoint = new Point(); private int mFancyClippingTop; @@ -296,4 +300,11 @@ public class QSContainerImpl extends FrameLayout { mFancyClippingBottom, mFancyClippingRadii, Path.Direction.CW); invalidate(); } + + @Override + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + pw.println(getClass().getSimpleName() + " updateClippingPath: top(" + + mFancyClippingTop + ") bottom(" + mFancyClippingBottom + ") mClippingEnabled(" + + mClippingEnabled + ")"); + } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index 04f692dcc1e63..c9230d684b1b5 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -36,8 +36,10 @@ import android.widget.FrameLayout.LayoutParams; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; +import com.android.systemui.Dumpable; import com.android.systemui.R; import com.android.systemui.animation.Interpolators; +import com.android.systemui.dump.DumpManager; import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.qs.QS; @@ -131,6 +133,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca */ private boolean mAnimateNextQsUpdate; + private DumpManager mDumpManager; + @Inject public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler, InjectionInflationController injectionInflater, QSTileHost qsTileHost, @@ -139,7 +143,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca @Named(QUICK_QS_PANEL) MediaHost qqsMediaHost, KeyguardBypassController keyguardBypassController, QSFragmentComponent.Factory qsComponentFactory, FeatureFlags featureFlags, - FalsingManager falsingManager) { + FalsingManager falsingManager, DumpManager dumpManager) { mRemoteInputQuickSettingsDisabler = remoteInputQsDisabler; mInjectionInflater = injectionInflater; mCommandQueue = commandQueue; @@ -153,6 +157,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mFalsingManager = falsingManager; mBypassController = keyguardBypassController; mStatusBarStateController = statusBarStateController; + mDumpManager = dumpManager; } @Override @@ -197,6 +202,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mQSContainerImplController = qsFragmentComponent.getQSContainerImplController(); mQSContainerImplController.init(); mContainer = mQSContainerImplController.getView(); + mDumpManager.registerDumpable(mContainer.getClass().getName(), mContainer); mQSDetail.setQsPanel(mQSPanelController, mHeader, mFooter, mFalsingManager); mQSAnimator = qsFragmentComponent.getQSAnimator(); @@ -248,6 +254,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca mQSCustomizerController.setQs(null); mQsDetailDisplayer.setQsPanelController(null); mScrollListener = null; + mDumpManager.unregisterDumpable(mContainer.getClass().getName()); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index ad4d450fd9474..af5df46de66b2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -631,6 +631,9 @@ public class NotificationPanelViewController extends PanelViewController { private int mScreenCornerRadius; private boolean mQSAnimatingHiddenFromCollapsed; + private int mQsClipTop; + private int mQsClipBottom; + private boolean mQsVisible; private final ContentResolver mContentResolver; private final Executor mUiExecutor; @@ -2402,9 +2405,12 @@ public class NotificationPanelViewController extends PanelViewController { mQsTranslationForFullShadeTransition = qsTranslation; updateQsFrameTranslation(); float currentTranslation = mQsFrame.getTranslationY(); - mQs.setFancyClipping(( - int) (top - currentTranslation), - (int) (bottom - currentTranslation), + mQsClipTop = (int) (top - currentTranslation); + mQsClipBottom = (int) (bottom - currentTranslation); + mQsVisible = qsVisible; + mQs.setFancyClipping( + mQsClipTop, + mQsClipBottom, radius, qsVisible && !mShouldUseSplitNotificationShade); } @@ -3733,7 +3739,10 @@ public class NotificationPanelViewController extends PanelViewController { @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { super.dump(fd, pw, args); - pw.println(" gestureExclusionRect: " + calculateGestureExclusionRect()); + pw.println(" gestureExclusionRect: " + calculateGestureExclusionRect() + + " applyQSClippingImmediately: top(" + mQsClipTop + ") bottom(" + mQsClipBottom + + ") qsVisible(" + mQsVisible + ); if (mKeyguardStatusBar != null) { mKeyguardStatusBar.dump(fd, pw, args); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java index c1a7bc5f8bf59..3ee3e55c749a7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java @@ -190,6 +190,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { mBypassController, mQsComponentFactory, mFeatureFlags, - mFalsingManager); + mFalsingManager, + mock(DumpManager.class)); } }