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

Commit 4e2d3be3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Replace LinkedList by a more performant collection"

parents 62b5f7f9 bd51a96e
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -40,11 +40,12 @@ import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

/**
@@ -76,7 +77,7 @@ public class NotificationHistoryDatabase {
    private final Handler mFileWriteHandler;
    @VisibleForTesting
    // List of files holding history information, sorted newest to oldest
    final LinkedList<AtomicFile> mHistoryFiles;
    final List<AtomicFile> mHistoryFiles;
    private final File mHistoryDir;
    private final File mVersionFile;
    // Current version of the database files schema
@@ -94,7 +95,7 @@ public class NotificationHistoryDatabase {
        mFileWriteHandler = fileWriteHandler;
        mVersionFile = new File(dir, "version");
        mHistoryDir = new File(dir, "history");
        mHistoryFiles = new LinkedList<>();
        mHistoryFiles = new ArrayList<>();
        mBuffer = new NotificationHistory();
        mWriteBufferRunnable = new WriteBufferRunnable();

@@ -133,7 +134,7 @@ public class NotificationHistoryDatabase {
                safeParseLong(lhs.getName())));

        for (File file : files) {
            mHistoryFiles.addLast(new AtomicFile(file));
            mHistoryFiles.add(new AtomicFile(file));
        }
    }

@@ -411,7 +412,7 @@ public class NotificationHistoryDatabase {
                        + file.getBaseFile().getAbsolutePath());
                try {
                    writeLocked(file, mBuffer);
                    mHistoryFiles.addFirst(file);
                    mHistoryFiles.add(0, file);
                    mBuffer = new NotificationHistory();

                    scheduleDeletion(file.getBaseFile(), time, HISTORY_RETENTION_DAYS);
+14 −14
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {
            when(file.getAbsolutePath()).thenReturn(String.valueOf(i));
            AtomicFile af = new AtomicFile(file);
            expectedFiles.add(af);
            mDataBase.mHistoryFiles.addLast(af);
            mDataBase.mHistoryFiles.add(af);
        }

        cal.add(Calendar.DATE, -1 * retainDays);
@@ -136,7 +136,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {
            when(file.getName()).thenReturn(String.valueOf(cal.getTimeInMillis() - i));
            when(file.getAbsolutePath()).thenReturn(String.valueOf(cal.getTimeInMillis() - i));
            AtomicFile af = new AtomicFile(file);
            mDataBase.mHistoryFiles.addLast(af);
            mDataBase.mHistoryFiles.add(af);
        }

        // back to today; trim everything a day + old
@@ -162,7 +162,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {
            when(file.getName()).thenReturn(i + ".bak");
            when(file.getAbsolutePath()).thenReturn(i + ".bak");
            AtomicFile af = new AtomicFile(file);
            mDataBase.mHistoryFiles.addLast(af);
            mDataBase.mHistoryFiles.add(af);
        }

        // trim everything a day+ old
@@ -224,7 +224,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {
    public void testReadNotificationHistory_readsAllFiles() throws Exception {
        for (long i = 10; i >= 5; i--) {
            AtomicFile af = mock(AtomicFile.class);
            mDataBase.mHistoryFiles.addLast(af);
            mDataBase.mHistoryFiles.add(af);
        }

        mDataBase.readNotificationHistory();
@@ -248,11 +248,11 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {
    public void testReadNotificationHistory_withNumFilterDoesNotReadExtraFiles() throws Exception {
        AtomicFile af = mock(AtomicFile.class);
        when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
        mDataBase.mHistoryFiles.addLast(af);
        mDataBase.mHistoryFiles.add(af);

        AtomicFile af2 = mock(AtomicFile.class);
        when(af2.getBaseFile()).thenReturn(new File(mRootDir, "af2"));
        mDataBase.mHistoryFiles.addLast(af2);
        mDataBase.mHistoryFiles.add(af2);

        mDataBase.readNotificationHistory(null, null, 0);

@@ -269,7 +269,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {

        AtomicFile af = mock(AtomicFile.class);
        when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
        mDataBase.mHistoryFiles.addLast(af);
        mDataBase.mHistoryFiles.add(af);

        when(nh.removeNotificationFromWrite("pkg", 123)).thenReturn(true);

@@ -292,7 +292,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {

        AtomicFile af = mock(AtomicFile.class);
        when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
        mDataBase.mHistoryFiles.addLast(af);
        mDataBase.mHistoryFiles.add(af);

        when(nh.removeNotificationFromWrite("pkg", 123)).thenReturn(false);

@@ -315,7 +315,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {

        AtomicFile af = mock(AtomicFile.class);
        when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
        mDataBase.mHistoryFiles.addLast(af);
        mDataBase.mHistoryFiles.add(af);

        when(nh.removeConversationsFromWrite("pkg", Set.of("convo", "another"))).thenReturn(true);

@@ -338,7 +338,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {

        AtomicFile af = mock(AtomicFile.class);
        when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
        mDataBase.mHistoryFiles.addLast(af);
        mDataBase.mHistoryFiles.add(af);

        when(nh.removeConversationsFromWrite("pkg", Set.of("convo"))).thenReturn(false);

@@ -361,7 +361,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {

        AtomicFile af = mock(AtomicFile.class);
        when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
        mDataBase.mHistoryFiles.addLast(af);
        mDataBase.mHistoryFiles.add(af);

        when(nh.removeChannelFromWrite("pkg", "channel")).thenReturn(true);

@@ -384,7 +384,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {

        AtomicFile af = mock(AtomicFile.class);
        when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
        mDataBase.mHistoryFiles.addLast(af);
        mDataBase.mHistoryFiles.add(af);

        when(nh.removeChannelFromWrite("pkg", "channel")).thenReturn(false);

@@ -424,7 +424,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {
        for (int i = 0; i < 5; i++) {
            AtomicFile af = mock(AtomicFile.class);
            when(af.getBaseFile()).thenReturn(new File(mRootDir, "af" + i));
            mDataBase.mHistoryFiles.addLast(af);
            mDataBase.mHistoryFiles.add(af);
        }
        // Baseline size of history files
        assertThat(mDataBase.mHistoryFiles.size()).isEqualTo(5);
@@ -440,7 +440,7 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {
        for (int i = 0; i < 5; i++) {
            AtomicFile af = mock(AtomicFile.class);
            when(af.getBaseFile()).thenReturn(new File(mRootDir, "af" + i));
            mDataBase.mHistoryFiles.addLast(af);
            mDataBase.mHistoryFiles.add(af);
        }
        // Baseline size of history files
        assertThat(mDataBase.mHistoryFiles.size()).isEqualTo(5);