summaryrefslogtreecommitdiffstats
path: root/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2013-09-05 13:55:35 -0700
committerJeff Sharkey <jsharkey@android.com>2013-09-05 13:58:04 -0700
commit923396b7720367ec99c889725fddfa556e703971 (patch)
tree13699b997e258c4096c087f7fea2f3ba7374ee92 /packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
parent0b14db3cf5eac43736462999337c9a3efdc1ac81 (diff)
downloadframeworks_base-923396b7720367ec99c889725fddfa556e703971.zip
frameworks_base-923396b7720367ec99c889725fddfa556e703971.tar.gz
frameworks_base-923396b7720367ec99c889725fddfa556e703971.tar.bz2
Filter roots based on supported MIME types.
Using flags to indicate supported types isn't very extensible, so use newline-separated MIME types instead. Bug: 10514613 Change-Id: I45641fc20b423b2a0bb2df7457c274f42aa6861a
Diffstat (limited to 'packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java')
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java31
1 files changed, 24 insertions, 7 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java b/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
index 15ad061..c65464a 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
@@ -16,9 +16,13 @@
package com.android.documentsui;
+import android.util.Log;
+
import com.android.documentsui.model.DocumentInfo;
import com.android.internal.util.Predicate;
+import java.util.Arrays;
+
public class MimePredicate implements Predicate<DocumentInfo> {
private final String[] mFilters;
@@ -31,16 +35,29 @@ public class MimePredicate implements Predicate<DocumentInfo> {
if (doc.isDirectory()) {
return true;
}
- for (String filter : mFilters) {
- if (mimeMatches(filter, doc.mimeType)) {
+ if (mimeMatches(mFilters, doc.mimeType)) {
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean mimeMatches(String[] filters, String[] tests) {
+ if (tests == null) {
+ return false;
+ }
+ for (String test : tests) {
+ if (mimeMatches(filters, test)) {
return true;
}
}
return false;
}
- public static boolean mimeMatches(String filter, String[] tests) {
- for (String test : tests) {
+ public static boolean mimeMatches(String[] filters, String test) {
+ if (filters == null) {
+ return true;
+ }
+ for (String filter : filters) {
if (mimeMatches(filter, test)) {
return true;
}
@@ -49,12 +66,12 @@ public class MimePredicate implements Predicate<DocumentInfo> {
}
public static boolean mimeMatches(String filter, String test) {
- if (test == null) {
+ if (filter == null || "*/*".equals(filter)) {
+ return true;
+ } else if (test == null) {
return false;
} else if (filter.equals(test)) {
return true;
- } else if ("*/*".equals(filter)) {
- return true;
} else if (filter.endsWith("/*")) {
return filter.regionMatches(0, test, 0, filter.indexOf('/'));
} else {