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

Commit e535c577 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
(cherry picked from commit 5ba2fd50)
parent de8b2824
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;