diff options
author | Chris Tate <ctate@android.com> | 2020-03-20 18:40:14 +0000 |
---|---|---|
committer | Anis Assi <anisassi@google.com> | 2020-06-30 16:10:51 -0700 |
commit | e73eef600cda973391f8b226dbb9aedf74492298 (patch) | |
tree | 686bcb879826d638aeb3c720ee98c049304476af | |
parent | ba882622fe03e16bfa4b9231213cff03f5c6217e (diff) | |
download | base-e73eef600cda973391f8b226dbb9aedf74492298.tar.gz |
Revert "Revoke 'always' web handler status when not autoverifying"
This reverts commit 6cf5f92825df545bd011b7163418f2ea0b337af3.
Reason for revert: Inadvertently broke link handling stickiness even for well behaved apps
Bug: 146204120
Test: install app that handles web urls; set to 'always' in Settings;
install same apk again. Verify that app is still in 'always' state via
'adb shell dumpsys package d'
Merged-In: I2b108064794b961904811c5d9f54c37dd2c7f482
Merged-In: If9046cb420961b8ef0333e9f1115eb69fb92242e
Change-Id: I03a121c0c1284c965bb87ee426eb0376681cf7d8
(cherry picked from commit 92561d210d2382880fd6b2fd5a4dfa2d0cc00920)
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 44 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 1 |
2 files changed, 11 insertions, 34 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index aa83764ee5a3..5f30fadc8b3f 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -18406,47 +18406,35 @@ public class PackageManagerService extends IPackageManager.Stub int count = 0; final String packageName = pkg.packageName; - boolean handlesWebUris = false; - final boolean alreadyVerified; synchronized (mPackages) { // If this is a new install and we see that we've already run verification for this // package, we have nothing to do: it means the state was restored from backup. - final IntentFilterVerificationInfo ivi = - mSettings.getIntentFilterVerificationLPr(packageName); - alreadyVerified = (ivi != null); - if (!replacing && alreadyVerified) { - if (DEBUG_DOMAIN_VERIFICATION) { - Slog.i(TAG, "Package " + packageName + " already verified: status=" - + ivi.getStatusString()); + if (!replacing) { + IntentFilterVerificationInfo ivi = + mSettings.getIntentFilterVerificationLPr(packageName); + if (ivi != null) { + if (DEBUG_DOMAIN_VERIFICATION) { + Slog.i(TAG, "Package " + packageName+ " already verified: status=" + + ivi.getStatusString()); + } + return; } - return; } - // If any filters need to be verified, then all need to be. In addition, we need to - // know whether an updating app has any web navigation intent filters, to re- - // examine handling policy even if not re-verifying. + // If any filters need to be verified, then all need to be. boolean needToVerify = false; for (PackageParser.Activity a : pkg.activities) { for (ActivityIntentInfo filter : a.intents) { - if (filter.handlesWebUris(true)) { - handlesWebUris = true; - } if (filter.needsVerification() && needsNetworkVerificationLPr(filter)) { if (DEBUG_DOMAIN_VERIFICATION) { Slog.d(TAG, "Intent filter needs verification, so processing all filters"); } needToVerify = true; - // It's safe to break out here because filter.needsVerification() - // can only be true if filter.handlesWebUris(true) returns true, so - // we've already noted that. break; } } } - // Note whether this app publishes any web navigation handling support at all, - // and whether there are any web-nav filters that fit the profile for running - // a verification pass now. if (needToVerify) { final int verificationId = mIntentFilterVerificationToken++; for (PackageParser.Activity a : pkg.activities) { @@ -18466,23 +18454,13 @@ public class PackageManagerService extends IPackageManager.Stub } if (count > 0) { - // count > 0 means that we're running a full verification pass if (DEBUG_DOMAIN_VERIFICATION) Slog.d(TAG, "Starting " + count + " IntentFilter verification" + (count > 1 ? "s" : "") + " for userId:" + userId); mIntentFilterVerifier.startVerifications(userId); - } else if (alreadyVerified && handlesWebUris) { - // App used autoVerify in the past, no longer does, but still handles web - // navigation starts. - if (DEBUG_DOMAIN_VERIFICATION) { - Slog.d(TAG, "App changed web filters but no longer verifying - resetting policy"); - } - synchronized (mPackages) { - clearIntentFilterVerificationsLPw(packageName, userId); - } } else { if (DEBUG_DOMAIN_VERIFICATION) { - Slog.d(TAG, "No web filters or no prior verify policy for " + packageName); + Slog.d(TAG, "No filters or not all autoVerify for " + packageName); } } } diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 5ab97a4e9f35..45d0c585627b 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -1377,7 +1377,6 @@ final class Settings { return false; } ps.clearDomainVerificationStatusForUser(userId); - ps.setIntentFilterVerificationInfo(null); return true; } |