summaryrefslogtreecommitdiff
path: root/core/java/android/app/ContextImpl.java
diff options
context:
space:
mode:
authorFelka Chang <felkachang@google.com>2019-11-19 15:06:52 +0800
committerFelka Chang <felkachang@google.com>2019-12-16 09:52:12 +0800
commit0d824d4161ee582e6a4ca518ed262a0ca68bbef5 (patch)
tree44665f4073411909068b242728f7acdc467263df /core/java/android/app/ContextImpl.java
parent70b60797305e68d001a7f5f9a6c6afa634deab4d (diff)
Add the root of crates by Context.getCrateDir
Context.getCrateDir() creates and returns the File for the root of the crates for the application context. Any child directories under the crates root in Context.getDataFile() is called the crate directory. For example: /data/user/0/com.exmaple.app/crates/IAmCratedFolder/decentFiles /data/user/0/com.exmaple.app/crates/IAmCratedFolder/decentDirs Context.getCrateDir return the crate dir --> /data/user/0/com.exmaple.app/crates/IAmCratedFolder The crate dir --> IAmCratedFolder The decent directories or files are not crated folders --> decentFiles, decentDirs Test: atest CtsOsTestCases:android.os.storage.cts.StorageCrateTest Bug: 141660526 Change-Id: If3ec1e121fb8f72bab5571d6190378e3ae208832
Diffstat (limited to 'core/java/android/app/ContextImpl.java')
-rw-r--r--core/java/android/app/ContextImpl.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 46f88d5c81e4..155e93f9be19 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -99,6 +99,7 @@ import java.io.InputStream;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.nio.ByteOrder;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Objects;
import java.util.concurrent.Executor;
@@ -251,6 +252,8 @@ class ContextImpl extends Context {
@GuardedBy("mSync")
private File mFilesDir;
@GuardedBy("mSync")
+ private File mCratesDir;
+ @GuardedBy("mSync")
private File mNoBackupFilesDir;
@GuardedBy("mSync")
private File mCacheDir;
@@ -702,6 +705,24 @@ class ContextImpl extends Context {
}
@Override
+ public File getCrateDir(@NonNull String crateId) {
+ Preconditions.checkArgument(FileUtils.isValidExtFilename(crateId), "invalidated crateId");
+ final Path cratesRootPath = getDataDir().toPath().resolve("crates");
+ final Path absoluteNormalizedCratePath = cratesRootPath.resolve(crateId)
+ .toAbsolutePath().normalize();
+
+ synchronized (mSync) {
+ if (mCratesDir == null) {
+ mCratesDir = cratesRootPath.toFile();
+ }
+ ensurePrivateDirExists(mCratesDir);
+ }
+
+ File cratedDir = absoluteNormalizedCratePath.toFile();
+ return ensurePrivateDirExists(cratedDir);
+ }
+
+ @Override
public File getNoBackupFilesDir() {
synchronized (mSync) {
if (mNoBackupFilesDir == null) {