Don't touch system_ce until the first user unlock.
This CL does the following things:
1) Only start PersistQueue when the first user unlocked.
2) Only create recent task folder when we need to write the first file
to it.
Bug: 124697664
Test: Manual test -- checked recent_tasks, recent_images and
launch_params folders are still created correctly. No encryption policy
log seen.
Change-Id: I5b8bf712a3c45092b463622731d58f90d76fec58
diff --git a/services/core/java/com/android/server/wm/TaskPersister.java b/services/core/java/com/android/server/wm/TaskPersister.java
index d50af38..06bdcc0 100644
--- a/services/core/java/com/android/server/wm/TaskPersister.java
+++ b/services/core/java/com/android/server/wm/TaskPersister.java
@@ -492,16 +492,8 @@
return new File(userTaskIdsDir, PERSISTED_TASK_IDS_FILENAME);
}
- static File getUserTasksDir(int userId) {
- File userTasksDir = new File(Environment.getDataSystemCeDirectory(userId), TASKS_DIRNAME);
-
- if (!userTasksDir.exists()) {
- if (!userTasksDir.mkdir()) {
- Slog.e(TAG, "Failure creating tasks directory for user " + userId + ": "
- + userTasksDir);
- }
- }
- return userTasksDir;
+ private static File getUserTasksDir(int userId) {
+ return new File(Environment.getDataSystemCeDirectory(userId), TASKS_DIRNAME);
}
static File getUserImagesDir(int userId) {
@@ -568,8 +560,13 @@
FileOutputStream file = null;
AtomicFile atomicFile = null;
try {
- atomicFile = new AtomicFile(new File(
- getUserTasksDir(task.userId),
+ File userTasksDir = getUserTasksDir(task.userId);
+ if (!userTasksDir.isDirectory() && !userTasksDir.mkdirs()) {
+ Slog.e(TAG, "Failure creating tasks directory for user " + task.userId
+ + ": " + userTasksDir + " Dropping persistence for task " + task);
+ return;
+ }
+ atomicFile = new AtomicFile(new File(userTasksDir,
String.valueOf(task.taskId) + TASK_FILENAME_SUFFIX));
file = atomicFile.startWrite();
file.write(stringWriter.toString().getBytes());