Fix notifications wrong corners after "clear all"
If "Clear all" is pressed in the notification shelf, some notifications may remain with an incorrect roundness state. The solution is to call onSwipeEnd() for each notification at the end of the animation to allow the notification to correctly manage its state. Test: atest NotificationStackScrollLayoutControllerTest Bug: 287740047 Change-Id: Iaa1d831b00738acfdfa2309a48a9f54d554300bc
This commit is contained in:
@@ -424,7 +424,8 @@ public class NotificationStackScrollLayoutController {
|
||||
}
|
||||
};
|
||||
|
||||
private final NotificationSwipeHelper.NotificationCallback mNotificationCallback =
|
||||
@VisibleForTesting
|
||||
final NotificationSwipeHelper.NotificationCallback mNotificationCallback =
|
||||
new NotificationSwipeHelper.NotificationCallback() {
|
||||
|
||||
@Override
|
||||
@@ -483,10 +484,11 @@ public class NotificationStackScrollLayoutController {
|
||||
*/
|
||||
|
||||
public void handleChildViewDismissed(View view) {
|
||||
// The View needs to clean up the Swipe states, e.g. roundness.
|
||||
mView.onSwipeEnd();
|
||||
if (mView.getClearAllInProgress()) {
|
||||
return;
|
||||
}
|
||||
mView.onSwipeEnd();
|
||||
if (view instanceof ExpandableNotificationRow) {
|
||||
ExpandableNotificationRow row = (ExpandableNotificationRow) view;
|
||||
if (row.isHeadsUp()) {
|
||||
|
||||
@@ -87,6 +87,7 @@ import com.android.systemui.statusbar.notification.init.NotificationsController;
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
|
||||
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
|
||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController.NotificationPanelEvent;
|
||||
import com.android.systemui.statusbar.notification.stack.NotificationSwipeHelper.NotificationCallback;
|
||||
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationListViewModel;
|
||||
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
|
||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||
@@ -414,6 +415,36 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
|
||||
MetricsProto.MetricsEvent.TYPE_ACTION));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void callSwipeCallbacksDuringClearAll() {
|
||||
initController(/* viewIsAttached= */ true);
|
||||
ExpandableNotificationRow row = mock(ExpandableNotificationRow.class);
|
||||
NotificationCallback notificationCallback = mController.mNotificationCallback;
|
||||
|
||||
when(mNotificationStackScrollLayout.getClearAllInProgress()).thenReturn(true);
|
||||
|
||||
notificationCallback.onBeginDrag(row);
|
||||
verify(mNotificationStackScrollLayout).onSwipeBegin(row);
|
||||
|
||||
notificationCallback.handleChildViewDismissed(row);
|
||||
verify(mNotificationStackScrollLayout).onSwipeEnd();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void callSwipeCallbacksDuringClearNotification() {
|
||||
initController(/* viewIsAttached= */ true);
|
||||
ExpandableNotificationRow row = mock(ExpandableNotificationRow.class);
|
||||
NotificationCallback notificationCallback = mController.mNotificationCallback;
|
||||
|
||||
when(mNotificationStackScrollLayout.getClearAllInProgress()).thenReturn(false);
|
||||
|
||||
notificationCallback.onBeginDrag(row);
|
||||
verify(mNotificationStackScrollLayout).onSwipeBegin(row);
|
||||
|
||||
notificationCallback.handleChildViewDismissed(row);
|
||||
verify(mNotificationStackScrollLayout).onSwipeEnd();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnMenuClickedLogging() {
|
||||
ExpandableNotificationRow row = mock(ExpandableNotificationRow.class, RETURNS_DEEP_STUBS);
|
||||
|
||||
Reference in New Issue
Block a user