Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 312fffa4 authored by Garfield Tan's avatar Garfield Tan
Browse files

Avoid making the user ID dir under system_ce in ATMS

The parent directory of recent_images (system_ce/<user_id>) is managed
by other system services, and isn't available until the corresponding
user is fully unlocked. Avoid trying to make that folder if that doesn't
exist.

Also fail the directory creation if it isn't a directory, and we can't
create it for recent_images.

Bug: 288146194
Test: Recent images and launch params folders are still created when
necessary.
Test: atest LaunchParamsPersisterTests

Change-Id: I7e8e3167e3aea60f6426e5ca3571e3fb1dad98e0
parent d3813b18
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -433,7 +433,7 @@ class LaunchParamsPersister {
            final byte[] data = saveParamsToXml();

            final File launchParamFolder = getLaunchParamFolder(mUserId);
            if (!launchParamFolder.isDirectory() && !launchParamFolder.mkdirs()) {
            if (!launchParamFolder.isDirectory() && !launchParamFolder.mkdir()) {
                Slog.w(TAG, "Failed to create folder for " + mUserId);
                return;
            }
+1 −1
Original line number Diff line number Diff line
@@ -509,7 +509,7 @@ public class TaskPersister implements PersisterQueue.Listener {

    private static boolean createParentDirectory(String filePath) {
        File parentDir = new File(filePath).getParentFile();
        return parentDir.exists() || parentDir.mkdirs();
        return parentDir.isDirectory() || parentDir.mkdir();
    }

    private static class TaskWriteQueueItem implements PersisterQueue.WriteQueueItem {
+3 −0
Original line number Diff line number Diff line
@@ -107,6 +107,9 @@ public class LaunchParamsPersisterTests extends WindowTestsBase {
                InstrumentationRegistry.getInstrumentation().getContext().getCacheDir();
        mFolder = new File(cacheFolder, "launch_params_tests");
        deleteRecursively(mFolder);
        mFolder.mkdir();
        mUserFolderGetter.apply(TEST_USER_ID).mkdir();
        mUserFolderGetter.apply(ALTERNATIVE_USER_ID).mkdir();

        mDisplayUniqueId = "test:" + sNextUniqueId++;
        mTestDisplay = new TestDisplayContent.Builder(mAtm, 1000, 1500)