Track NotificationEntry creation time

Notification updates from system server always give us a new
Notification that has a new `when` field therefore we don't know when
the initial notification was posted.

Test: atest SystemUITests
Bug: 144324894
Change-Id: I2464e2ef924e3074227337ad7143694d7e283ec7
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceNotificationListenerTest.java b/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceNotificationListenerTest.java
index 46a473b..bca8dee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceNotificationListenerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ForegroundServiceNotificationListenerTest.java
@@ -17,7 +17,6 @@
 package com.android.systemui;
 
 import static com.android.systemui.ForegroundServiceLifetimeExtender.MIN_FGS_TIME_MS;
-import static com.android.systemui.statusbar.NotificationEntryHelper.modifySbn;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -29,6 +28,7 @@
 
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
+import com.android.systemui.util.time.FakeSystemClock;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -37,12 +37,15 @@
 @RunWith(AndroidJUnit4.class)
 @SmallTest
 public class ForegroundServiceNotificationListenerTest extends SysuiTestCase {
-    private ForegroundServiceLifetimeExtender mExtender = new ForegroundServiceLifetimeExtender();
+    private ForegroundServiceLifetimeExtender mExtender;
     private NotificationEntry mEntry;
     private Notification mNotif;
+    private final FakeSystemClock mClock = new FakeSystemClock();
 
     @Before
     public void setup() {
+        mExtender = new ForegroundServiceLifetimeExtender(mClock);
+
         mNotif = new Notification.Builder(mContext, "")
                 .setSmallIcon(R.drawable.ic_person)
                 .setContentTitle("Title")
@@ -50,6 +53,7 @@
                 .build();
 
         mEntry = new NotificationEntryBuilder()
+                .setCreationTime(mClock.uptimeMillis())
                 .setNotification(mNotif)
                 .build();
     }
@@ -62,27 +66,26 @@
         // Extend the lifetime of a FGS notification iff it has not been visible
         // for the minimum time
         mNotif.flags |= Notification.FLAG_FOREGROUND_SERVICE;
-        modifySbn(mEntry)
-                .setPostTime(System.currentTimeMillis())
-                .build();
+
+        // No time has elapsed, keep showing
         assertTrue(mExtender.shouldExtendLifetime(mEntry));
     }
 
     @Test
     public void testShouldExtendLifetime_shouldNot_foreground() {
         mNotif.flags |= Notification.FLAG_FOREGROUND_SERVICE;
-        modifySbn(mEntry)
-                .setPostTime(System.currentTimeMillis() - MIN_FGS_TIME_MS - 1)
-                .build();
+
+        // Entry was created at mClock.uptimeMillis(), advance it MIN_FGS_TIME_MS + 1
+        mClock.advanceTime(MIN_FGS_TIME_MS + 1);
         assertFalse(mExtender.shouldExtendLifetime(mEntry));
     }
 
     @Test
     public void testShouldExtendLifetime_shouldNot_notForeground() {
         mNotif.flags = 0;
-        modifySbn(mEntry)
-                .setPostTime(System.currentTimeMillis() - MIN_FGS_TIME_MS - 1)
-                .build();
+
+        // Entry was created at mClock.uptimeMillis(), advance it MIN_FGS_TIME_MS + 1
+        mClock.advanceTime(MIN_FGS_TIME_MS + 1);
         assertFalse(mExtender.shouldExtendLifetime(mEntry));
     }
 }