diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 3bbdfd164ba7fe81ea319ffd57a5bb015d82a86d..85e63e58bc7a955143f319213f6c7e7f44f74ddf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -94,9 +94,7 @@ import com.android.systemui.flags.RefactorFlag; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper; import com.android.systemui.res.R; -import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.TouchLogger; -import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.EmptyShadeView; import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.StatusBarState; @@ -109,7 +107,6 @@ import com.android.systemui.statusbar.notification.collection.render.GroupExpans import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager; import com.android.systemui.statusbar.notification.footer.shared.FooterViewRefactor; import com.android.systemui.statusbar.notification.footer.ui.view.FooterView; -import com.android.systemui.statusbar.notification.init.NotificationsController; import com.android.systemui.statusbar.notification.logging.NotificationLogger; import com.android.systemui.statusbar.notification.row.ActivatableNotificationView; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; @@ -146,8 +143,6 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable private static final String TAG = "StackScroller"; private static final boolean SPEW = Log.isLoggable(TAG, Log.VERBOSE); - // Delay in milli-seconds before shade closes for clear all. - private static final int DELAY_BEFORE_SHADE_CLOSE = 200; private boolean mShadeNeedsToClose = false; @VisibleForTesting @@ -319,7 +314,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } }; private NotificationStackScrollLogger mLogger; - private NotificationsController mNotificationsController; + private Runnable mResetUserExpandedStatesRunnable; private ActivityStarter mActivityStarter; private final int[] mTempInt2 = new int[2]; private final HashSet<Runnable> mAnimationFinishedRunnables = new HashSet<>(); @@ -482,7 +477,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable private final Rect mTmpRect = new Rect(); private ClearAllListener mClearAllListener; private ClearAllAnimationListener mClearAllAnimationListener; - private ShadeController mShadeController; + private Runnable mClearAllFinishedWhilePanelExpandedRunnable; private Consumer<Boolean> mOnStackYChanged; private Interpolator mHideXInterpolator = Interpolators.FAST_OUT_SLOW_IN; @@ -4114,7 +4109,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mAmbientState.setExpansionChanging(false); if (!mIsExpanded) { resetScrollPosition(); - mNotificationsController.resetUserExpandedStates(); + mResetUserExpandedStatesRunnable.run(); clearTemporaryViews(); clearUserLockedViews(); resetAllSwipeState(); @@ -4316,21 +4311,12 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable if (mShadeNeedsToClose) { mShadeNeedsToClose = false; if (mIsExpanded) { - collapseShadeDelayed(); + mClearAllFinishedWhilePanelExpandedRunnable.run(); } } } } - private void collapseShadeDelayed() { - postDelayed( - () -> { - mShadeController.animateCollapseShade( - CommandQueue.FLAG_EXCLUDE_NONE); - }, - DELAY_BEFORE_SHADE_CLOSE /* delayMillis */); - } - private void clearHeadsUpDisappearRunning() { for (int i = 0; i < getChildCount(); i++) { View view = getChildAt(i); @@ -4747,8 +4733,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable return max + getStackTranslation(); } - public void setNotificationsController(NotificationsController notificationsController) { - this.mNotificationsController = notificationsController; + public void setResetUserExpandedStatesRunnable(Runnable runnable) { + this.mResetUserExpandedStatesRunnable = runnable; } public void setActivityStarter(ActivityStarter activityStarter) { @@ -5681,8 +5667,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mFooterClearAllListener = listener; } - void setShadeController(ShadeController shadeController) { - mShadeController = shadeController; + void setClearAllFinishedWhilePanelExpandedRunnable(Runnable runnable) { + mClearAllFinishedWhilePanelExpandedRunnable = runnable; } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java index e6315fd159d502bb25e8f3e777c6f13d6eb6f6a0..d2fca8fca837ee275e5a085e25192a265e10a0aa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java @@ -81,6 +81,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.ShadeViewController; +import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.LockscreenShadeTransitionController; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.NotificationLockscreenUserManager.UserChangedListener; @@ -152,6 +153,8 @@ public class NotificationStackScrollLayoutController implements Dumpable { private static final String TAG = "StackScrollerController"; private static final boolean DEBUG = Compile.IS_DEBUG && Log.isLoggable(TAG, Log.DEBUG); private static final String HIGH_PRIORITY = "high_priority"; + /** Delay in milli-seconds before shade closes for clear all. */ + private static final int DELAY_BEFORE_SHADE_CLOSE = 200; private final boolean mAllowLongPress; private final NotificationGutsManager mNotificationGutsManager; @@ -754,7 +757,7 @@ public class NotificationStackScrollLayoutController implements Dumpable { mView.setController(this); mView.setLogger(mLogger); mView.setTouchHandler(new TouchHandler()); - mView.setNotificationsController(mNotificationsController); + mView.setResetUserExpandedStatesRunnable(mNotificationsController::resetUserExpandedStates); mView.setActivityStarter(mActivityStarter); mView.setClearAllAnimationListener(this::onAnimationEnd); mView.setClearAllListener((selection) -> mUiEventLogger.log( @@ -770,7 +773,11 @@ public class NotificationStackScrollLayoutController implements Dumpable { mView.setIsRemoteInputActive(active); } }); - mView.setShadeController(mShadeController); + mView.setClearAllFinishedWhilePanelExpandedRunnable(()-> { + final Runnable doCollapseRunnable = () -> + mShadeController.animateCollapseShade(CommandQueue.FLAG_EXCLUDE_NONE); + mView.postDelayed(doCollapseRunnable, /* delayMillis = */ DELAY_BEFORE_SHADE_CLOSE); + }); mDumpManager.registerDumpable(mView); mKeyguardBypassController.registerOnBypassStateChangedListener( diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java index ba5ba2c31a42f3d8e0db65e236010be49bbd177a..ad7dee33b6d8553ed5dc7fe5d1f0a85766e6a632 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java @@ -82,7 +82,6 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager; import com.android.systemui.statusbar.notification.footer.ui.view.FooterView; -import com.android.systemui.statusbar.notification.init.NotificationsController; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.ExpandableView; import com.android.systemui.statusbar.phone.KeyguardBypassController; @@ -116,7 +115,6 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { private AmbientState mAmbientState; private TestableResources mTestableResources; @Rule public MockitoRule mockito = MockitoJUnit.rule(); - @Mock private NotificationsController mNotificationsController; @Mock private SysuiStatusBarStateController mBarState; @Mock private GroupMembershipManager mGroupMembershipManger; @Mock private GroupExpansionManager mGroupExpansionManager; @@ -193,7 +191,7 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { mStackScrollerInternal.initView(getContext(), mNotificationSwipeHelper, mNotificationStackSizeCalculator); mStackScroller = spy(mStackScrollerInternal); - mStackScroller.setNotificationsController(mNotificationsController); + mStackScroller.setResetUserExpandedStatesRunnable(()->{}); mStackScroller.setEmptyShadeView(mEmptyShadeView); when(mStackScrollLayoutController.isHistoryEnabled()).thenReturn(true); when(mStackScrollLayoutController.getNotificationRoundnessManager()) diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/SetFlagsRuleExtensions.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/flags/SetFlagsRuleExtensions.kt similarity index 100% rename from packages/SystemUI/tests/src/com/android/systemui/flags/SetFlagsRuleExtensions.kt rename to packages/SystemUI/tests/utils/src/com/android/systemui/flags/SetFlagsRuleExtensions.kt