summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/ForegroundServiceLifetimeExtender.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceNotificationListenerTest.java12
2 files changed, 18 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/ForegroundServiceLifetimeExtender.java b/packages/SystemUI/src/com/android/systemui/ForegroundServiceLifetimeExtender.java
index 77abffc82d68..c0f8cae607ca 100644
--- a/packages/SystemUI/src/com/android/systemui/ForegroundServiceLifetimeExtender.java
+++ b/packages/SystemUI/src/com/android/systemui/ForegroundServiceLifetimeExtender.java
@@ -66,6 +66,12 @@ public class ForegroundServiceLifetimeExtender implements NotificationLifetimeEx
return false;
}
+ // Entry has triggered a HUN or some other interruption, therefore it has been seen and the
+ // interrupter might be retaining it anyway.
+ if (entry.hasInterrupted()) {
+ return false;
+ }
+
boolean hasInteracted = mInteractionTracker.hasUserInteractedWith(entry.getKey());
long aliveTime = mSystemClock.uptimeMillis() - entry.getCreationTime();
return aliveTime < MIN_FGS_TIME_MS && !hasInteracted;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceNotificationListenerTest.java b/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceNotificationListenerTest.java
index 050b5538773d..9a40421a353f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceNotificationListenerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceNotificationListenerTest.java
@@ -95,4 +95,16 @@ public class ForegroundServiceNotificationListenerTest extends SysuiTestCase {
mClock.advanceTime(MIN_FGS_TIME_MS + 1);
assertFalse(mExtender.shouldExtendLifetime(mEntry));
}
+
+ @Test
+ public void testShouldExtendLifetime_shouldNot_interruped() {
+ // GIVEN a notification that would trigger lifetime extension
+ mNotif.flags |= Notification.FLAG_FOREGROUND_SERVICE;
+
+ // GIVEN the notification has alerted
+ mEntry.setInterruption();
+
+ // THEN the notification does not need to have its lifetime extended by this extender
+ assertFalse(mExtender.shouldExtendLifetime(mEntry));
+ }
}