Treat mimegroup as wildcard for app enumeration

This change treats any filter with a mimegroup as if it matches all or
no mime types when matching for the purpose of app enumeration.

Fixes: 155379839
Test: atest IntentFilterTest
Change-Id: I358872082524a4001179bb145053d006622898a7
This commit is contained in:
Patrick Baumann
2020-05-14 15:56:52 -07:00
parent 97980133d5
commit 84249ed31e

View File

@@ -1581,12 +1581,13 @@ public class IntentFilter implements Parcelable {
* @param wildcardSupported if true, will allow parameters to use wildcards
*/
private int matchData(String type, String scheme, Uri data, boolean wildcardSupported) {
final ArrayList<String> types = mDataTypes;
final boolean wildcardWithMimegroups = wildcardSupported && countMimeGroups() != 0;
final List<String> types = mDataTypes;
final ArrayList<String> schemes = mDataSchemes;
int match = MATCH_CATEGORY_EMPTY;
if (types == null && schemes == null) {
if (!wildcardWithMimegroups && types == null && schemes == null) {
return ((type == null && data == null)
? (MATCH_CATEGORY_EMPTY+MATCH_ADJUSTMENT_NORMAL) : NO_MATCH_DATA);
}
@@ -1641,7 +1642,9 @@ public class IntentFilter implements Parcelable {
}
}
if (types != null) {
if (wildcardWithMimegroups) {
return MATCH_CATEGORY_TYPE;
} else if (types != null) {
if (findMimeType(type)) {
match = MATCH_CATEGORY_TYPE;
} else {