diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 73b000e7cbf1..10c30e34ce1f 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1141,11 +1141,22 @@ public class PackageManagerService extends IPackageManager.Stub switch (userStatus) { case INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS: if (!verified) { - // updatedStatus is already UNDEFINED - needUpdate = true; - - if (DEBUG_DOMAIN_VERIFICATION) { - Slog.d(TAG, "Formerly validated but now failing; demoting"); + // Don't demote if sysconfig says 'always' + SystemConfig systemConfig = SystemConfig.getInstance(); + ArraySet<String> packages = systemConfig.getLinkedApps(); + if (!packages.contains(packageName)) { + // updatedStatus is already UNDEFINED + needUpdate = true; + + if (DEBUG_DOMAIN_VERIFICATION) { + Slog.d(TAG, "Formerly validated but now failing; demoting"); + } + } else { + if (DEBUG_DOMAIN_VERIFICATION) { + Slog.d(TAG, "Updating bundled package " + packageName + + " failed autoVerify, but sysconfig supersedes"); + } + // leave needUpdate == false here intentionally } } break; |