summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorIvan Chiang <chiangi@google.com>2019-01-10 19:29:01 +0800
committerIvan Chiang <chiangi@google.com>2019-01-21 15:44:53 +0800
commitc26d3c28c2f7fd6a77342a0448ae4d59758cfb94 (patch)
tree36f49e3a0d37052354581e3e7970d6162471e65a /core/java
parent4260098e02c8ea329fc949c1b74c6c974fec8770 (diff)
Add new column into Root to get the supported query args
DocumentsContract: - Add @Public column Root#COLUMN_QUERY_ARGS - Update java doc DocumentsProvider: - Update java doc FileSystemProvider & ExternalStorageProvider - Add supported query args into Roots Bug: 121234248 Test: manual Change-Id: Ia944200ee1a44d75c9ad683564218e3d0dcef885
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/provider/DocumentsContract.java24
-rw-r--r--core/java/android/provider/DocumentsProvider.java1
-rw-r--r--core/java/com/android/internal/content/FileSystemProvider.java10
3 files changed, 35 insertions, 0 deletions
diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java
index a323ed1a51cb..9ca023891a4e 100644
--- a/core/java/android/provider/DocumentsContract.java
+++ b/core/java/android/provider/DocumentsContract.java
@@ -640,6 +640,28 @@ public final class DocumentsContract {
public static final String COLUMN_MIME_TYPES = "mime_types";
/**
+ * Query arguments supported by this root. This column is optional
+ * and related to {@link #COLUMN_FLAGS} and {@link #FLAG_SUPPORTS_SEARCH}.
+ * If the flags include {@link #FLAG_SUPPORTS_SEARCH}, and the column is
+ * {@code null}, the root is assumed to support {@link #QUERY_ARG_DISPLAY_NAME}
+ * search of {@link Document#COLUMN_DISPLAY_NAME}. Multiple query arguments
+ * can be separated by a newline. For example, a root supporting
+ * {@link #QUERY_ARG_MIME_TYPES} and {@link #QUERY_ARG_DISPLAY_NAME} might
+ * return "android:query-arg-mime-types\nandroid:query-arg-display-name".
+ * <p>
+ * Type: STRING
+ * @see #COLUMN_FLAGS
+ * @see #FLAG_SUPPORTS_SEARCH
+ * @see #QUERY_ARG_DISPLAY_NAME
+ * @see #QUERY_ARG_FILE_SIZE_OVER
+ * @see #QUERY_ARG_LAST_MODIFIED_AFTER
+ * @see #QUERY_ARG_MIME_TYPES
+ * @see DocumentsProvider#querySearchDocuments(String, String[],
+ * Bundle)
+ */
+ public static final String COLUMN_QUERY_ARGS = "query_args";
+
+ /**
* MIME type for a root.
*/
public static final String MIME_TYPE_ITEM = "vnd.android.document/root";
@@ -680,6 +702,8 @@ public final class DocumentsContract {
* String)
* @see DocumentsProvider#querySearchDocuments(String, String,
* String[])
+ * @see DocumentsProvider#querySearchDocuments(String, String[],
+ * Bundle)
*/
public static final int FLAG_SUPPORTS_SEARCH = 1 << 3;
diff --git a/core/java/android/provider/DocumentsProvider.java b/core/java/android/provider/DocumentsProvider.java
index 70c84f8cc324..ed28cc739467 100644
--- a/core/java/android/provider/DocumentsProvider.java
+++ b/core/java/android/provider/DocumentsProvider.java
@@ -687,6 +687,7 @@ public abstract class DocumentsProvider extends ContentProvider {
* extras {@link Bundle} when any QUERY_ARG_* value was honored
* during the preparation of the results.
*
+ * @see Root#COLUMN_QUERY_ARGS
* @see ContentResolver#EXTRA_HONORED_ARGS
* @see DocumentsContract#EXTRA_LOADING
* @see DocumentsContract#EXTRA_INFO
diff --git a/core/java/com/android/internal/content/FileSystemProvider.java b/core/java/com/android/internal/content/FileSystemProvider.java
index a27dbeae2f3a..18c4b467dfba 100644
--- a/core/java/com/android/internal/content/FileSystemProvider.java
+++ b/core/java/com/android/internal/content/FileSystemProvider.java
@@ -74,6 +74,16 @@ public abstract class FileSystemProvider extends DocumentsProvider {
private static final boolean LOG_INOTIFY = false;
+ protected static final String SUPPORTED_QUERY_ARGS = joinNewline(
+ DocumentsContract.QUERY_ARG_DISPLAY_NAME,
+ DocumentsContract.QUERY_ARG_FILE_SIZE_OVER,
+ DocumentsContract.QUERY_ARG_LAST_MODIFIED_AFTER,
+ DocumentsContract.QUERY_ARG_MIME_TYPES);
+
+ private static String joinNewline(String... args) {
+ return TextUtils.join("\n", args);
+ }
+
private String[] mDefaultProjection;
@GuardedBy("mObservers")