Merge "Handle malnamed files in history dir" into rvc-dev am: cb83004e12 am: 0c26ad0650 am: 1dbba12ad7 am: 72b6619803

Change-Id: If068e4a059fd4663cd4763ffe4e57abe8dc6b26a
This commit is contained in:
Julia Reynolds
2020-04-03 14:50:58 +00:00
committed by Automerger Merge Worker
2 changed files with 45 additions and 13 deletions

View File

@@ -250,26 +250,36 @@ public class NotificationHistoryDatabase {
for (int i = mHistoryFiles.size() - 1; i >= 0; i--) {
final AtomicFile currentOldestFile = mHistoryFiles.get(i);
final long creationTime = Long.parseLong(currentOldestFile.getBaseFile().getName());
if (DEBUG) {
Slog.d(TAG, "File " + currentOldestFile.getBaseFile().getName()
+ " created on " + creationTime);
}
if (creationTime <= retentionBoundary.getTimeInMillis()) {
try {
final long creationTime = Long.parseLong(
currentOldestFile.getBaseFile().getName());
if (DEBUG) {
Slog.d(TAG, "Removed " + currentOldestFile.getBaseFile().getName());
Slog.d(TAG, "File " + currentOldestFile.getBaseFile().getName()
+ " created on " + creationTime);
}
currentOldestFile.delete();
// TODO: delete all relevant bitmaps, once they exist
mHistoryFiles.removeLast();
} else {
// all remaining files are newer than the cut off; schedule jobs to delete
scheduleDeletion(currentOldestFile.getBaseFile(), creationTime, retentionDays);
if (creationTime <= retentionBoundary.getTimeInMillis()) {
deleteFile(currentOldestFile);
} else {
// all remaining files are newer than the cut off; schedule jobs to delete
scheduleDeletion(
currentOldestFile.getBaseFile(), creationTime, retentionDays);
}
} catch (NumberFormatException e) {
deleteFile(currentOldestFile);
}
}
}
}
private void deleteFile(AtomicFile file) {
if (DEBUG) {
Slog.d(TAG, "Removed " + file.getBaseFile().getName());
}
file.delete();
// TODO: delete all relevant bitmaps, once they exist
mHistoryFiles.removeLast();
}
private void scheduleDeletion(File file, long creationTime, int retentionDays) {
final long deletionTime = creationTime + (retentionDays * HISTORY_RETENTION_MS);
scheduleDeletion(file, deletionTime);

View File

@@ -146,7 +146,29 @@ public class NotificationHistoryDatabaseTest extends UiServiceTestCase {
assertThat(mDataBase.mHistoryFiles).containsExactlyElementsIn(expectedFiles);
verify(mAlarmManager, times(6)).setExactAndAllowWhileIdle(anyInt(), anyLong(), any());
}
@Test
public void testPrune_badFileName() {
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis(10);
int retainDays = 1;
List<AtomicFile> expectedFiles = new ArrayList<>();
// add 5 files with a creation date of "today", but the file names are bad
for (long i = cal.getTimeInMillis(); i >= 5; i--) {
File file = mock(File.class);
when(file.getName()).thenReturn(i + ".txt");
AtomicFile af = new AtomicFile(file);
mDataBase.mHistoryFiles.addLast(af);
}
// trim everything a day+ old
cal.add(Calendar.DATE, 1 * retainDays);
mDataBase.prune(retainDays, cal.getTimeInMillis());
assertThat(mDataBase.mHistoryFiles).containsExactlyElementsIn(expectedFiles);
}
@Test