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

Commit f78d2052 authored by Tomasz Mikolajewski's avatar Tomasz Mikolajewski
Browse files

Return empty list of roots in ArchivesProvider.

Test: Unit tested.
Bug: 35626650
Change-Id: I43c74e690ee475c14d6792ed46d7382cfe300b44
parent 9ed50758
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
import android.provider.DocumentsContract.Document;
import android.provider.DocumentsContract.Root;
import android.provider.DocumentsContract;
import android.provider.DocumentsProvider;
import android.support.annotation.Nullable;
@@ -59,6 +60,9 @@ import java.util.concurrent.locks.Lock;
public class ArchivesProvider extends DocumentsProvider {
    public static final String AUTHORITY = "com.android.documentsui.archives";

    private static final String[] DEFAULT_ROOTS_PROJECTION = new String[] {
            Root.COLUMN_ROOT_ID, Root.COLUMN_DOCUMENT_ID, Root.COLUMN_TITLE, Root.COLUMN_FLAGS,
            Root.COLUMN_ICON };
    private static final String TAG = "ArchivesProvider";
    private static final String METHOD_ACQUIRE_ARCHIVE = "acquireArchive";
    private static final String METHOD_RELEASE_ARCHIVE = "releaseArchive";
@@ -91,7 +95,8 @@ public class ArchivesProvider extends DocumentsProvider {

    @Override
    public Cursor queryRoots(String[] projection) {
        throw new UnsupportedOperationException();
        // No roots provided.
        return new MatrixCursor(projection != null ? projection : DEFAULT_ROOTS_PROJECTION);
    }

    @Override
+3 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.util.Log;

import com.android.documentsui.DocumentsApplication;
import com.android.documentsui.R;
import com.android.documentsui.archives.ArchivesProvider;
import com.android.documentsui.base.Providers;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
@@ -73,6 +74,8 @@ public class RootsCache implements RootsAccess {
    private static final List<String> PERMIT_EMPTY_CACHE = new ArrayList<String>() {{
        // MTP provider commonly returns no roots (if no devices are attached).
        add(Providers.AUTHORITY_MTP);
        // ArchivesProvider doesn't support any roots.
        add(ArchivesProvider.AUTHORITY);
    }};

    private final Context mContext;
+11 −0
Original line number Diff line number Diff line
@@ -68,6 +68,17 @@ public class ArchivesProviderTest extends AndroidTestCase {
        super.tearDown();
    }

    public void testQueryRoots() throws InterruptedException {
        final ContentResolver resolver = getContext().getContentResolver();
        final Uri rootsUri = DocumentsContract.buildRootsUri(ArchivesProvider.AUTHORITY);
        try (final ContentProviderClient client = resolver.acquireUnstableContentProviderClient(
                rootsUri)) {
            final Cursor cursor = resolver.query(rootsUri, null, null, null, null, null);
            assertNotNull("Cursor must not be null.", cursor);
            assertEquals(0, cursor.getCount());
        }
    }

    public void testOpen_Success() throws InterruptedException {
        final Uri sourceUri = DocumentsContract.buildDocumentUri(
                ResourcesProvider.AUTHORITY, "archive.zip");