Loading services/core/java/com/android/server/notification/NotificationHistoryDatabase.java +6 −5 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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 Loading @@ -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(); Loading Loading @@ -133,7 +134,7 @@ public class NotificationHistoryDatabase { safeParseLong(lhs.getName()))); for (File file : files) { mHistoryFiles.addLast(new AtomicFile(file)); mHistoryFiles.add(new AtomicFile(file)); } } Loading Loading @@ -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); Loading services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java +14 −14 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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 Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading @@ -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); Loading Loading
services/core/java/com/android/server/notification/NotificationHistoryDatabase.java +6 −5 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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 Loading @@ -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(); Loading Loading @@ -133,7 +134,7 @@ public class NotificationHistoryDatabase { safeParseLong(lhs.getName()))); for (File file : files) { mHistoryFiles.addLast(new AtomicFile(file)); mHistoryFiles.add(new AtomicFile(file)); } } Loading Loading @@ -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); Loading
services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java +14 −14 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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 Loading @@ -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 Loading Loading @@ -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(); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading @@ -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); Loading