Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af3cc597 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Replace getCreationTime clock with elapsedRealtime" into main

parents 5f8775bb 86d8fc9c
Loading
Loading
Loading
Loading
+11 −2
Original line number Original line Diff line number Diff line
@@ -283,6 +283,15 @@ flag {
    purpose: PURPOSE_BUGFIX
    purpose: PURPOSE_BUGFIX
  }
  }
 }
 }
flag {
  name: "notif_entry_creation_time_use_elapsed_realtime"
  namespace: "systemui"
  description: "makes the notification entry expect its creation time to be elapsedRealtime, not uptimeMillis"
  bug: "343631648"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}


flag {
flag {
  name: "api_rich_ongoing"
  name: "api_rich_ongoing"
+9 −4
Original line number Original line Diff line number Diff line
@@ -58,6 +58,7 @@ import com.android.systemui.res.R;
import com.android.systemui.statusbar.RankingBuilder;
import com.android.systemui.statusbar.RankingBuilder;
import com.android.systemui.statusbar.SbnBuilder;
import com.android.systemui.statusbar.SbnBuilder;
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips;
import com.android.systemui.statusbar.chips.notification.shared.StatusBarNotifChips;
import com.android.systemui.statusbar.notification.collection.UseElapsedRealtimeForCreationTime;
import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUi;
import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUi;
import com.android.systemui.util.time.FakeSystemClock;
import com.android.systemui.util.time.FakeSystemClock;


@@ -151,7 +152,8 @@ public class NotificationEntryTest extends SysuiTestCase {
                .build();
                .build();


        NotificationEntry entry =
        NotificationEntry entry =
                new NotificationEntry(sbn, ranking, mClock.uptimeMillis());
                new NotificationEntry(sbn, ranking,
                        UseElapsedRealtimeForCreationTime.getCurrentTime(mClock));


        assertFalse(entry.isBlockable());
        assertFalse(entry.isBlockable());
    }
    }
@@ -251,7 +253,8 @@ public class NotificationEntryTest extends SysuiTestCase {
                .build();
                .build();


        NotificationEntry entry =
        NotificationEntry entry =
                new NotificationEntry(sbn, ranking, mClock.uptimeMillis());
                new NotificationEntry(sbn, ranking,
                        UseElapsedRealtimeForCreationTime.getCurrentTime(mClock));


        assertEquals(systemGeneratedSmartActions, entry.getSmartActions());
        assertEquals(systemGeneratedSmartActions, entry.getSmartActions());
        assertEquals(NOTIFICATION_CHANNEL, entry.getChannel());
        assertEquals(NOTIFICATION_CHANNEL, entry.getChannel());
@@ -365,7 +368,8 @@ public class NotificationEntryTest extends SysuiTestCase {
                .setKey(sbn.getKey())
                .setKey(sbn.getKey())
                .build();
                .build();
        NotificationEntry entry =
        NotificationEntry entry =
                new NotificationEntry(sbn, ranking, mClock.uptimeMillis());
                new NotificationEntry(sbn, ranking,
                        UseElapsedRealtimeForCreationTime.getCurrentTime(mClock));


        assertFalse(entry.isChannelVisibilityPrivate());
        assertFalse(entry.isChannelVisibilityPrivate());
    }
    }
@@ -378,7 +382,8 @@ public class NotificationEntryTest extends SysuiTestCase {
                .setKey(sbn.getKey())
                .setKey(sbn.getKey())
                .build();
                .build();
        NotificationEntry entry =
        NotificationEntry entry =
                new NotificationEntry(sbn, ranking, mClock.uptimeMillis());
                new NotificationEntry(sbn, ranking,
                        UseElapsedRealtimeForCreationTime.getCurrentTime(mClock));


        assertFalse(entry.isChannelVisibilityPrivate());
        assertFalse(entry.isChannelVisibilityPrivate());
    }
    }
+21 −5
Original line number Original line Diff line number Diff line
@@ -50,6 +50,7 @@ import com.android.systemui.statusbar.notification.collection.GroupEntry
import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder
import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
import com.android.systemui.statusbar.notification.collection.UseElapsedRealtimeForCreationTime
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifStabilityManager
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifStabilityManager
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable.PluggableListener
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable.PluggableListener
import com.android.systemui.statusbar.notification.collection.notifPipeline
import com.android.systemui.statusbar.notification.collection.notifPipeline
@@ -323,7 +324,10 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa
            setPulsing(true)
            setPulsing(true)


            // WHEN we temporarily allow section changes for this notification entry
            // WHEN we temporarily allow section changes for this notification entry
            underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.currentTimeMillis())
            underTest.temporarilyAllowSectionChanges(
                entry,
                UseElapsedRealtimeForCreationTime.getCurrentTime(fakeSystemClock),
            )


            // THEN group changes aren't allowed
            // THEN group changes aren't allowed
            assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse()
            assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse()
