Snapshot isolated storage feature flag at boot.
The currently requested feature flag value may lag behind what's
actually active for the current boot, so take a snapshot of the value
that's being used for the current boot.
Bug: 121195267
Test: manual
Change-Id: I969f1d9d385e7610b366df41d2c7728a596d114c
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index 8b1d3c6..9594a71 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -132,6 +132,8 @@
public static final String PROP_VIRTUAL_DISK = "persist.sys.virtual_disk";
/** {@hide} */
public static final String PROP_ISOLATED_STORAGE = "persist.sys.isolated_storage";
+ /** {@hide} */
+ public static final String PROP_ISOLATED_STORAGE_SNAPSHOT = "sys.isolated_storage_snapshot";
/** {@hide} */
public static final String PROP_FORCE_AUDIO = "persist.fw.force_audio";
@@ -1540,7 +1542,9 @@
/** {@hide} */
@TestApi
public static boolean hasIsolatedStorage() {
- return SystemProperties.getBoolean(PROP_ISOLATED_STORAGE, false);
+ // Prefer to use snapshot for current boot when available
+ return SystemProperties.getBoolean(PROP_ISOLATED_STORAGE_SNAPSHOT,
+ SystemProperties.getBoolean(PROP_ISOLATED_STORAGE, false));
}
/**
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index 6c62725..7adcaba 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -1504,6 +1504,10 @@
public StorageManagerService(Context context) {
sSelf = this;
+ // Snapshot feature flag used for this boot
+ SystemProperties.set(StorageManager.PROP_ISOLATED_STORAGE_SNAPSHOT, Boolean.toString(
+ SystemProperties.getBoolean(StorageManager.PROP_ISOLATED_STORAGE, false)));
+
mContext = context;
mCallbacks = new Callbacks(FgThread.get().getLooper());
mLockPatternUtils = new LockPatternUtils(mContext);