Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -9409,6 +9409,7 @@ package android.content.pm { field public static final int GET_SIGNATURES = 64; // 0x40 field public static final int GET_UNINSTALLED_PACKAGES = 8192; // 0x2000 field public static final int GET_URI_PERMISSION_PATTERNS = 2048; // 0x800 field public static final int MATCH_ALL = 131072; // 0x20000 field public static final int MATCH_DEFAULT_ONLY = 65536; // 0x10000 field public static final long MAXIMUM_VERIFICATION_TIMEOUT = 3600000L; // 0x36ee80L field public static final int PERMISSION_DENIED = -1; // 0xffffffff api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -9702,6 +9702,7 @@ package android.content.pm { field public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103; // 0xffffff99 field public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102; // 0xffffff9a field public static final int INSTALL_SUCCEEDED = 1; // 0x1 field public static final int MATCH_ALL = 131072; // 0x20000 field public static final int MATCH_DEFAULT_ONLY = 65536; // 0x10000 field public static final long MAXIMUM_VERIFICATION_TIMEOUT = 3600000L; // 0x36ee80L field public static final int PERMISSION_DENIED = -1; // 0xffffffff core/java/android/content/pm/PackageManager.java +12 −1 Original line number Diff line number Diff line Loading @@ -211,6 +211,13 @@ public abstract class PackageManager { */ public static final int MATCH_DEFAULT_ONLY = 0x00010000; /** * Querying flag: if set and if the platform is doing any filtering of the results, then * the filtering will not happen. This is a synonym for saying that all results should * be returned. */ public static final int MATCH_ALL = 0x00020000; /** * Flag for {@link addCrossProfileIntentFilter}: if this flag is set: * when resolving an intent that matches the {@link CrossProfileIntentFilter}, the current Loading Loading @@ -2637,6 +2644,8 @@ public abstract class PackageManager { * {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only * those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}. * * You can also set {@link #MATCH_ALL} for preventing the filtering of the results. * * @return A List<ResolveInfo> containing one entry for each matching * Activity. These are ordered from best to worst match -- that * is, the first item in the list is what is returned by Loading @@ -2658,6 +2667,8 @@ public abstract class PackageManager { * {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only * those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}. * * You can also set {@link #MATCH_ALL} for preventing the filtering of the results. * * @return A List<ResolveInfo> containing one entry for each matching * Activity. These are ordered from best to worst match -- that * is, the first item in the list is what is returned by Loading services/core/java/com/android/server/pm/PackageManagerService.java +49 −11 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATIO import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; import static android.content.pm.PackageManager.MATCH_ALL; import static android.content.pm.PackageManager.MOVE_FAILED_DOESNT_EXIST; import static android.content.pm.PackageManager.MOVE_FAILED_INTERNAL_ERROR; import static android.content.pm.PackageManager.MOVE_FAILED_OPERATION_PENDING; Loading Loading @@ -2274,6 +2275,13 @@ public class PackageManagerService extends IPackageManager.Stub { } continue; } if (!pkg.isSystemApp()) { if (logging) { Slog.d(TAG, "No priming domain verifications for a non system package : " + packageName); } continue; } for (PackageParser.Activity a : pkg.activities) { for (ActivityIntentInfo filter : a.intents) { if (hasValidDomains(filter, false)) { Loading @@ -2281,7 +2289,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } if (allHosts.size() > 0) { if (allHosts.size() == 0) { allHosts.add("*"); } IntentFilterVerificationInfo ivi = Loading Loading @@ -3939,7 +3947,7 @@ public class PackageManagerService extends IPackageManager.Stub { } result = filterIfNotPrimaryUser(result, userId); if (result.size() > 1 && hasWebURI(intent)) { return filterCandidatesWithDomainPreferedActivitiesLPr(result); return filterCandidatesWithDomainPreferedActivitiesLPr(flags, result); } return result; } Loading Loading @@ -3984,7 +3992,7 @@ public class PackageManagerService extends IPackageManager.Stub { } private List<ResolveInfo> filterCandidatesWithDomainPreferedActivitiesLPr( List<ResolveInfo> candidates) { int flags, List<ResolveInfo> candidates) { if (DEBUG_PREFERRED) { Slog.v("TAG", "Filtering results with prefered activities. Candidates count: " + candidates.size()); Loading @@ -4004,6 +4012,11 @@ public class PackageManagerService extends IPackageManager.Stub { String packageName = info.activityInfo.packageName; PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null) { // Add to the special match all list (Browser use case) if (info.handleAllWebDataURI) { matchAllList.add(info); continue; } // Try to get the status from User settings first int status = getDomainVerificationStatusLPr(ps, userId); if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) { Loading @@ -4013,10 +4026,6 @@ public class PackageManagerService extends IPackageManager.Stub { } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED) { undefinedList.add(info); } // Add to the special match all list (Browser use case) if (info.handleAllWebDataURI) { matchAllList.add(info); } } } // If there is nothing selected, add all candidates and remove the ones that the User Loading @@ -4031,8 +4040,31 @@ public class PackageManagerService extends IPackageManager.Stub { result.removeAll(matchAllList); if (result.size() == 0) { result.addAll(undefinedList); if ((flags & MATCH_ALL) != 0) { result.addAll(matchAllList); } else { // Try to add the Default Browser if we can final String defaultBrowserPackageName = getDefaultBrowserPackageName( UserHandle.myUserId()); if (!TextUtils.isEmpty(defaultBrowserPackageName)) { boolean defaultBrowserFound = false; final int browserCount = matchAllList.size(); for (int n=0; n<browserCount; n++) { ResolveInfo browser = matchAllList.get(n); if (browser.activityInfo.packageName.equals(defaultBrowserPackageName)) { result.add(browser); defaultBrowserFound = true; break; } } if (!defaultBrowserFound) { result.addAll(matchAllList); } } else { result.addAll(matchAllList); } } } } if (DEBUG_PREFERRED) { Slog.v("TAG", "Filtered results with prefered activities. New candidates count: " + Loading Loading @@ -11331,10 +11363,16 @@ public class PackageManagerService extends IPackageManager.Stub { verifierUid, userId, verificationId, filter, packageName); count++; } else if (!needsFilterVerification) { Slog.d(TAG, "No verification needed for IntentFilter:" + filter.toString()); Slog.d(TAG, "No verification needed for IntentFilter:" + filter.toString()); if (hasValidDomains(filter)) { allHosts.addAll(filter.getHostsList()); ArrayList<String> hosts = filter.getHostsList(); if (hosts.size() > 0) { allHosts.addAll(hosts); } else { if (allHosts.isEmpty()) { allHosts.add("*"); } } } } else { Slog.d(TAG, "Verification already done for IntentFilter:" Loading Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -9409,6 +9409,7 @@ package android.content.pm { field public static final int GET_SIGNATURES = 64; // 0x40 field public static final int GET_UNINSTALLED_PACKAGES = 8192; // 0x2000 field public static final int GET_URI_PERMISSION_PATTERNS = 2048; // 0x800 field public static final int MATCH_ALL = 131072; // 0x20000 field public static final int MATCH_DEFAULT_ONLY = 65536; // 0x10000 field public static final long MAXIMUM_VERIFICATION_TIMEOUT = 3600000L; // 0x36ee80L field public static final int PERMISSION_DENIED = -1; // 0xffffffff
api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -9702,6 +9702,7 @@ package android.content.pm { field public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103; // 0xffffff99 field public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102; // 0xffffff9a field public static final int INSTALL_SUCCEEDED = 1; // 0x1 field public static final int MATCH_ALL = 131072; // 0x20000 field public static final int MATCH_DEFAULT_ONLY = 65536; // 0x10000 field public static final long MAXIMUM_VERIFICATION_TIMEOUT = 3600000L; // 0x36ee80L field public static final int PERMISSION_DENIED = -1; // 0xffffffff
core/java/android/content/pm/PackageManager.java +12 −1 Original line number Diff line number Diff line Loading @@ -211,6 +211,13 @@ public abstract class PackageManager { */ public static final int MATCH_DEFAULT_ONLY = 0x00010000; /** * Querying flag: if set and if the platform is doing any filtering of the results, then * the filtering will not happen. This is a synonym for saying that all results should * be returned. */ public static final int MATCH_ALL = 0x00020000; /** * Flag for {@link addCrossProfileIntentFilter}: if this flag is set: * when resolving an intent that matches the {@link CrossProfileIntentFilter}, the current Loading Loading @@ -2637,6 +2644,8 @@ public abstract class PackageManager { * {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only * those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}. * * You can also set {@link #MATCH_ALL} for preventing the filtering of the results. * * @return A List<ResolveInfo> containing one entry for each matching * Activity. These are ordered from best to worst match -- that * is, the first item in the list is what is returned by Loading @@ -2658,6 +2667,8 @@ public abstract class PackageManager { * {@link #MATCH_DEFAULT_ONLY}, to limit the resolution to only * those activities that support the {@link android.content.Intent#CATEGORY_DEFAULT}. * * You can also set {@link #MATCH_ALL} for preventing the filtering of the results. * * @return A List<ResolveInfo> containing one entry for each matching * Activity. These are ordered from best to worst match -- that * is, the first item in the list is what is returned by Loading
services/core/java/com/android/server/pm/PackageManagerService.java +49 −11 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATIO import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; import static android.content.pm.PackageManager.MATCH_ALL; import static android.content.pm.PackageManager.MOVE_FAILED_DOESNT_EXIST; import static android.content.pm.PackageManager.MOVE_FAILED_INTERNAL_ERROR; import static android.content.pm.PackageManager.MOVE_FAILED_OPERATION_PENDING; Loading Loading @@ -2274,6 +2275,13 @@ public class PackageManagerService extends IPackageManager.Stub { } continue; } if (!pkg.isSystemApp()) { if (logging) { Slog.d(TAG, "No priming domain verifications for a non system package : " + packageName); } continue; } for (PackageParser.Activity a : pkg.activities) { for (ActivityIntentInfo filter : a.intents) { if (hasValidDomains(filter, false)) { Loading @@ -2281,7 +2289,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } if (allHosts.size() > 0) { if (allHosts.size() == 0) { allHosts.add("*"); } IntentFilterVerificationInfo ivi = Loading Loading @@ -3939,7 +3947,7 @@ public class PackageManagerService extends IPackageManager.Stub { } result = filterIfNotPrimaryUser(result, userId); if (result.size() > 1 && hasWebURI(intent)) { return filterCandidatesWithDomainPreferedActivitiesLPr(result); return filterCandidatesWithDomainPreferedActivitiesLPr(flags, result); } return result; } Loading Loading @@ -3984,7 +3992,7 @@ public class PackageManagerService extends IPackageManager.Stub { } private List<ResolveInfo> filterCandidatesWithDomainPreferedActivitiesLPr( List<ResolveInfo> candidates) { int flags, List<ResolveInfo> candidates) { if (DEBUG_PREFERRED) { Slog.v("TAG", "Filtering results with prefered activities. Candidates count: " + candidates.size()); Loading @@ -4004,6 +4012,11 @@ public class PackageManagerService extends IPackageManager.Stub { String packageName = info.activityInfo.packageName; PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null) { // Add to the special match all list (Browser use case) if (info.handleAllWebDataURI) { matchAllList.add(info); continue; } // Try to get the status from User settings first int status = getDomainVerificationStatusLPr(ps, userId); if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) { Loading @@ -4013,10 +4026,6 @@ public class PackageManagerService extends IPackageManager.Stub { } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED) { undefinedList.add(info); } // Add to the special match all list (Browser use case) if (info.handleAllWebDataURI) { matchAllList.add(info); } } } // If there is nothing selected, add all candidates and remove the ones that the User Loading @@ -4031,8 +4040,31 @@ public class PackageManagerService extends IPackageManager.Stub { result.removeAll(matchAllList); if (result.size() == 0) { result.addAll(undefinedList); if ((flags & MATCH_ALL) != 0) { result.addAll(matchAllList); } else { // Try to add the Default Browser if we can final String defaultBrowserPackageName = getDefaultBrowserPackageName( UserHandle.myUserId()); if (!TextUtils.isEmpty(defaultBrowserPackageName)) { boolean defaultBrowserFound = false; final int browserCount = matchAllList.size(); for (int n=0; n<browserCount; n++) { ResolveInfo browser = matchAllList.get(n); if (browser.activityInfo.packageName.equals(defaultBrowserPackageName)) { result.add(browser); defaultBrowserFound = true; break; } } if (!defaultBrowserFound) { result.addAll(matchAllList); } } else { result.addAll(matchAllList); } } } } if (DEBUG_PREFERRED) { Slog.v("TAG", "Filtered results with prefered activities. New candidates count: " + Loading Loading @@ -11331,10 +11363,16 @@ public class PackageManagerService extends IPackageManager.Stub { verifierUid, userId, verificationId, filter, packageName); count++; } else if (!needsFilterVerification) { Slog.d(TAG, "No verification needed for IntentFilter:" + filter.toString()); Slog.d(TAG, "No verification needed for IntentFilter:" + filter.toString()); if (hasValidDomains(filter)) { allHosts.addAll(filter.getHostsList()); ArrayList<String> hosts = filter.getHostsList(); if (hosts.size() > 0) { allHosts.addAll(hosts); } else { if (allHosts.isEmpty()) { allHosts.add("*"); } } } } else { Slog.d(TAG, "Verification already done for IntentFilter:" Loading