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

Commit f208d845 authored by Steve McKay's avatar Steve McKay
Browse files

Make Sorting/paging honor ENABLE_OMC_FEATURES flag

BUG: 30927484
Change-Id: Ia15b566da9e8fa7de6e5b70bc39f542cf4f5ff11
parent 50b9baed
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -99,6 +99,8 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
                ArchivesProvider.acquireArchive(client, mUri);
            }
            result.client = client;

            if (Shared.ENABLE_OMC_API_FEATURES) {
                Bundle queryArgs = new Bundle();
                mModel.addQuerySortArgs(queryArgs);

@@ -107,14 +109,13 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
                DebugFlags.addForcedPagingArgs(queryArgs);

                cursor = client.query(mUri, null, queryArgs, mSignal);
            if (cursor == null) {
                throw new RemoteException("Provider returned null");
            } else {
                cursor = client.query(
                        mUri, null, null, null, mModel.getDocumentSortQuery(), mSignal);
            }

            Bundle extras = cursor.getExtras();
            if (extras.containsKey(ContentResolver.QUERY_RESULT_SIZE)) {
                Log.i(TAG, "[PAGING INDICATED] Cursor extras specify recordset size of: "
                        + extras.getInt(ContentResolver.QUERY_RESULT_SIZE));
            if (cursor == null) {
                throw new RemoteException("Provider returned null");
            }

            cursor.registerContentObserver(mObserver);
+8 −4
Original line number Diff line number Diff line
@@ -329,11 +329,15 @@ public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> {
                for (int i = 0; i < rootIds.size(); i++) {
                    final Uri uri =
                            DocumentsContract.buildRecentDocumentsUri(authority, rootIds.get(i));
                    try {
                        if (Shared.ENABLE_OMC_API_FEATURES) {
                            final Bundle queryArgs = new Bundle();
                            mState.sortModel.addQuerySortArgs(queryArgs);

                    try {
                            res[i] = client.query(uri, null, queryArgs, null);
                        } else {
                            res[i] = client.query(
                                    uri, null, null, null, mState.sortModel.getDocumentSortQuery());
                        }
                        mCursors[i] = new RootCursorWrapper(authority, rootIds.get(i), res[i],
                                MAX_DOCS_FROM_ROOT);
                    } catch (Exception e) {
+1 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ public final class DebugFlags {
    }

    public static boolean addForcedPagingArgs(Bundle queryArgs) {
        assert(Shared.ENABLE_OMC_API_FEATURES);
        boolean flagsAdded = false;
        if (sForcedPageOffset >= 0) {
            queryArgs.putInt(ContentResolver.QUERY_ARG_OFFSET, sForcedPageOffset);
+6 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.util.Log;
import com.android.documentsui.DocumentsApplication;
import com.android.documentsui.base.DebugFlags;
import com.android.documentsui.base.EventHandler;
import com.android.documentsui.base.Shared;

import java.util.ArrayList;
import java.util.List;
@@ -110,6 +111,11 @@ public final class DebugCommandProcessor implements EventHandler<String> {
    }

    private static boolean forcePaging(String[] tokens) {
        if (!Shared.ENABLE_OMC_API_FEATURES) {
            Log.i(TAG, "Paging is disabled.");
            return false;
        }

        if ("page".equals(tokens[0])) {
            if (tokens.length >= 2) {
                try {
+41 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.util.SparseArray;
import android.view.View;

import com.android.documentsui.R;
import com.android.documentsui.base.Shared;
import com.android.documentsui.sorting.SortDimension.SortDirection;

import java.lang.annotation.Retention;
@@ -241,6 +242,7 @@ public class SortModel implements Parcelable {
    }

    public void addQuerySortArgs(Bundle queryArgs) {
        assert(Shared.ENABLE_OMC_API_FEATURES);

        final int id = getSortedDimensionId();
        switch (id) {
@@ -284,6 +286,45 @@ public class SortModel implements Parcelable {
        }
    }

    public @Nullable String getDocumentSortQuery() {
        assert(!Shared.ENABLE_OMC_API_FEATURES);

        final int id = getSortedDimensionId();
        final String columnName;
        switch (id) {
            case SORT_DIMENSION_ID_UNKNOWN:
                return null;
            case SortModel.SORT_DIMENSION_ID_TITLE:
                columnName = Document.COLUMN_DISPLAY_NAME;
                break;
            case SortModel.SORT_DIMENSION_ID_DATE:
                columnName = Document.COLUMN_LAST_MODIFIED;
                break;
            case SortModel.SORT_DIMENSION_ID_SIZE:
                columnName = Document.COLUMN_SIZE;
                break;
            default:
                throw new IllegalStateException(
                        "Unexpected sort dimension id: " + id);
        }

        final SortDimension dimension = getDimensionById(id);
        final String direction;
        switch (dimension.getSortDirection()) {
            case SortDimension.SORT_DIRECTION_ASCENDING:
                direction = " ASC";
                break;
            case SortDimension.SORT_DIRECTION_DESCENDING:
                direction = " DESC";
                break;
            default:
                throw new IllegalStateException(
                        "Unexpected sort direction: " + dimension.getSortDirection());
        }

        return columnName + direction;
    }

    private void notifyListeners(@UpdateType int updateType) {
        for (int i = mListeners.size() - 1; i >= 0; --i) {
            mListeners.get(i).onModelUpdate(this, updateType);