Merge "[UserFileManager] Ensure parent exists." into tm-qpr-dev
This commit is contained in:
@@ -49,8 +49,8 @@ class UserFileManagerImpl @Inject constructor(
|
|||||||
) : UserFileManager, CoreStartable(context) {
|
) : UserFileManager, CoreStartable(context) {
|
||||||
companion object {
|
companion object {
|
||||||
private const val FILES = "files"
|
private const val FILES = "files"
|
||||||
private const val SHARED_PREFS = "shared_prefs"
|
@VisibleForTesting internal const val SHARED_PREFS = "shared_prefs"
|
||||||
internal const val ID = "UserFileManager"
|
@VisibleForTesting internal const val ID = "UserFileManager"
|
||||||
}
|
}
|
||||||
|
|
||||||
private val broadcastReceiver = object : BroadcastReceiver() {
|
private val broadcastReceiver = object : BroadcastReceiver() {
|
||||||
@@ -85,13 +85,15 @@ class UserFileManagerImpl @Inject constructor(
|
|||||||
fileName
|
fileName
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Environment.buildPath(
|
val secondaryFile = Environment.buildPath(
|
||||||
context.filesDir,
|
context.filesDir,
|
||||||
ID,
|
ID,
|
||||||
userId.toString(),
|
userId.toString(),
|
||||||
FILES,
|
FILES,
|
||||||
fileName
|
fileName
|
||||||
)
|
)
|
||||||
|
ensureParentDirExists(secondaryFile)
|
||||||
|
secondaryFile
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,6 +116,7 @@ class UserFileManagerImpl @Inject constructor(
|
|||||||
fileName
|
fileName
|
||||||
)
|
)
|
||||||
|
|
||||||
|
ensureParentDirExists(secondaryUserDir)
|
||||||
return context.getSharedPreferences(secondaryUserDir, mode)
|
return context.getSharedPreferences(secondaryUserDir, mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,4 +144,18 @@ class UserFileManagerImpl @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks to see if parent dir of the file exists. If it does not, we create the parent dirs
|
||||||
|
* recursively.
|
||||||
|
*/
|
||||||
|
@VisibleForTesting
|
||||||
|
internal fun ensureParentDirExists(file: File) {
|
||||||
|
val parent = file.parentFile
|
||||||
|
if (!parent.exists()) {
|
||||||
|
if (!parent.mkdirs()) {
|
||||||
|
Log.e(ID, "Could not create parent directory for file: ${file.absolutePath}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import com.android.systemui.util.mockito.eq
|
|||||||
import com.android.systemui.util.time.FakeSystemClock
|
import com.android.systemui.util.time.FakeSystemClock
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import java.util.concurrent.Executor
|
import java.util.concurrent.Executor
|
||||||
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -62,6 +63,14 @@ class UserFileManagerImplTest : SysuiTestCase() {
|
|||||||
broadcastDispatcher, backgroundExecutor)
|
broadcastDispatcher, backgroundExecutor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
fun end() {
|
||||||
|
val dir = Environment.buildPath(
|
||||||
|
context.filesDir,
|
||||||
|
UserFileManagerImpl.ID)
|
||||||
|
dir.deleteRecursively()
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testGetFile() {
|
fun testGetFile() {
|
||||||
assertThat(userFileManager.getFile(TEST_FILE_NAME, 0).path)
|
assertThat(userFileManager.getFile(TEST_FILE_NAME, 0).path)
|
||||||
@@ -72,8 +81,19 @@ class UserFileManagerImplTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testGetSharedPreferences() {
|
fun testGetSharedPreferences() {
|
||||||
|
val secondarySharedPref = userFileManager.getSharedPreferences(TEST_FILE_NAME, 0, 11)
|
||||||
|
val secondaryUserDir = Environment.buildPath(
|
||||||
|
context.filesDir,
|
||||||
|
UserFileManagerImpl.ID,
|
||||||
|
"11",
|
||||||
|
UserFileManagerImpl.SHARED_PREFS,
|
||||||
|
TEST_FILE_NAME
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(secondarySharedPref).isNotNull()
|
||||||
|
assertThat(secondaryUserDir.exists())
|
||||||
assertThat(userFileManager.getSharedPreferences(TEST_FILE_NAME, 0, 0))
|
assertThat(userFileManager.getSharedPreferences(TEST_FILE_NAME, 0, 0))
|
||||||
.isNotEqualTo(userFileManager.getSharedPreferences(TEST_FILE_NAME, 0, 11))
|
.isNotEqualTo(secondarySharedPref)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -115,6 +135,19 @@ class UserFileManagerImplTest : SysuiTestCase() {
|
|||||||
verify(userManager).aliveUsers
|
verify(userManager).aliveUsers
|
||||||
assertThat(secondaryUserDir.exists()).isFalse()
|
assertThat(secondaryUserDir.exists()).isFalse()
|
||||||
assertThat(file.exists()).isFalse()
|
assertThat(file.exists()).isFalse()
|
||||||
dir.deleteRecursively()
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testEnsureParentDirExists() {
|
||||||
|
val file = Environment.buildPath(
|
||||||
|
context.filesDir,
|
||||||
|
UserFileManagerImpl.ID,
|
||||||
|
"11",
|
||||||
|
"files",
|
||||||
|
TEST_FILE_NAME
|
||||||
|
)
|
||||||
|
assertThat(file.parentFile.exists()).isFalse()
|
||||||
|
userFileManager.ensureParentDirExists(file)
|
||||||
|
assertThat(file.parentFile.exists()).isTrue()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user