@@ -349,7 +353,10 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa
            setPulsing(false)
            setPulsing(false)


            // WHEN we temporarily allow section changes for this notification entry
            // WHEN we temporarily allow section changes for this notification entry
            underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.uptimeMillis())
            underTest.temporarilyAllowSectionChanges(
                entry,
                UseElapsedRealtimeForCreationTime.getCurrentTime(fakeSystemClock),
            )


            // THEN the notification list is invalidated
            // THEN the notification list is invalidated
            verifyStabilityManagerWasInvalidated(times(1))
            verifyStabilityManagerWasInvalidated(times(1))
@@ -365,7 +372,10 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa
            setPulsing(false)
            setPulsing(false)


            // WHEN we temporarily allow section changes for this notification entry
            // WHEN we temporarily allow section changes for this notification entry
            underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.currentTimeMillis())
            underTest.temporarilyAllowSectionChanges(
                entry,
                UseElapsedRealtimeForCreationTime.getCurrentTime(fakeSystemClock),
            )


            // THEN invalidate is not called because this entry was never suppressed from reordering
            // THEN invalidate is not called because this entry was never suppressed from reordering
            verifyStabilityManagerWasInvalidated(never())
            verifyStabilityManagerWasInvalidated(never())
@@ -382,7 +392,10 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa
            assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue()
            assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue()


            // WHEN we temporarily allow section changes for this notification entry
            // WHEN we temporarily allow section changes for this notification entry
            underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.currentTimeMillis())
            underTest.temporarilyAllowSectionChanges(
                entry,
                UseElapsedRealtimeForCreationTime.getCurrentTime(fakeSystemClock),
            )


            // THEN invalidate is not called because this entry was never suppressed from
            // THEN invalidate is not called because this entry was never suppressed from
            // reordering;
            // reordering;
@@ -415,7 +428,10 @@ class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCa
            setPulsing(true)
            setPulsing(true)


            // WHEN we temporarily allow section changes for this notification entry
            // WHEN we temporarily allow section changes for this notification entry
            underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.currentTimeMillis())
            underTest.temporarilyAllowSectionChanges(
                entry,
                UseElapsedRealtimeForCreationTime.getCurrentTime(fakeSystemClock),
            )
            // can now reorder, so invalidates
            // can now reorder, so invalidates
            verifyStabilityManagerWasInvalidated(times(1))
            verifyStabilityManagerWasInvalidated(times(1))


+4 −2
Original line number Original line Diff line number Diff line
@@ -47,7 +47,6 @@ import android.database.ExecutorContentObserver;
import android.net.Uri;
import android.net.Uri;
import android.os.Looper;
import android.os.Looper;
import android.os.Process;
import android.os.Process;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManager;
import android.provider.Settings;
import android.provider.Settings;
@@ -78,6 +77,7 @@ import com.android.systemui.scene.shared.flag.SceneContainerFlag;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.UseElapsedRealtimeForCreationTime;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.row.shared.LockscreenOtpRedaction;
import com.android.systemui.statusbar.notification.row.shared.LockscreenOtpRedaction;
@@ -920,7 +920,9 @@ public class NotificationLockscreenUserManagerImpl implements
    // notification's "when" time, or the notification entry creation time
    // notification's "when" time, or the notification entry creation time
    private long getEarliestNotificationTime(NotificationEntry notif) {
    private long getEarliestNotificationTime(NotificationEntry notif) {
        long notifWhenWallClock = notif.getSbn().getNotification().getWhen();
        long notifWhenWallClock = notif.getSbn().getNotification().getWhen();
        long creationTimeDelta = SystemClock.uptimeMillis() - notif.getCreationTime();
        long creationTimeDelta = UseElapsedRealtimeForCreationTime.getCurrentTime()
                - notif.getCreationTime();

        long creationTimeWallClock = System.currentTimeMillis() - creationTimeDelta;
        long creationTimeWallClock = System.currentTimeMillis() - creationTimeDelta;
        return Math.min(notifWhenWallClock, creationTimeWallClock);
        return Math.min(notifWhenWallClock, creationTimeWallClock);
    }
    }
+1 −1
Original line number Original line Diff line number Diff line
@@ -34,7 +34,7 @@ public abstract class ListEntry extends PipelineEntry {
    }
    }


    /**
    /**
     * The SystemClock.uptimeMillis() when this object was created. In general, this means the
     * The SystemClock.elapsedRealtime() when this object was created. In general, this means the
     * moment when NotificationManager notifies our listener about the existence of this entry.
     * moment when NotificationManager notifies our listener about the existence of this entry.
     *
     *
     * This value will not change if the notification is updated, although it will change if the
     * This value will not change if the notification is updated, although it will change if the
Loading