From f5699308bc41c39ccbb388feb00a248304f30c54 Mon Sep 17 00:00:00 2001 From: Vasu Nori Date: Fri, 7 Jan 2011 11:39:25 -0800 Subject: downloadmanager should use "files" dir - not "cache" dir to store its files data/data/com.android.providers.downlaods/cache is being used to store the downloaded files, when the user doesn't specify the destination path. but system seems to remove files from this dir EVEN when space is running low. bug:3324673 instead, let DownloadManager use data/data/com.android.providers.downlaods/files dir Downlaodmanager manages its space anyway. Change-Id: I2eb15570395a214477891f50f635fada0b466544 --- src/com/android/providers/downloads/DownloadThread.java | 4 ++-- src/com/android/providers/downloads/StorageManager.java | 10 ++++++++-- .../providers/downloads/DownloadManagerFunctionalTest.java | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index fefbe1d8..9aa0a309 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -270,8 +270,8 @@ public class DownloadThread extends Thread { reportProgress(state, innerState); if (Constants.LOGVV) { - Log.v(Constants.TAG, "downloaded " + innerState.mBytesSoFar + " for " - + mInfo.mUri); + Log.v(Constants.TAG, "downloaded " + innerState.mBytesSoFar + + ", file: " + mInfo.mFileName + ", uri: " + mInfo.mUri); } checkPausedOrCanceled(state); diff --git a/src/com/android/providers/downloads/StorageManager.java b/src/com/android/providers/downloads/StorageManager.java index d7d0a7ad..e17a3a39 100644 --- a/src/com/android/providers/downloads/StorageManager.java +++ b/src/com/android/providers/downloads/StorageManager.java @@ -89,7 +89,7 @@ class StorageManager { private StorageManager(Context context) { // constructor is private mContext = context; - mDownloadDataDir = context.getCacheDir(); + mDownloadDataDir = context.getFilesDir(); mExternalStorageDir = Environment.getExternalStorageDirectory(); mSystemCacheDir = Environment.getDownloadCacheDirectory(); startThreadToCleanupDatabaseAndPurgeFileSystem(); @@ -419,8 +419,14 @@ class StorageManager { int numDelete = cursor.getCount() - Constants.MAX_DOWNLOADS; int columnId = cursor.getColumnIndexOrThrow(Downloads.Impl._ID); while (numDelete > 0) { + long id = cursor.getLong(columnId); Uri downloadUri = ContentUris.withAppendedId( - Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, cursor.getLong(columnId)); + Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, id); + if (Constants.LOGV) { + Log.i(Constants.TAG, "in trimDatabase, deleing _id: " + id + + ", file: " + + cursor.getString(cursor.getColumnIndex(Downloads.Impl._DATA))); + } mContext.getContentResolver().delete(downloadUri, null, null); if (!cursor.moveToNext()) { break; diff --git a/tests/src/com/android/providers/downloads/DownloadManagerFunctionalTest.java b/tests/src/com/android/providers/downloads/DownloadManagerFunctionalTest.java index c3ac8904..fac905f8 100644 --- a/tests/src/com/android/providers/downloads/DownloadManagerFunctionalTest.java +++ b/tests/src/com/android/providers/downloads/DownloadManagerFunctionalTest.java @@ -65,7 +65,7 @@ public class DownloadManagerFunctionalTest extends AbstractDownloadManagerFuncti Integer.toString(Downloads.Impl.DESTINATION_CACHE_PARTITION)); runUntilStatus(downloadUri, Downloads.Impl.STATUS_SUCCESS); assertEquals(FILE_CONTENT, getDownloadContents(downloadUri)); - assertStartsWith(getContext().getCacheDir().getAbsolutePath(), + assertStartsWith(getContext().getFilesDir().getAbsolutePath(), getDownloadFilename(downloadUri)); } -- cgit v1.2.3