From b76c8250da0d8b028cde8d40d4b2b95bdea11742 Mon Sep 17 00:00:00 2001 From: Beverly Date: Fri, 1 Apr 2022 20:17:17 +0000 Subject: Hide manage & clear affordances on transition to KG We don't want to show the footer view that contains the "Manage" and "Clear all" affordances in the notification shade when the device is transitioning to the keyguard. Test: manual Fixes: 219680200 Change-Id: I1611589759e67d134ab957eee57ae865cfb64856 --- .../plugins/statusbar/StatusBarStateController.java | 6 ++++++ .../systemui/statusbar/StatusBarStateControllerImpl.java | 16 +++++++++++++--- .../stack/NotificationStackScrollLayout.java | 11 ++++++++++- .../stack/NotificationStackScrollLayoutController.java | 5 +++++ 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java index 9829918a0302..9ed3bac57e66 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java @@ -93,6 +93,12 @@ public interface StatusBarStateController { default void onStateChanged(int newState) { } + /** + * Callback to be notified about upcoming state changes. Typically, is immediately followed + * by #onStateChanged, unless there was an intentional delay in updating the state changed. + */ + default void onUpcomingStateChanged(int upcomingState) {} + /** * Callback to be notified when Dozing changes. Dozing is stored separately from state. */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java index 93103e2c3f49..e026c1973197 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java @@ -205,7 +205,7 @@ public class StatusBarStateControllerImpl implements } mLastState = mState; mState = state; - mUpcomingState = state; + updateUpcomingState(mState); mUiEventLogger.log(StatusBarStateEvent.fromState(mState)); Trace.instantForTrack(Trace.TRACE_TAG_APP, "UI Events", "StatusBarState " + tag); for (RankedListener rl : new ArrayList<>(mListeners)) { @@ -223,8 +223,18 @@ public class StatusBarStateControllerImpl implements @Override public void setUpcomingState(int nextState) { - mUpcomingState = nextState; - recordHistoricalState(mUpcomingState /* newState */, mState /* lastState */, true); + recordHistoricalState(nextState /* newState */, mState /* lastState */, true); + updateUpcomingState(nextState); + + } + + private void updateUpcomingState(int upcomingState) { + if (mUpcomingState != upcomingState) { + mUpcomingState = upcomingState; + for (RankedListener rl : new ArrayList<>(mListeners)) { + rl.mListener.onUpcomingStateChanged(mUpcomingState); + } + } } @Override 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 c0553b5c3c2d..79d802dd4784 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 @@ -427,6 +427,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable private boolean mInHeadsUpPinnedMode; private boolean mHeadsUpAnimatingAway; private int mStatusBarState; + private int mUpcomingStatusBarState; private int mCachedBackgroundColor; private boolean mHeadsUpGoingAwayAnimationsAllowed = true; private Runnable mReflingAndAnimateScroll = () -> { @@ -690,7 +691,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mController.hasActiveClearableNotifications(ROWS_ALL); boolean showFooterView = (showDismissView || mController.getVisibleNotificationCount() > 0) && mIsCurrentUserSetup // see: b/193149550 - && mStatusBarState != StatusBarState.KEYGUARD + && !onKeyguard() + && mUpcomingStatusBarState != StatusBarState.KEYGUARD // quick settings don't affect notifications when not in full screen && (mQsExpansionFraction != 1 || !mQsFullScreen) && !mScreenOffAnimationController.shouldHideNotificationsFooter() @@ -4959,6 +4961,13 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable updateDismissBehavior(); } + void setUpcomingStatusBarState(int upcomingStatusBarState) { + mUpcomingStatusBarState = upcomingStatusBarState; + if (mUpcomingStatusBarState != mStatusBarState) { + updateFooter(); + } + } + void onStatePostChange(boolean fromShadeLocked) { boolean onKeyguard = onKeyguard(); 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 3e630cdf8f97..6d7c95f96de6 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 @@ -309,6 +309,11 @@ public class NotificationStackScrollLayoutController { mView.setStatusBarState(mBarState); } + @Override + public void onUpcomingStateChanged(int newState) { + mView.setUpcomingStatusBarState(newState); + } + @Override public void onStatePostChange() { mView.updateSensitiveness(mStatusBarStateController.goingToFullShade(), -- cgit v1.2.3-59-g8ed1b