summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java28
-rw-r--r--services/core/java/com/android/server/pm/Settings.java30
2 files changed, 21 insertions, 37 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 8fbdfcaafb3d..a3fc31ce7b26 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -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());
}
@@ -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;
@@ -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);
}
}
@@ -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;
}
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 967d71827787..4e85e3925863 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -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;
}