Chromium Code Reviews| Index: base/android/java/src/org/chromium/base/PathUtils.java |
| diff --git a/base/android/java/src/org/chromium/base/PathUtils.java b/base/android/java/src/org/chromium/base/PathUtils.java |
| index 09c3b082409a052df102c591c3d69709969f1345..991ec25aa87cd9408a706619dc808dcc4a9d3c83 100644 |
| --- a/base/android/java/src/org/chromium/base/PathUtils.java |
| +++ b/base/android/java/src/org/chromium/base/PathUtils.java |
| @@ -10,6 +10,7 @@ import android.os.AsyncTask; |
| import android.os.Environment; |
| import android.os.StrictMode; |
| import android.os.SystemClock; |
| +import android.support.annotation.WorkerThread; |
| import org.chromium.base.annotations.CalledByNative; |
| import org.chromium.base.annotations.MainDex; |
| @@ -33,6 +34,7 @@ public abstract class PathUtils { |
| private static AsyncTask<String, Void, String[]> sDirPathFetchTask; |
| private static File sThumbnailDirectory; |
| + private static Object sLazyInitLock = new Object(); |
|
gone
2016/02/18 17:45:35
private static final? Can't imagine ever recreati
agrieve
2016/02/23 21:28:38
Deleted in favour of using sDirPathFetchTask
|
| // Prevent instantiation. |
| private PathUtils() {} |
| @@ -103,18 +105,18 @@ public abstract class PathUtils { |
| return getDirectoryPath(CACHE_DIRECTORY); |
| } |
| + @WorkerThread |
| public static File getThumbnailCacheDirectory(Context appContext) { |
| + ThreadUtils.assertOnFileThread(); |
| if (sThumbnailDirectory == null) { |
| - // Temporarily allowing disk access while fixing. TODO: http://crbug.com/473356 |
| - StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); |
| - StrictMode.allowThreadDiskWrites(); |
| - try { |
| - long time = SystemClock.elapsedRealtime(); |
| - sThumbnailDirectory = appContext.getDir(THUMBNAIL_DIRECTORY, Context.MODE_PRIVATE); |
| - RecordHistogram.recordTimesHistogram("Android.StrictMode.ThumbnailCacheDir", |
| - SystemClock.elapsedRealtime() - time, TimeUnit.MILLISECONDS); |
| - } finally { |
| - StrictMode.setThreadPolicy(oldPolicy); |
| + synchronized (sLazyInitLock) { |
| + if (sThumbnailDirectory == null) { |
| + long time = SystemClock.elapsedRealtime(); |
| + sThumbnailDirectory = |
| + appContext.getDir(THUMBNAIL_DIRECTORY, Context.MODE_PRIVATE); |
| + RecordHistogram.recordTimesHistogram("Android.StrictMode.ThumbnailCacheDir", |
| + SystemClock.elapsedRealtime() - time, TimeUnit.MILLISECONDS); |
| + } |
| } |
| } |
| return sThumbnailDirectory; |