Merge "Do not re-pin unpinned HUNs" into udc-dev am: a338728c08
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23065727 Change-Id: I1807e1eee68ba6ed5135f5fe413d8fab075837fd Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -140,7 +140,13 @@ public abstract class HeadsUpManager extends AlertingNotificationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected boolean shouldHeadsUpBecomePinned(@NonNull NotificationEntry entry) {
|
protected boolean shouldHeadsUpBecomePinned(@NonNull NotificationEntry entry) {
|
||||||
return hasFullScreenIntent(entry);
|
final HeadsUpEntry headsUpEntry = getHeadsUpEntry(entry.getKey());
|
||||||
|
if (headsUpEntry == null) {
|
||||||
|
// This should not happen since shouldHeadsUpBecomePinned is always called after adding
|
||||||
|
// the NotificationEntry into AlertingNotificationManager's mAlertEntries map.
|
||||||
|
return hasFullScreenIntent(entry);
|
||||||
|
}
|
||||||
|
return hasFullScreenIntent(entry) && !headsUpEntry.wasUnpinned;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean hasFullScreenIntent(@NonNull NotificationEntry entry) {
|
protected boolean hasFullScreenIntent(@NonNull NotificationEntry entry) {
|
||||||
@@ -151,6 +157,9 @@ public abstract class HeadsUpManager extends AlertingNotificationManager {
|
|||||||
@NonNull HeadsUpManager.HeadsUpEntry headsUpEntry, boolean isPinned) {
|
@NonNull HeadsUpManager.HeadsUpEntry headsUpEntry, boolean isPinned) {
|
||||||
mLogger.logSetEntryPinned(headsUpEntry.mEntry, isPinned);
|
mLogger.logSetEntryPinned(headsUpEntry.mEntry, isPinned);
|
||||||
NotificationEntry entry = headsUpEntry.mEntry;
|
NotificationEntry entry = headsUpEntry.mEntry;
|
||||||
|
if (!isPinned) {
|
||||||
|
headsUpEntry.wasUnpinned = true;
|
||||||
|
}
|
||||||
if (entry.isRowPinned() != isPinned) {
|
if (entry.isRowPinned() != isPinned) {
|
||||||
entry.setRowPinned(isPinned);
|
entry.setRowPinned(isPinned);
|
||||||
updatePinnedMode();
|
updatePinnedMode();
|
||||||
@@ -177,7 +186,9 @@ public abstract class HeadsUpManager extends AlertingNotificationManager {
|
|||||||
protected void onAlertEntryAdded(AlertEntry alertEntry) {
|
protected void onAlertEntryAdded(AlertEntry alertEntry) {
|
||||||
NotificationEntry entry = alertEntry.mEntry;
|
NotificationEntry entry = alertEntry.mEntry;
|
||||||
entry.setHeadsUp(true);
|
entry.setHeadsUp(true);
|
||||||
setEntryPinned((HeadsUpEntry) alertEntry, shouldHeadsUpBecomePinned(entry));
|
|
||||||
|
final boolean shouldPin = shouldHeadsUpBecomePinned(entry);
|
||||||
|
setEntryPinned((HeadsUpEntry) alertEntry, shouldPin);
|
||||||
EventLogTags.writeSysuiHeadsUpStatus(entry.getKey(), 1 /* visible */);
|
EventLogTags.writeSysuiHeadsUpStatus(entry.getKey(), 1 /* visible */);
|
||||||
for (OnHeadsUpChangedListener listener : mListeners) {
|
for (OnHeadsUpChangedListener listener : mListeners) {
|
||||||
listener.onHeadsUpStateChanged(entry, true);
|
listener.onHeadsUpStateChanged(entry, true);
|
||||||
@@ -411,6 +422,7 @@ public abstract class HeadsUpManager extends AlertingNotificationManager {
|
|||||||
protected class HeadsUpEntry extends AlertEntry {
|
protected class HeadsUpEntry extends AlertEntry {
|
||||||
public boolean remoteInputActive;
|
public boolean remoteInputActive;
|
||||||
protected boolean expanded;
|
protected boolean expanded;
|
||||||
|
protected boolean wasUnpinned;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isSticky() {
|
public boolean isSticky() {
|
||||||
|
|||||||
@@ -113,6 +113,54 @@ public class HeadsUpManagerTest extends AlertingNotificationManagerTest {
|
|||||||
verify(mLogger, times(1)).logNotificationActuallyRemoved(eq(mEntry));
|
verify(mLogger, times(1)).logNotificationActuallyRemoved(eq(mEntry));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testShouldHeadsUpBecomePinned_hasFSI_notUnpinned_true() {
|
||||||
|
// Set up NotifEntry with FSI
|
||||||
|
NotificationEntry notifEntry = new NotificationEntryBuilder()
|
||||||
|
.setSbn(createNewNotification(/* id= */ 0))
|
||||||
|
.build();
|
||||||
|
notifEntry.getSbn().getNotification().fullScreenIntent = PendingIntent.getActivity(
|
||||||
|
getContext(), 0, new Intent(getContext(), this.getClass()),
|
||||||
|
PendingIntent.FLAG_MUTABLE_UNAUDITED);
|
||||||
|
|
||||||
|
// Add notifEntry to ANM mAlertEntries map and make it NOT unpinned
|
||||||
|
mHeadsUpManager.showNotification(notifEntry);
|
||||||
|
HeadsUpManager.HeadsUpEntry headsUpEntry =
|
||||||
|
mHeadsUpManager.getHeadsUpEntry(notifEntry.getKey());
|
||||||
|
headsUpEntry.wasUnpinned = false;
|
||||||
|
|
||||||
|
assertTrue(mHeadsUpManager.shouldHeadsUpBecomePinned(notifEntry));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testShouldHeadsUpBecomePinned_wasUnpinned_false() {
|
||||||
|
// Set up NotifEntry with FSI
|
||||||
|
NotificationEntry notifEntry = new NotificationEntryBuilder()
|
||||||
|
.setSbn(createNewNotification(/* id= */ 0))
|
||||||
|
.build();
|
||||||
|
notifEntry.getSbn().getNotification().fullScreenIntent = PendingIntent.getActivity(
|
||||||
|
getContext(), 0, new Intent(getContext(), this.getClass()),
|
||||||
|
PendingIntent.FLAG_MUTABLE_UNAUDITED);
|
||||||
|
|
||||||
|
// Add notifEntry to ANM mAlertEntries map and make it unpinned
|
||||||
|
mHeadsUpManager.showNotification(notifEntry);
|
||||||
|
HeadsUpManager.HeadsUpEntry headsUpEntry =
|
||||||
|
mHeadsUpManager.getHeadsUpEntry(notifEntry.getKey());
|
||||||
|
headsUpEntry.wasUnpinned = true;
|
||||||
|
|
||||||
|
assertFalse(mHeadsUpManager.shouldHeadsUpBecomePinned(notifEntry));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testShouldHeadsUpBecomePinned_noFSI_false() {
|
||||||
|
// Set up NotifEntry with no FSI
|
||||||
|
NotificationEntry notifEntry = new NotificationEntryBuilder()
|
||||||
|
.setSbn(createNewNotification(/* id= */ 0))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
assertFalse(mHeadsUpManager.shouldHeadsUpBecomePinned(notifEntry));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testShowNotification_autoDismissesWithAccessibilityTimeout() {
|
public void testShowNotification_autoDismissesWithAccessibilityTimeout() {
|
||||||
doReturn(TEST_A11Y_AUTO_DISMISS_TIME).when(mAccessibilityMgr)
|
doReturn(TEST_A11Y_AUTO_DISMISS_TIME).when(mAccessibilityMgr)
|
||||||
|
|||||||
Reference in New Issue
Block a user