Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ba2fd50 authored by Tomasz Mikolajewski's avatar Tomasz Mikolajewski
Browse files

Files in archives should be only openable by the quick viewer.

Same for sending (aka sharing).

Test: Tested manually by opening an archive on a device without
      a quick viewer.
Bug: 33133419

Change-Id: I848aec3d3cd2b2dac6b423749b797f2b0f2f16c9
parent 94d27a80
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -217,6 +217,7 @@ public class DocumentInfo implements Durable, Parcelable {
                + ", isContainer=" + isContainer()
                + ", isDirectory=" + isDirectory()
                + ", isArchive=" + isArchive()
                + ", isInArchive=" + isInArchive()
                + ", isPartial=" + isPartial()
                + ", isVirtual=" + isVirtual()
                + ", isDeleteSupported=" + isDeleteSupported()
@@ -254,6 +255,10 @@ public class DocumentInfo implements Durable, Parcelable {
        return ArchivesProvider.isSupportedArchiveType(mimeType);
    }

    public boolean isInArchive() {
        return ArchivesProvider.AUTHORITY.equals(authority);
    }

    public boolean isPartial() {
        return (flags & Document.FLAG_PARTIAL) != 0;
    }
+7 −3
Original line number Diff line number Diff line
@@ -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.support.annotation.VisibleForTesting;
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 @@ import java.util.function.Predicate;
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;
+5 −0
Original line number Diff line number Diff line
@@ -434,6 +434,11 @@ public class ActionHandler<T extends Activity & Addons> extends AbstractActionHa
            return false;
        }

        if (doc.isInArchive()) {
            Log.w(TAG, "Can't view archived files.");
            return false;
        }

        if (doc.isContainer()) {
            openContainerDocument(doc);
            return true;