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

Commit 4a2b119f authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Don't cache external storage directories.

External storage paths can change over time as the user inserts or
formats media, we can't cache the directories in ContextImpl.

Bug: 29496175
Change-Id: Ib656a5e525cf03669022c50f68ef50b7ad872caf
parent b59b5a67
Loading
Loading
Loading
Loading
+7 −35
Original line number Original line Diff line number Diff line
@@ -185,15 +185,6 @@ class ContextImpl extends Context {
    @GuardedBy("mSync")
    @GuardedBy("mSync")
    private File mCodeCacheDir;
    private File mCodeCacheDir;


    @GuardedBy("mSync")
    private File[] mExternalObbDirs;
    @GuardedBy("mSync")
    private File[] mExternalFilesDirs;
    @GuardedBy("mSync")
    private File[] mExternalCacheDirs;
    @GuardedBy("mSync")
    private File[] mExternalMediaDirs;

    // The system service cache for the system services that are cached per-ContextImpl.
    // The system service cache for the system services that are cached per-ContextImpl.
    final Object[] mServiceCache = SystemServiceRegistry.createServiceCache();
    final Object[] mServiceCache = SystemServiceRegistry.createServiceCache();


@@ -562,17 +553,10 @@ class ContextImpl extends Context {
    @Override
    @Override
    public File[] getExternalFilesDirs(String type) {
    public File[] getExternalFilesDirs(String type) {
        synchronized (mSync) {
        synchronized (mSync) {
            if (mExternalFilesDirs == null) {
            File[] dirs = Environment.buildExternalStorageAppFilesDirs(getPackageName());
                mExternalFilesDirs = Environment.buildExternalStorageAppFilesDirs(getPackageName());
            }

            // Splice in requested type, if any
            File[] dirs = mExternalFilesDirs;
            if (type != null) {
            if (type != null) {
                dirs = Environment.buildPaths(dirs, type);
                dirs = Environment.buildPaths(dirs, type);
            }
            }

            // Create dirs if needed
            return ensureExternalDirsExistOrFilter(dirs);
            return ensureExternalDirsExistOrFilter(dirs);
        }
        }
    }
    }
@@ -586,12 +570,8 @@ class ContextImpl extends Context {
    @Override
    @Override
    public File[] getObbDirs() {
    public File[] getObbDirs() {
        synchronized (mSync) {
        synchronized (mSync) {
            if (mExternalObbDirs == null) {
            File[] dirs = Environment.buildExternalStorageAppObbDirs(getPackageName());
                mExternalObbDirs = Environment.buildExternalStorageAppObbDirs(getPackageName());
            return ensureExternalDirsExistOrFilter(dirs);
            }

            // Create dirs if needed
            return ensureExternalDirsExistOrFilter(mExternalObbDirs);
        }
        }
    }
    }


@@ -624,24 +604,16 @@ class ContextImpl extends Context {
    @Override
    @Override
    public File[] getExternalCacheDirs() {
    public File[] getExternalCacheDirs() {
        synchronized (mSync) {
        synchronized (mSync) {
            if (mExternalCacheDirs == null) {
            File[] dirs = Environment.buildExternalStorageAppCacheDirs(getPackageName());
                mExternalCacheDirs = Environment.buildExternalStorageAppCacheDirs(getPackageName());
            return ensureExternalDirsExistOrFilter(dirs);
            }

            // Create dirs if needed
            return ensureExternalDirsExistOrFilter(mExternalCacheDirs);
        }
        }
    }
    }


    @Override
    @Override
    public File[] getExternalMediaDirs() {
    public File[] getExternalMediaDirs() {
        synchronized (mSync) {
        synchronized (mSync) {
            if (mExternalMediaDirs == null) {
            File[] dirs = Environment.buildExternalStorageAppMediaDirs(getPackageName());
                mExternalMediaDirs = Environment.buildExternalStorageAppMediaDirs(getPackageName());
            return ensureExternalDirsExistOrFilter(dirs);
            }

            // Create dirs if needed
            return ensureExternalDirsExistOrFilter(mExternalMediaDirs);
        }
        }
    }
    }