diff options
| author | 2016-05-02 20:15:17 +0000 | |
|---|---|---|
| committer | 2016-05-02 20:15:19 +0000 | |
| commit | dbe2dbae994f787ecffda5f81764b3daf7c45ba0 (patch) | |
| tree | 459a04038e8d5de950189025f138f65b7393cfd2 | |
| parent | 64ca2706000264b4f49f1e9f9566b69f0ce8b5a0 (diff) | |
| parent | 53a528bb4f4cdb5a8d07b0d91405fdb2edb62201 (diff) | |
Merge "Add archive support to Bug report docs provider." into nyc-dev
| -rw-r--r-- | packages/Shell/Android.mk | 3 | ||||
| -rw-r--r-- | packages/Shell/src/com/android/shell/BugreportStorageProvider.java | 26 |
2 files changed, 26 insertions, 3 deletions
diff --git a/packages/Shell/Android.mk b/packages/Shell/Android.mk index f8c13d63327f..73a044951bd5 100644 --- a/packages/Shell/Android.mk +++ b/packages/Shell/Android.mk @@ -5,7 +5,8 @@ LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 +LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 \ + android-support-documents-archive LOCAL_PACKAGE_NAME := Shell LOCAL_CERTIFICATE := platform diff --git a/packages/Shell/src/com/android/shell/BugreportStorageProvider.java b/packages/Shell/src/com/android/shell/BugreportStorageProvider.java index 814aa8cb8c06..0f92fa6e8add 100644 --- a/packages/Shell/src/com/android/shell/BugreportStorageProvider.java +++ b/packages/Shell/src/com/android/shell/BugreportStorageProvider.java @@ -25,6 +25,7 @@ import android.os.ParcelFileDescriptor; import android.provider.DocumentsContract.Document; import android.provider.DocumentsContract.Root; import android.provider.DocumentsProvider; +import android.support.provider.DocumentArchiveHelper; import android.webkit.MimeTypeMap; import java.io.File; @@ -44,10 +45,12 @@ public class BugreportStorageProvider extends DocumentsProvider { }; private File mRoot; + private DocumentArchiveHelper mArchiveHelper; @Override public boolean onCreate() { mRoot = new File(getContext().getFilesDir(), "bugreports"); + mArchiveHelper = new DocumentArchiveHelper(this, (char) 0); return true; } @@ -66,6 +69,10 @@ public class BugreportStorageProvider extends DocumentsProvider { @Override public Cursor queryDocument(String documentId, String[] projection) throws FileNotFoundException { + if (mArchiveHelper.isArchivedDocument(documentId)) { + return mArchiveHelper.queryDocument(documentId, projection); + } + final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); if (DOC_ID_ROOT.equals(documentId)) { final RowBuilder row = result.newRow(); @@ -84,6 +91,11 @@ public class BugreportStorageProvider extends DocumentsProvider { public Cursor queryChildDocuments( String parentDocumentId, String[] projection, String sortOrder) throws FileNotFoundException { + if (mArchiveHelper.isArchivedDocument(parentDocumentId) || + mArchiveHelper.isSupportedArchiveType(getDocumentType(parentDocumentId))) { + return mArchiveHelper.queryChildDocuments(parentDocumentId, projection, sortOrder); + } + final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); if (DOC_ID_ROOT.equals(parentDocumentId)) { final File[] files = mRoot.listFiles(); @@ -100,6 +112,10 @@ public class BugreportStorageProvider extends DocumentsProvider { public ParcelFileDescriptor openDocument( String documentId, String mode, CancellationSignal signal) throws FileNotFoundException { + if (mArchiveHelper.isArchivedDocument(documentId)) { + return mArchiveHelper.openDocument(documentId, mode, signal); + } + if (ParcelFileDescriptor.parseMode(mode) != ParcelFileDescriptor.MODE_READ_ONLY) { throw new FileNotFoundException("Failed to open: " + documentId + ", mode = " + mode); } @@ -153,12 +169,18 @@ public class BugreportStorageProvider extends DocumentsProvider { } private void addFileRow(MatrixCursor result, File file) { + String mimeType = getTypeForName(file.getName()); + int flags = Document.FLAG_SUPPORTS_DELETE; + if (mArchiveHelper.isSupportedArchiveType(mimeType)) { + flags |= Document.FLAG_ARCHIVE; + } + final RowBuilder row = result.newRow(); row.add(Document.COLUMN_DOCUMENT_ID, getDocIdForFile(file)); - row.add(Document.COLUMN_MIME_TYPE, getTypeForName(file.getName())); + row.add(Document.COLUMN_MIME_TYPE, mimeType); row.add(Document.COLUMN_DISPLAY_NAME, file.getName()); row.add(Document.COLUMN_LAST_MODIFIED, file.lastModified()); - row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_DELETE); + row.add(Document.COLUMN_FLAGS, flags); row.add(Document.COLUMN_SIZE, file.length()); } } |