Wire support for archives to DocumentsUI.
Bug: 20176812
Change-Id: I8220afa2f53b07aa842bf6ac24fcc62afd4e2617
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index 0f25016..edf384e 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -300,10 +300,11 @@
void onDirectoryCreated(DocumentInfo doc) {
checkArgument(doc.isDirectory());
- openDirectory(doc);
+ openContainerDocument(doc);
}
- void openDirectory(DocumentInfo doc) {
+ void openContainerDocument(DocumentInfo doc) {
+ checkArgument(doc.isContainer());
mState.stack.push(doc);
mState.stackTouched = true;
onCurrentDirectoryChanged(ANIM_DOWN);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
index 4f4649c..8754f68 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
@@ -421,8 +421,8 @@
@Override
public void onDocumentPicked(DocumentInfo doc, DocumentContext context) {
final FragmentManager fm = getFragmentManager();
- if (doc.isDirectory()) {
- openDirectory(doc);
+ if (doc.isContainer()) {
+ openContainerDocument(doc);
} else if (mState.action == ACTION_OPEN || mState.action == ACTION_GET_CONTENT) {
// Explicit file picked, return
new ExistingFinishTask(doc.derivedUri).executeOnExecutor(getExecutorForCurrentDirectory());
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java
index f224343..cccbbc8 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java
@@ -185,8 +185,8 @@
@Override
public void onDocumentPicked(DocumentInfo doc, DocumentContext context) {
final FragmentManager fm = getFragmentManager();
- if (doc.isDirectory()) {
- openDirectory(doc);
+ if (doc.isContainer()) {
+ openContainerDocument(doc);
} else {
// First try managing the document; we expect manager to filter
// based on authority, so we don't grant.
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
index 99d0cf4..bf44013 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
@@ -311,8 +311,8 @@
@Override
public void onDocumentPicked(DocumentInfo doc, @Nullable DocumentContext siblings) {
- if (doc.isDirectory()) {
- openDirectory(doc);
+ if (doc.isContainer()) {
+ openContainerDocument(doc);
} else {
openDocument(doc, siblings);
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java
index dfdc705..69b574d 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java
@@ -243,6 +243,14 @@
return (flags & Document.FLAG_DIR_HIDE_GRID_TITLES) != 0;
}
+ public boolean isArchive() {
+ return (flags & Document.FLAG_ARCHIVE) != 0;
+ }
+
+ public boolean isContainer() {
+ return isDirectory() || isArchive();
+ }
+
public int hashCode() {
return derivedUri.hashCode() + mimeType.hashCode();
}