Add findDocumentPath support to DownloadStorageProvider.
Garfield Tan [Wed, 15 Mar 2017 21:20:04 +0000 (14:20 -0700)]
Bug: 36254483
Change-Id: Ia53312cd79673ee85d0385f50e8dfef4d7ace3d4

src/com/android/providers/downloads/DownloadStorageProvider.java

index 8e4d790..ee96362 100644 (file)
@@ -34,6 +34,7 @@ import android.os.FileUtils;
 import android.os.ParcelFileDescriptor;
 import android.provider.DocumentsContract;
 import android.provider.DocumentsContract.Document;
+import android.provider.DocumentsContract.Path;
 import android.provider.DocumentsContract.Root;
 import android.provider.Downloads;
 import android.text.TextUtils;
@@ -123,6 +124,22 @@ public class DownloadStorageProvider extends FileSystemProvider {
         return result;
     }
 
+    @Override
+    public Path findDocumentPath(String parentDocId, String docId) throws FileNotFoundException {
+
+        if (parentDocId == null) {
+            parentDocId = DOC_ID_ROOT;
+        }
+
+        final File parent = getFileForDocId(parentDocId);
+
+        final File doc = getFileForDocId(docId);
+
+        final String rootId = (parentDocId == null) ? DOC_ID_ROOT : null;
+
+        return new Path(rootId, findDocumentPath(parent, doc));
+    }
+
     /**
      * Calls on {@link FileSystemProvider#createDocument(String, String, String)}, and then creates
      * a new database entry in {@link DownloadManager} if it is not a raw file and not a folder.