summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Tate <ctate@android.com>2020-03-20 18:30:24 +0000
committerAnis Assi <anisassi@google.com>2020-06-30 16:11:42 -0700
commit651c8328c16d818e2aa1194a804babc48480a84d (patch)
tree848e0fe9efdd17e4f97c0593b021258e02e7711f
parent6c68f9b46601578acae0520cc476f06fb4acee16 (diff)
downloadbase-651c8328c16d818e2aa1194a804babc48480a84d.tar.gz
Revert "Revoke 'always' web handler status when not autoverifying"
This reverts commit ce22265eeda3a96613b9a7bb7dd898c69d295964. 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: Ifac4f0c044c2c575a29bdd5ce5d14d12373fbe70 Merged-In: If9046cb420961b8ef0333e9f1115eb69fb92242e Change-Id: Ife6cd66e0bae5738c08962a8fa9397973e33f28e (cherry picked from commit 63b6cfd96485c11b906ca4ecc83245335d531364)
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java44
-rw-r--r--services/core/java/com/android/server/pm/Settings.java1
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 6d4fa6965285..5fc59e7eeccd 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -17657,48 +17657,36 @@ 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) {
@@ -17718,23 +17706,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 ffaca6968ff8..5177995a8353 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -1319,7 +1319,6 @@ public final class Settings {
return false;
}
ps.clearDomainVerificationStatusForUser(userId);
- ps.setIntentFilterVerificationInfo(null);
return true;
}