From 4a2b119f142f1cc00205c3e1454b36bd937514d7 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 27 Jun 2016 17:43:15 -0600 Subject: [PATCH] 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 --- core/java/android/app/ContextImpl.java | 42 +++++--------------------- 1 file changed, 7 insertions(+), 35 deletions(-) diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index e6ca520720799..8f424676dbe50 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -185,15 +185,6 @@ class ContextImpl extends Context { @GuardedBy("mSync") 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. final Object[] mServiceCache = SystemServiceRegistry.createServiceCache(); @@ -562,17 +553,10 @@ class ContextImpl extends Context { @Override public File[] getExternalFilesDirs(String type) { synchronized (mSync) { - if (mExternalFilesDirs == null) { - mExternalFilesDirs = Environment.buildExternalStorageAppFilesDirs(getPackageName()); - } - - // Splice in requested type, if any - File[] dirs = mExternalFilesDirs; + File[] dirs = Environment.buildExternalStorageAppFilesDirs(getPackageName()); if (type != null) { dirs = Environment.buildPaths(dirs, type); } - - // Create dirs if needed return ensureExternalDirsExistOrFilter(dirs); } } @@ -586,12 +570,8 @@ class ContextImpl extends Context { @Override public File[] getObbDirs() { synchronized (mSync) { - if (mExternalObbDirs == null) { - mExternalObbDirs = Environment.buildExternalStorageAppObbDirs(getPackageName()); - } - - // Create dirs if needed - return ensureExternalDirsExistOrFilter(mExternalObbDirs); + File[] dirs = Environment.buildExternalStorageAppObbDirs(getPackageName()); + return ensureExternalDirsExistOrFilter(dirs); } } @@ -624,24 +604,16 @@ class ContextImpl extends Context { @Override public File[] getExternalCacheDirs() { synchronized (mSync) { - if (mExternalCacheDirs == null) { - mExternalCacheDirs = Environment.buildExternalStorageAppCacheDirs(getPackageName()); - } - - // Create dirs if needed - return ensureExternalDirsExistOrFilter(mExternalCacheDirs); + File[] dirs = Environment.buildExternalStorageAppCacheDirs(getPackageName()); + return ensureExternalDirsExistOrFilter(dirs); } } @Override public File[] getExternalMediaDirs() { synchronized (mSync) { - if (mExternalMediaDirs == null) { - mExternalMediaDirs = Environment.buildExternalStorageAppMediaDirs(getPackageName()); - } - - // Create dirs if needed - return ensureExternalDirsExistOrFilter(mExternalMediaDirs); + File[] dirs = Environment.buildExternalStorageAppMediaDirs(getPackageName()); + return ensureExternalDirsExistOrFilter(dirs); } }