Merge "Remove unused progress bar in DocumentsUI." into nyc-andromeda-dev
diff --git a/src/com/android/documentsui/base/DocumentInfo.java b/src/com/android/documentsui/base/DocumentInfo.java
index bf01f2f..3185d09 100644
--- a/src/com/android/documentsui/base/DocumentInfo.java
+++ b/src/com/android/documentsui/base/DocumentInfo.java
@@ -217,6 +217,7 @@
                 + ", isContainer=" + isContainer()
                 + ", isDirectory=" + isDirectory()
                 + ", isArchive=" + isArchive()
+                + ", isInArchive=" + isInArchive()
                 + ", isPartial=" + isPartial()
                 + ", isVirtual=" + isVirtual()
                 + ", isDeleteSupported=" + isDeleteSupported()
@@ -254,6 +255,10 @@
         return ArchivesProvider.isSupportedArchiveType(mimeType);
     }
 
+    public boolean isInArchive() {
+        return ArchivesProvider.AUTHORITY.equals(authority);
+    }
+
     public boolean isPartial() {
         return (flags & Document.FLAG_PARTIAL) != 0;
     }
diff --git a/src/com/android/documentsui/dirlist/Model.java b/src/com/android/documentsui/dirlist/Model.java
index 5094f41..64dc3d1 100644
--- a/src/com/android/documentsui/dirlist/Model.java
+++ b/src/com/android/documentsui/dirlist/Model.java
@@ -16,6 +16,7 @@
 
 package com.android.documentsui.dirlist;
 
+import static com.android.documentsui.base.DocumentInfo.getCursorInt;
 import static com.android.documentsui.base.DocumentInfo.getCursorString;
 import static com.android.documentsui.base.Shared.DEBUG;
 import static com.android.documentsui.base.Shared.VERBOSE;
@@ -32,6 +33,7 @@
 import android.util.Log;
 
 import com.android.documentsui.DirectoryResult;
+import com.android.documentsui.archives.ArchivesProvider;
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.EventListener;
 import com.android.documentsui.roots.RootCursorWrapper;
@@ -52,12 +54,14 @@
 public class Model {
 
     /**
-     * Filter that passes (returns true) all non-virtual, non-partial files.
+     * Filter that passes (returns true) all non-virtual, non-partial files, not archived files.
      */
     public static final Predicate<Cursor> CONCRETE_FILE_FILTER = (Cursor c) -> {
-        int flags = DocumentInfo.getCursorInt(c, Document.COLUMN_FLAGS);
+        int flags = getCursorInt(c, Document.COLUMN_FLAGS);
+        String authority = getCursorString(c, RootCursorWrapper.COLUMN_AUTHORITY);
         return (flags & Document.FLAG_VIRTUAL_DOCUMENT) == 0
-                && (flags & Document.FLAG_PARTIAL) == 0;
+                && (flags & Document.FLAG_PARTIAL) == 0
+                && !ArchivesProvider.AUTHORITY.equals(authority);
     };
 
     private static final Predicate<Cursor> ANY_FILE_FILTER = (Cursor c) -> true;
diff --git a/src/com/android/documentsui/files/ActionHandler.java b/src/com/android/documentsui/files/ActionHandler.java
index 7c62126..e365c4d 100644
--- a/src/com/android/documentsui/files/ActionHandler.java
+++ b/src/com/android/documentsui/files/ActionHandler.java
@@ -434,6 +434,11 @@
             return false;
         }
 
+        if (doc.isInArchive()) {
+            Log.w(TAG, "Can't view archived files.");
+            return false;
+        }
+
         if (doc.isContainer()) {
             openContainerDocument(doc);
             return true;