diff options
2 files changed, 8 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubblePersistentRepository.kt b/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubblePersistentRepository.kt index 7c3271e4b76c..5b4d8c71e5c0 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubblePersistentRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubblePersistentRepository.kt @@ -54,6 +54,7 @@ class BubblePersistentRepository @Inject constructor( fun readFromDisk(): List<BubbleEntity> { synchronized(bubbleFile) { + if (!bubbleFile.exists()) return emptyList() try { return bubbleFile.openRead().use(::readXml) } catch (e: Throwable) { Log.e(TAG, "Failed to open bubble file", e) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/storage/BubblePersistentRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/bubbles/storage/BubblePersistentRepositoryTest.kt index 2aed75e6519f..1d02b8dba910 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/storage/BubblePersistentRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/storage/BubblePersistentRepositoryTest.kt @@ -20,6 +20,8 @@ import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import junit.framework.Assert.assertEquals +import junit.framework.Assert.assertNotNull +import junit.framework.Assert.assertTrue import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -42,6 +44,11 @@ class BubblePersistentRepositoryTest : SysuiTestCase() { @Test fun testReadWriteOperation() { + // Verify read before write doesn't cause FileNotFoundException + val actual = repository.readFromDisk() + assertNotNull(actual) + assertTrue(actual.isEmpty()) + repository.persistsToDisk(bubbles) assertEquals(bubbles, repository.readFromDisk()) } |