From 54a16f059040d8680b71e2e962fb438c993b674b Mon Sep 17 00:00:00 2001 From: Andrew Stadler Date: Thu, 23 Jul 2009 20:00:08 -0700 Subject: Add getCacheDir() to RenamingDelegatingContext. This allows providers under ProviderTestCase2 to access getCacheDir(). --- .../android/test/RenamingDelegatingContext.java | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'test-runner') diff --git a/test-runner/android/test/RenamingDelegatingContext.java b/test-runner/android/test/RenamingDelegatingContext.java index d780502..0ea43ab 100644 --- a/test-runner/android/test/RenamingDelegatingContext.java +++ b/test-runner/android/test/RenamingDelegatingContext.java @@ -6,6 +6,8 @@ import android.content.Context; import android.content.ContextWrapper; import android.content.ContentProvider; import android.database.sqlite.SQLiteDatabase; +import android.os.FileUtils; +import android.util.Log; import java.io.File; import java.io.FileInputStream; @@ -22,6 +24,8 @@ public class RenamingDelegatingContext extends ContextWrapper { private Context mFileContext; private String mFilePrefix = null; + private File mCacheDir; + private final Object mSync = new Object(); private Set mDatabaseNames = Sets.newHashSet(); private Set mFileNames = Sets.newHashSet(); @@ -184,6 +188,32 @@ public class RenamingDelegatingContext extends ContextWrapper { public String[] fileList() { return mFileNames.toArray(new String[]{}); } + + /** + * In order to support calls to getCacheDir(), we create a temp cache dir (inside the real + * one) and return it instead. This code is basically getCacheDir(), except it uses the real + * cache dir as the parent directory and creates a test cache dir inside that. + */ + @Override + public File getCacheDir() { + synchronized (mSync) { + if (mCacheDir == null) { + mCacheDir = new File(mFileContext.getCacheDir(), renamedFileName("cache")); + } + if (!mCacheDir.exists()) { + if(!mCacheDir.mkdirs()) { + Log.w("RenamingDelegatingContext", "Unable to create cache directory"); + return null; + } + FileUtils.setPermissions( + mCacheDir.getPath(), + FileUtils.S_IRWXU|FileUtils.S_IRWXG|FileUtils.S_IXOTH, + -1, -1); + } + } + return mCacheDir; + } + // /** // * Given an array of files returns only those whose names indicate that they belong to this -- cgit v1.1