diff options
Diffstat (limited to 'src/com/android/providers/downloads/DownloadProvider.java')
-rw-r--r-- | src/com/android/providers/downloads/DownloadProvider.java | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index cfd37708..55a87a2f 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -83,6 +83,8 @@ public final class DownloadProvider extends ContentProvider { private static final int DB_VERSION = 110; /** Name of table in the database */ private static final String DB_TABLE = "downloads"; + /** Memory optimization - close idle connections after 30s of inactivity */ + private static final int IDLE_CONNECTION_TIMEOUT_MS = 30000; /** MIME type for the entire download list */ private static final String DOWNLOAD_LIST_TYPE = "vnd.android.cursor.dir/download"; @@ -249,6 +251,7 @@ public final class DownloadProvider extends ContentProvider { private final class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(final Context context) { super(context, DB_NAME, null, DB_VERSION); + setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS); } /** @@ -593,8 +596,7 @@ public final class DownloadProvider extends ContentProvider { if (getContext().checkCallingOrSelfPermission(Downloads.Impl.PERMISSION_ACCESS_ADVANCED) != PackageManager.PERMISSION_GRANTED && (dest == Downloads.Impl.DESTINATION_CACHE_PARTITION - || dest == Downloads.Impl.DESTINATION_CACHE_PARTITION_NOROAMING - || dest == Downloads.Impl.DESTINATION_SYSTEMCACHE_PARTITION)) { + || dest == Downloads.Impl.DESTINATION_CACHE_PARTITION_NOROAMING)) { throw new SecurityException("setting destination to : " + dest + " not allowed, unless PERMISSION_ACCESS_ADVANCED is granted"); } @@ -621,12 +623,6 @@ public final class DownloadProvider extends ContentProvider { getCallingPackage()) != AppOpsManager.MODE_ALLOWED) { throw new SecurityException("No permission to write"); } - - } else if (dest == Downloads.Impl.DESTINATION_SYSTEMCACHE_PARTITION) { - getContext().enforcePermission( - android.Manifest.permission.ACCESS_CACHE_FILESYSTEM, - Binder.getCallingPid(), Binder.getCallingUid(), - "need ACCESS_CACHE_FILESYSTEM permission to use system cache"); } filteredValues.put(Downloads.Impl.COLUMN_DESTINATION, dest); } @@ -1301,6 +1297,8 @@ public final class DownloadProvider extends ContentProvider { try { getContext().getContentResolver().delete(Uri.parse(mediaUri), null, null); + } catch (Exception e) { + Log.w(Constants.TAG, "Failed to delete media entry: " + e); } finally { Binder.restoreCallingIdentity(token); } |