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

Commit 6fb97506 authored by Danning Chen's avatar Danning Chen
Browse files

Keep the event information in EventIndex for at most 63 days instead of 64 days

Bug: 149758587
Bug: 146522621
Test: atest com.android.server.people.data.EventIndexTest
Change-Id: I0cae2a5c958d88aab9f76a7ee198fc2e6d69971c
parent cb7f6ffe
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ import java.util.function.Function;
 */
public class EventIndex {

    private static final int LONG_SIZE_BITS = 64;
    private static final int RETENTION_DAYS = 63;

    private static final int TIME_SLOT_ONE_DAY = 0;

@@ -202,7 +202,7 @@ public class EventIndex {
            updateEventBitmaps(currentTime);
            for (int slotType = 0; slotType < TIME_SLOT_TYPES_COUNT; slotType++) {
                int offset = diffTimeSlots(slotType, eventTime, currentTime);
                if (offset < LONG_SIZE_BITS) {
                if (offset < Long.SIZE) {
                    mEventBitmaps[slotType] |= (1L << offset);
                }
            }
@@ -236,12 +236,16 @@ public class EventIndex {
    private void updateEventBitmaps(long currentTimeMillis) {
        for (int slotType = 0; slotType < TIME_SLOT_TYPES_COUNT; slotType++) {
            int offset = diffTimeSlots(slotType, mLastUpdatedTime, currentTimeMillis);
            if (offset < LONG_SIZE_BITS) {
            if (offset < Long.SIZE) {
                mEventBitmaps[slotType] <<= offset;
            } else {
                mEventBitmaps[slotType] = 0L;
            }
        }

        int bitsToClear = Long.SIZE - RETENTION_DAYS;
        mEventBitmaps[TIME_SLOT_ONE_DAY] <<= bitsToClear;
        mEventBitmaps[TIME_SLOT_ONE_DAY] >>>= bitsToClear;
        mLastUpdatedTime = currentTimeMillis;
    }