diff options
Diffstat (limited to 'test-runner/android/test/RenamingDelegatingContext.java')
-rw-r--r-- | test-runner/android/test/RenamingDelegatingContext.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test-runner/android/test/RenamingDelegatingContext.java b/test-runner/android/test/RenamingDelegatingContext.java index 3f64340..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<String> mDatabaseNames = Sets.newHashSet(); private Set<String> mFileNames = Sets.newHashSet(); @@ -136,6 +140,11 @@ public class RenamingDelegatingContext extends ContextWrapper { return false; } } + + @Override + public File getDatabasePath(String name) { + return mFileContext.getDatabasePath(renamedFileName(name)); + } @Override public String[] databaseList() { @@ -179,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 |