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

Commit bc13802e authored by François Degros's avatar François Degros
Browse files

Allow files in archives to be viewed or opened

Also allow nested archives to be browsed.

Bug: 402289261
Flag: com.android.documentsui.flags.use_material3
Flag: com.android.documentsui.flags.zip_ng_ro
Test: Manual

Change-Id: I068ae2185a20c2851b654fde5b93e31f32918258
parent 34c3fa92
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.android.documentsui.base.DocumentInfo.getCursorString;
import static com.android.documentsui.base.SharedMinimal.DEBUG;
import static com.android.documentsui.util.FlagUtils.isDesktopFileHandlingFlagEnabled;
import static com.android.documentsui.util.FlagUtils.isUseSearchV2FlagEnabled;
import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled;

import android.app.PendingIntent;
import android.content.ActivityNotFoundException;
@@ -458,17 +459,17 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA

    private boolean viewDocument(DocumentInfo doc) {
        if (doc.isPartial()) {
            Log.w(TAG, "Can't view partial file.");
            Log.w(TAG, "Cannot view partial file");
            return false;
        }

        if (doc.isInArchive()) {
            Log.w(TAG, "Can't view files in archives.");
        if (!isZipNgFlagEnabled() && doc.isInArchive()) {
            Log.w(TAG, "Cannot view file in archive");
            return false;
        }

        if (doc.isDirectory()) {
            Log.w(TAG, "Can't view directories.");
            Log.w(TAG, "Cannot view directory");
            return true;
        }

+3 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.documentsui.base;

import static com.android.documentsui.base.SharedMinimal.DEBUG;
import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled;

import android.content.ContentProviderClient;
import android.content.ContentResolver;
@@ -319,7 +320,8 @@ public class DocumentInfo implements Durable, Parcelable {

    // Containers are documents which can be opened in DocumentsUI as folders.
    public boolean isContainer() {
        return isDirectory() || (isArchive() && !isInArchive() && !isPartial());
        return isDirectory() || (isArchive() && !isPartial() && (isZipNgFlagEnabled()
                || !isInArchive()));
    }

    public boolean isVirtual() {
@@ -342,7 +344,6 @@ public class DocumentInfo implements Durable, Parcelable {
        return userId.buildDocumentUriAsUser(authority, documentId);
    }


    /**
     * Returns a tree document uri representing this {@link DocumentInfo}. The URI may contain user
     * information. Use this when uri is needed externally.
+3 −1
Original line number Diff line number Diff line
@@ -18,6 +18,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.util.FlagUtils.isZipNgFlagEnabled;

import android.database.Cursor;
import android.provider.DocumentsContract.Document;
@@ -184,6 +185,7 @@ public class SelectionMetadata extends SelectionObserver<String>

    @Override
    public boolean canOpen() {
        return size() == 1 && mDirectoryCount == 0 && mInArchiveCount == 0 && mPartialCount == 0;
        return mFileCount == 1 && mDirectoryCount == 0 && mPartialCount == 0 && (
                isZipNgFlagEnabled() || mInArchiveCount == 0);
    }
}