From 4d4e94ca9450701907ed41d0c953c10b8b2fb337 Mon Sep 17 00:00:00 2001 From: Julia Tuttle Date: Wed, 2 Feb 2022 14:20:28 -0500 Subject: [PATCH] New Pipeline: plumb isChangingPosition ExpandableNotificationRow has an isChangingPosition flag that's used to inform the remote input code of when a view is being detached only briefly as the shade is rearranged, to give it a chance to save and restore state that would otherwise be discarded. The new pipeline doesn't currently set and clear this flag, which broke lifetime extension for notifications with a remote input history (one or more replies sent), but also kept input focus from being preserved when a notification is moved. This change sets and clears the flag in the relevant NodeControllers. It may or may not render ag/16749051 redundant. Bug: 211161595 Test: manual, after locally reverting ag/16749051 Change-Id: Ie808a854f6a0bc523dffcc2787818e5765d507ec --- .../notification/collection/render/RootNodeController.kt | 3 +++ .../row/ExpandableNotificationRowController.java | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RootNodeController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RootNodeController.kt index 4de8e7a5641c2..b76169f111dbb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RootNodeController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RootNodeController.kt @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.notification.collection.render import android.view.View +import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.notification.row.ExpandableView import com.android.systemui.statusbar.notification.stack.NotificationListContainer @@ -41,6 +42,7 @@ class RootNodeController( override fun addChildAt(child: NodeController, index: Int) { listContainer.addContainerViewAt(child.view, index) listContainer.onNotificationViewUpdateFinished() + (child.view as? ExpandableNotificationRow)?.isChangingPosition = false } override fun moveChildTo(child: NodeController, index: Int) { @@ -50,6 +52,7 @@ class RootNodeController( override fun removeChild(child: NodeController, isTransfer: Boolean) { if (isTransfer) { listContainer.setChildTransferInProgress(true) + (child.view as? ExpandableNotificationRow)?.isChangingPosition = true } listContainer.removeContainerView(child.view) if (isTransfer) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java index 46efef66de439..2436ffdbeefab 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java @@ -248,19 +248,25 @@ public class ExpandableNotificationRowController implements NotifViewController mView.addChildNotification((ExpandableNotificationRow) child.getView(), index); mListContainer.notifyGroupChildAdded(childView); + childView.setChangingPosition(false); } @Override public void moveChildTo(NodeController child, int index) { ExpandableNotificationRow childView = (ExpandableNotificationRow) child.getView(); + childView.setChangingPosition(true); mView.removeChildNotification(childView); mView.addChildNotification(childView, index); + childView.setChangingPosition(false); } @Override public void removeChild(NodeController child, boolean isTransfer) { ExpandableNotificationRow childView = (ExpandableNotificationRow) child.getView(); + if (isTransfer) { + childView.setChangingPosition(true); + } mView.removeChildNotification(childView); if (!isTransfer) { mListContainer.notifyGroupChildRemoved(childView, mView);