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; |