Add Feature Flag support.

Bug: 35923154
Change-Id: I34dd956e8309c779e7a3f35eadc3d84132b970ce
diff --git a/src/com/android/documentsui/DirectoryLoader.java b/src/com/android/documentsui/DirectoryLoader.java
index 5c93f76..0a4dff1 100644
--- a/src/com/android/documentsui/DirectoryLoader.java
+++ b/src/com/android/documentsui/DirectoryLoader.java
@@ -16,10 +16,13 @@
 
 package com.android.documentsui;
 
+import static com.android.documentsui.base.Shared.VERBOSE;
+
 import android.content.AsyncTaskLoader;
 import android.content.ContentProviderClient;
 import android.content.ContentResolver;
 import android.content.Context;
+import android.content.res.Resources;
 import android.database.ContentObserver;
 import android.database.Cursor;
 import android.net.Uri;
@@ -36,7 +39,6 @@
 import com.android.documentsui.base.DocumentInfo;
 import com.android.documentsui.base.FilteringCursorWrapper;
 import com.android.documentsui.base.RootInfo;
-import com.android.documentsui.base.Shared;
 import com.android.documentsui.roots.RootCursorWrapper;
 import com.android.documentsui.sorting.SortModel;
 
@@ -100,7 +102,8 @@
             }
             result.client = client;
 
-            if (Shared.ENABLE_OMC_API_FEATURES) {
+            Resources resources = getContext().getResources();
+            if (resources.getBoolean(R.bool.feature_content_paging)) {
                 Bundle queryArgs = new Bundle();
                 mModel.addQuerySortArgs(queryArgs);
 
@@ -122,12 +125,19 @@
 
             cursor = new RootCursorWrapper(mUri.getAuthority(), mRoot.rootId, cursor, -1);
 
-            if (mSearchMode && !Shared.ENABLE_OMC_API_FEATURES) {
+            if (mSearchMode && !resources.getBoolean(R.bool.feature_folders_in_search_results)) {
                 // There is no findDocumentPath API. Enable filtering on folders in search mode.
                 cursor = new FilteringCursorWrapper(cursor, null, SEARCH_REJECT_MIMES);
             }
 
-            cursor = mModel.sortCursor(cursor);
+            // TODO: When API tweaks have landed, use ContentResolver.EXTRA_HONORED_ARGS
+            // instead of checking directly for ContentResolver.QUERY_ARG_SORT_COLUMNS (won't work)
+            if (resources.getBoolean(R.bool.feature_content_paging)
+                        && cursor.getExtras().containsKey(ContentResolver.QUERY_ARG_SORT_COLUMNS)) {
+                if (VERBOSE) Log.d(TAG, "Skipping sort of pre-sorted cursor. Booya!");
+            } else {
+                cursor = mModel.sortCursor(cursor);
+            }
             result.cursor = cursor;
         } catch (Exception e) {
             Log.w(TAG, "Failed to query", e);