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();
     }