From 5ecd2b8e143b1a402be3e987c4e5573a4fe6a0f7 Mon Sep 17 00:00:00 2001 From: Gus Prevas Date: Fri, 4 Jan 2019 17:19:26 -0500 Subject: [PATCH] Moves snapViewIfNeeded() call to listener on NSSL. This change removes the logic from NotificationEntryManager which snaps an updated notification's view back into place and replaces it with a NotificationEntryListener defined by the NotificationStackScrollLayout. This allows us to remove a method from the NotificationListContainer interface and gets us halfway to breaking the dependency from NotificationEntryManager on NotificationListContainer. Test: atest SystemUITests, manual Change-Id: I744ece3fa660454d9725aa553ffebcfe8846a303 --- .../notification/NotificationEntryManager.java | 6 ------ .../stack/NotificationListContainer.java | 10 +--------- .../stack/NotificationStackScrollLayout.java | 15 +++++++++++++-- .../NotificationViewHierarchyManagerTest.java | 3 --- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java index 5d6f60eadf1fd..6b5e70825d1d8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java @@ -463,12 +463,6 @@ public class NotificationEntryManager implements updateNotifications(); - if (!notification.isClearable()) { - // The user may have performed a dismiss action on the notification, since it's - // not clearable we should snap it back. - mListContainer.snapViewIfNeeded(entry); - } - if (DEBUG) { // Is this for you? boolean isForCurrentUser = Dependency.get(KeyguardEnvironment.class) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationListContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationListContainer.java index f0a26536d7b85..1d5b9cce099d2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationListContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationListContainer.java @@ -16,8 +16,7 @@ package com.android.systemui.statusbar.notification.stack; -import static com.android.systemui.statusbar.notification.ActivityLaunchAnimator - .ExpandAnimationParameters; +import static com.android.systemui.statusbar.notification.ActivityLaunchAnimator.ExpandAnimationParameters; import android.view.View; import android.view.ViewGroup; @@ -112,13 +111,6 @@ public interface NotificationListContainer extends ExpandableView.OnHeightChange */ void setMaxDisplayedNotifications(int maxNotifications); - /** - * Handle snapping a non-dismissable row back if the user tried to dismiss it. - * - * @param entry the entry whose row needs to snap back - */ - void snapViewIfNeeded(NotificationData.Entry entry); - /** * Get the view parent for a notification entry. For example, NotificationStackScrollLayout. * 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 8deb7d5e84565..1248cbff5e1ab 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 @@ -97,6 +97,7 @@ import com.android.systemui.statusbar.StatusBarStateController; import com.android.systemui.statusbar.StatusBarStateController.StateListener; import com.android.systemui.statusbar.notification.FakeShadowView; import com.android.systemui.statusbar.notification.NotificationData; +import com.android.systemui.statusbar.notification.NotificationEntryListener; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.notification.ShadeViewRefactor; @@ -517,6 +518,17 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd mLowPriorityBeforeSpeedBump = "1".equals(newValue); } }, LOW_PRIORITY); + + mEntryManager.addNotificationEntryListener(new NotificationEntryListener() { + @Override + public void onEntryUpdated(NotificationData.Entry entry) { + if (!entry.notification.isClearable()) { + // The user may have performed a dismiss action on the notification, since it's + // not clearable we should snap it back. + snapViewIfNeeded(entry); + } + } + }); } @Override @@ -1538,9 +1550,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd true /* isDismissAll */); } - @Override @ShadeViewRefactor(RefactorComponent.STATE_RESOLVER) - public void snapViewIfNeeded(NotificationData.Entry entry) { + private void snapViewIfNeeded(NotificationData.Entry entry) { ExpandableNotificationRow child = entry.getRow(); boolean animate = mIsExpanded || isPinnedHeadsUp(child); // If the child is showing the notification menu snap to that diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java index e716421a1e693..e84e0f30c7454 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java @@ -263,9 +263,6 @@ public class NotificationViewHierarchyManagerTest extends SysuiTestCase { @Override public void setMaxDisplayedNotifications(int maxNotifications) {} - @Override - public void snapViewIfNeeded(Entry entry) {} - @Override public ViewGroup getViewParentForNotification(NotificationData.Entry entry) { return null;