From bcafd4ab8ce6e2327275069d4dc3a83a3891c813 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Wed, 12 Jun 2019 18:49:30 -0700 Subject: Delegate deletion of mediaprovider downloads to FileSystemProvider. Using ContentResolver.delete() directly on MediaProvider doesn't work for uris corresponding to directories. For now, delegate this deletion to FileSystemProvider which will try deleting all entries regex-matching the file path. Bug: 135031305 Test: manual Change-Id: Iac18d0fd0be05758aaf2c03971d716592d96699b --- .../android/providers/downloads/DownloadStorageProvider.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) (limited to 'src/com/android/providers') diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 2ffe6ce8..fc7dd5ed 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -223,20 +223,12 @@ public class DownloadStorageProvider extends FileSystemProvider { // Delegate to real provider final long token = Binder.clearCallingIdentity(); try { - if (RawDocumentsHelper.isRawDocId(docId)) { + if (RawDocumentsHelper.isRawDocId(docId) || isMediaStoreDownload(docId)) { super.deleteDocument(docId); return; } - int count; - if (isMediaStoreDownload(docId)) { - count = getContext().getContentResolver().delete( - getMediaStoreUri(docId), null, null); - } else { - count = mDm.remove(Long.parseLong(docId)); - } - - if (count != 1) { + if (mDm.remove(Long.parseLong(docId)) != 1) { throw new IllegalStateException("Failed to delete " + docId); } } finally { -- cgit v1.2.3