diff options
author | Jeff Sharkey <jsharkey@android.com> | 2013-09-05 13:55:35 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2013-09-05 13:58:04 -0700 |
commit | 923396b7720367ec99c889725fddfa556e703971 (patch) | |
tree | 13699b997e258c4096c087f7fea2f3ba7374ee92 /packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java | |
parent | 0b14db3cf5eac43736462999337c9a3efdc1ac81 (diff) | |
download | frameworks_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.java | 31 |
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 { |