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

Commit 49eddaad authored by Jeff Sharkey's avatar Jeff Sharkey Committed by The Android Automerger
Browse files

Block directory selection in openable modes.

When picking documents to return to apps requesting CATEGORY_OPENABLE
we can't let the user select directories.

Bug: 25455200
Change-Id: I8076883ee5b019eab4d2adb841952865f21e413e
parent 14083582
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -19,7 +19,10 @@ package com.android.documentsui;
import static com.android.documentsui.BaseActivity.State.ACTION_BROWSE;
import static com.android.documentsui.BaseActivity.State.ACTION_BROWSE_ALL;
import static com.android.documentsui.BaseActivity.State.ACTION_CREATE;
import static com.android.documentsui.BaseActivity.State.ACTION_GET_CONTENT;
import static com.android.documentsui.BaseActivity.State.ACTION_MANAGE;
import static com.android.documentsui.BaseActivity.State.ACTION_OPEN;
import static com.android.documentsui.BaseActivity.State.ACTION_OPEN_TREE;
import static com.android.documentsui.BaseActivity.State.MODE_GRID;
import static com.android.documentsui.BaseActivity.State.MODE_LIST;
import static com.android.documentsui.BaseActivity.State.MODE_UNKNOWN;
@@ -578,11 +581,23 @@ public class DirectoryFragment extends Fragment {
                // Directories and footer items cannot be checked
                boolean valid = false;

                final State state = getDisplayState(DirectoryFragment.this);
                final Cursor cursor = mAdapter.getItem(position);
                if (cursor != null) {
                    final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
                    final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
                    switch (state.action) {
                        case ACTION_OPEN:
                        case ACTION_CREATE:
                        case ACTION_GET_CONTENT:
                        case ACTION_OPEN_TREE:
                            valid = isDocumentEnabled(docMimeType, docFlags)
                                    && !Document.MIME_TYPE_DIR.equals(docMimeType);
                            break;
                        default:
                            valid = isDocumentEnabled(docMimeType, docFlags);
                            break;
                    }
                }

                if (!valid) {