diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java index adcaf5d55773c..a128694f3e3b3 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java @@ -29,13 +29,17 @@ import android.view.WindowInsets; import android.widget.FrameLayout; import android.widget.ImageView; +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; @@ -302,4 +306,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 4e7bd210eab5b..68206ca0eed86 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -37,8 +37,10 @@ import android.widget.ImageView; 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; @@ -132,6 +134,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, @@ -140,7 +144,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca @Named(QUICK_QS_PANEL) MediaHost qqsMediaHost, KeyguardBypassController keyguardBypassController, QSFragmentComponent.Factory qsComponentFactory, - 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 @@ -198,6 +203,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(); @@ -249,6 +255,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 65b323dab8def..d08b3f30f2d3e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -637,6 +637,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; @@ -2452,9 +2455,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); } @@ -3783,7 +3789,9 @@ 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 (mKeyguardStatusBarViewController != null) { mKeyguardStatusBarViewController.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 ad16e9deb9235..109721f5b096e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java @@ -186,6 +186,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { mQQSMediaHost, mBypassController, mQsComponentFactory, - mFalsingManager); + mFalsingManager, + mock(DumpManager.class)); } }