Loading services/core/java/com/android/server/pm/PackageManagerService.java +20 −8 Original line number Diff line number Diff line Loading @@ -4568,8 +4568,8 @@ public class PackageManagerService extends IPackageManager.Stub { private List<ResolveInfo> filterCandidatesWithDomainPreferredActivitiesLPr( int flags, List<ResolveInfo> candidates, CrossProfileDomainInfo xpDomainInfo) { if (DEBUG_PREFERRED) { Slog.v("TAG", "Filtering results with prefered activities. Candidates count: " + if (DEBUG_PREFERRED || DEBUG_DOMAIN_VERIFICATION) { Slog.v("TAG", "Filtering results with preferred activities. Candidates count: " + candidates.size()); } Loading @@ -4582,9 +4582,9 @@ public class PackageManagerService extends IPackageManager.Stub { synchronized (mPackages) { final int count = candidates.size(); // First, try to use the domain preferred app. Partition the candidates into four lists: // First, try to use linked apps. Partition the candidates into four lists: // one for the final results, one for the "do not use ever", one for "undefined status" // and finally one for "Browser App type". // and finally one for "browser app type". for (int n=0; n<count; n++) { ResolveInfo info = candidates.get(n); String packageName = info.activityInfo.packageName; Loading @@ -4598,11 +4598,20 @@ public class PackageManagerService extends IPackageManager.Stub { // Try to get the status from User settings first int status = getDomainVerificationStatusLPr(ps, userId); if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) { if (DEBUG_DOMAIN_VERIFICATION) { Slog.i(TAG, " + always: " + info.activityInfo.packageName); } alwaysList.add(info); } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER) { if (DEBUG_DOMAIN_VERIFICATION) { Slog.i(TAG, " + never: " + info.activityInfo.packageName); } neverList.add(info); } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED || status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK) { if (DEBUG_DOMAIN_VERIFICATION) { Slog.i(TAG, " + ask: " + info.activityInfo.packageName); } undefinedList.add(info); } } Loading Loading @@ -4650,17 +4659,20 @@ public class PackageManagerService extends IPackageManager.Stub { } } // If there is nothing selected, add all candidates and remove the ones that the User // has explicitely put into the INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER state // If there is nothing selected, add all candidates and remove the ones that the user // has explicitly put into the INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER state if (result.size() == 0) { result.addAll(candidates); result.removeAll(neverList); } } } if (DEBUG_PREFERRED) { Slog.v("TAG", "Filtered results with prefered activities. New candidates count: " + if (DEBUG_PREFERRED || DEBUG_DOMAIN_VERIFICATION) { Slog.v(TAG, "Filtered results with preferred activities. New candidates count: " + result.size()); for (ResolveInfo info : result) { Slog.v(TAG, " + " + info.activityInfo); } } return result; } Loading services/core/java/com/android/server/pm/Settings.java +1 −29 Original line number Diff line number Diff line Loading @@ -1058,36 +1058,8 @@ final class Settings { } return false; } current.setDomainVerificationStatusForUser(status, userId); if (current.getIntentFilterVerificationInfo() == null) { if (DEBUG_DOMAIN_VERIFICATION) { Slog.w(PackageManagerService.TAG, "No IntentFilterVerificationInfo known: " + packageName); } return false; } // Then, if we set a ALWAYS status, then put NEVER status for Apps whose IntentFilter // domains overlap the domains of the current package ArraySet<String> currentDomains = current.getIntentFilterVerificationInfo().getDomains(); if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) { for (PackageSetting ps : mPackages.values()) { if (ps == null || ps.pkg == null || packageName.equals(ps.pkg.packageName)) { continue; } IntentFilterVerificationInfo ivi = ps.getIntentFilterVerificationInfo(); if (ivi == null) { continue; } ArraySet<String> set = ivi.getDomains(); set.retainAll(currentDomains); if (set.size() > 0) { ps.setDomainVerificationStatusForUser( INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER, userId); } } } current.setDomainVerificationStatusForUser(status, userId); return true; } Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +20 −8 Original line number Diff line number Diff line Loading @@ -4568,8 +4568,8 @@ public class PackageManagerService extends IPackageManager.Stub { private List<ResolveInfo> filterCandidatesWithDomainPreferredActivitiesLPr( int flags, List<ResolveInfo> candidates, CrossProfileDomainInfo xpDomainInfo) { if (DEBUG_PREFERRED) { Slog.v("TAG", "Filtering results with prefered activities. Candidates count: " + if (DEBUG_PREFERRED || DEBUG_DOMAIN_VERIFICATION) { Slog.v("TAG", "Filtering results with preferred activities. Candidates count: " + candidates.size()); } Loading @@ -4582,9 +4582,9 @@ public class PackageManagerService extends IPackageManager.Stub { synchronized (mPackages) { final int count = candidates.size(); // First, try to use the domain preferred app. Partition the candidates into four lists: // First, try to use linked apps. Partition the candidates into four lists: // one for the final results, one for the "do not use ever", one for "undefined status" // and finally one for "Browser App type". // and finally one for "browser app type". for (int n=0; n<count; n++) { ResolveInfo info = candidates.get(n); String packageName = info.activityInfo.packageName; Loading @@ -4598,11 +4598,20 @@ public class PackageManagerService extends IPackageManager.Stub { // Try to get the status from User settings first int status = getDomainVerificationStatusLPr(ps, userId); if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) { if (DEBUG_DOMAIN_VERIFICATION) { Slog.i(TAG, " + always: " + info.activityInfo.packageName); } alwaysList.add(info); } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER) { if (DEBUG_DOMAIN_VERIFICATION) { Slog.i(TAG, " + never: " + info.activityInfo.packageName); } neverList.add(info); } else if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED || status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK) { if (DEBUG_DOMAIN_VERIFICATION) { Slog.i(TAG, " + ask: " + info.activityInfo.packageName); } undefinedList.add(info); } } Loading Loading @@ -4650,17 +4659,20 @@ public class PackageManagerService extends IPackageManager.Stub { } } // If there is nothing selected, add all candidates and remove the ones that the User // has explicitely put into the INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER state // If there is nothing selected, add all candidates and remove the ones that the user // has explicitly put into the INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER state if (result.size() == 0) { result.addAll(candidates); result.removeAll(neverList); } } } if (DEBUG_PREFERRED) { Slog.v("TAG", "Filtered results with prefered activities. New candidates count: " + if (DEBUG_PREFERRED || DEBUG_DOMAIN_VERIFICATION) { Slog.v(TAG, "Filtered results with preferred activities. New candidates count: " + result.size()); for (ResolveInfo info : result) { Slog.v(TAG, " + " + info.activityInfo); } } return result; } Loading
services/core/java/com/android/server/pm/Settings.java +1 −29 Original line number Diff line number Diff line Loading @@ -1058,36 +1058,8 @@ final class Settings { } return false; } current.setDomainVerificationStatusForUser(status, userId); if (current.getIntentFilterVerificationInfo() == null) { if (DEBUG_DOMAIN_VERIFICATION) { Slog.w(PackageManagerService.TAG, "No IntentFilterVerificationInfo known: " + packageName); } return false; } // Then, if we set a ALWAYS status, then put NEVER status for Apps whose IntentFilter // domains overlap the domains of the current package ArraySet<String> currentDomains = current.getIntentFilterVerificationInfo().getDomains(); if (status == INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS) { for (PackageSetting ps : mPackages.values()) { if (ps == null || ps.pkg == null || packageName.equals(ps.pkg.packageName)) { continue; } IntentFilterVerificationInfo ivi = ps.getIntentFilterVerificationInfo(); if (ivi == null) { continue; } ArraySet<String> set = ivi.getDomains(); set.retainAll(currentDomains); if (set.size() > 0) { ps.setDomainVerificationStatusForUser( INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER, userId); } } } current.setDomainVerificationStatusForUser(status, userId); return true; } Loading