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

Commit b7807e95 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Guard against missing document columns.

When filtering and sorting, guard against missing columns to avoid
crashing entire app.

Bug: 11377065
Change-Id: I04f035c918d743bcc84592f05e3ef9ad0ebfadce
parent c0075dc2
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.documentsui;

import static com.android.documentsui.DocumentsActivity.TAG;
import static com.android.documentsui.model.DocumentInfo.getCursorLong;
import static com.android.documentsui.model.DocumentInfo.getCursorString;

import android.database.AbstractCursor;
import android.database.Cursor;
@@ -50,10 +52,8 @@ public class FilteringCursorWrapper extends AbstractCursor {

        cursor.moveToPosition(-1);
        while (cursor.moveToNext()) {
            final String mimeType = cursor.getString(
                    cursor.getColumnIndex(Document.COLUMN_MIME_TYPE));
            final long lastModified = cursor.getLong(
                    cursor.getColumnIndex(Document.COLUMN_LAST_MODIFIED));
            final String mimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
            final long lastModified = getCursorLong(cursor, Document.COLUMN_LAST_MODIFIED);
            if (rejectMimes != null && MimePredicate.mimeMatches(rejectMimes, mimeType)) {
                continue;
            }
+7 −7
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package com.android.documentsui;
import static com.android.documentsui.DocumentsActivity.State.SORT_ORDER_DISPLAY_NAME;
import static com.android.documentsui.DocumentsActivity.State.SORT_ORDER_LAST_MODIFIED;
import static com.android.documentsui.DocumentsActivity.State.SORT_ORDER_SIZE;
import static com.android.documentsui.model.DocumentInfo.getCursorLong;
import static com.android.documentsui.model.DocumentInfo.getCursorString;

import android.database.AbstractCursor;
import android.database.Cursor;
@@ -62,10 +64,9 @@ public class SortingCursorWrapper extends AbstractCursor {

            switch (sortOrder) {
                case SORT_ORDER_DISPLAY_NAME:
                    final String mimeType = cursor.getString(
                            cursor.getColumnIndex(Document.COLUMN_MIME_TYPE));
                    final String displayName = cursor.getString(
                            cursor.getColumnIndex(Document.COLUMN_DISPLAY_NAME));
                    final String mimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
                    final String displayName = getCursorString(
                            cursor, Document.COLUMN_DISPLAY_NAME);
                    if (Document.MIME_TYPE_DIR.equals(mimeType)) {
                        mValueString[i] = '\001' + displayName;
                    } else {
@@ -73,11 +74,10 @@ public class SortingCursorWrapper extends AbstractCursor {
                    }
                    break;
                case SORT_ORDER_LAST_MODIFIED:
                    mValueLong[i] = cursor.getLong(
                            cursor.getColumnIndex(Document.COLUMN_LAST_MODIFIED));
                    mValueLong[i] = getCursorLong(cursor, Document.COLUMN_LAST_MODIFIED);
                    break;
                case SORT_ORDER_SIZE:
                    mValueLong[i] = cursor.getLong(cursor.getColumnIndex(Document.COLUMN_SIZE));
                    mValueLong[i] = getCursorLong(cursor, Document.COLUMN_SIZE);
                    break;
            }
        }