From b3ae94915d68e4c3f325ea02bab32d00cccb4f1a Mon Sep 17 00:00:00 2001 From: Vasu Nori Date: Fri, 29 Oct 2010 13:34:14 -0700 Subject: make sure filename is non-null before delting it. if a download fails for some reason, then filename could be null. move Helpers.deleteFile() code into private method in DownloadService Change-Id: Ifb12a84b6185e19c70d62392e102950c07f56a01 --- .../providers/downloads/DownloadService.java | 34 +++++++++++++++------- 1 file changed, 24 insertions(+), 10 deletions(-) (limited to 'src/com/android/providers/downloads/DownloadService.java') diff --git a/src/com/android/providers/downloads/DownloadService.java b/src/com/android/providers/downloads/DownloadService.java index d5dff564..9bcfe7f5 100644 --- a/src/com/android/providers/downloads/DownloadService.java +++ b/src/com/android/providers/downloads/DownloadService.java @@ -370,21 +370,20 @@ public class DownloadService extends Service { if (!scanFile(info, false, true)) { throw new IllegalStateException("scanFile failed!"); } - } else { - // this file should NOT be scanned. delete the file. - Helpers.deleteFile(getContentResolver(), info.mId, info.mFileName, - info.mMimeType); + continue; } } else { // yes it has mediaProviderUri column already filled in. - // delete it from MediaProvider database and then from downloads table - // in DownProvider database (the order of deletion is important). + // delete it from MediaProvider database. getContentResolver().delete(Uri.parse(info.mMediaProviderUri), null, null); - getContentResolver().delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, - Downloads.Impl._ID + " = ? ", - new String[]{String.valueOf(info.mId)}); } + // delete the file + deleteFileIfExists(info.mFileName); + // delete from the downloads db + getContentResolver().delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, + Downloads.Impl._ID + " = ? ", + new String[]{String.valueOf(info.mId)}); } } } @@ -601,7 +600,11 @@ public class DownloadService extends Service { getContentResolver().delete(uri, null, null); } // delete the file and delete its row from the downloads db - Helpers.deleteFile(resolver, id, path, mimeType); + deleteFileIfExists(path); + getContentResolver().delete( + Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, + Downloads.Impl._ID + " = ? ", + new String[]{String.valueOf(id)}); } } }); @@ -612,4 +615,15 @@ public class DownloadService extends Service { } } } + + private void deleteFileIfExists(String path) { + try { + if (!TextUtils.isEmpty(path)) { + File file = new File(path); + file.delete(); + } + } catch (Exception e) { + Log.w(Constants.TAG, "file: '" + path + "' couldn't be deleted", e); + } + } } -- cgit v1.2.3