summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Android Build Merger (Role) <android-build-merger@google.com> 2017-06-06 16:04:32 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-06-06 16:04:39 +0000
commita7ff464ec4bcf2f0f894e7551cfb1b3979301e61 (patch)
treef5311688dff1a9e662eec9be6a1e903044343a33
parent38e4ceecfd5b5f0f2d1f1fb3666ed7f2d14512f7 (diff)
parentf5eef31de51daec220e736b87d123ae5b268bfba (diff)
Merge "Merge "Don't verify instant apps" into oc-dev am: 9bac79a540 am: 27eb2e2b5b"
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 8bd1f790e524..66c870c502c4 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -14952,7 +14952,7 @@ public class PackageManagerService extends IPackageManager.Stub
*
* @return true if verification should be performed
*/
- private boolean isVerificationEnabled(int userId, int installFlags) {
+ private boolean isVerificationEnabled(int userId, int installFlags, int installerUid) {
if (!DEFAULT_VERIFY_ENABLE) {
return false;
}
@@ -14973,6 +14973,23 @@ public class PackageManagerService extends IPackageManager.Stub
android.provider.Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB, 1) == 0) {
return false;
}
+ } else {
+ // only when not installed from ADB, skip verification for instant apps when
+ // the installer and verifier are the same.
+ if ((installFlags & PackageManager.INSTALL_INSTANT_APP) != 0) {
+ if (mInstantAppInstallerActivity != null
+ && mInstantAppInstallerActivity.packageName.equals(
+ mRequiredVerifierPackage)) {
+ try {
+ mContext.getSystemService(AppOpsManager.class)
+ .checkPackage(installerUid, mRequiredVerifierPackage);
+ if (DEBUG_VERIFY) {
+ Slog.i(TAG, "disable verification for instant app");
+ }
+ return false;
+ } catch (SecurityException ignore) { }
+ }
+ }
}
if (ensureVerifyAppsEnabled) {
@@ -15807,8 +15824,11 @@ public class PackageManagerService extends IPackageManager.Stub
final int requiredUid = mRequiredVerifierPackage == null ? -1
: getPackageUid(mRequiredVerifierPackage, MATCH_DEBUG_TRIAGED_MISSING,
verifierUser.getIdentifier());
+ final int installerUid =
+ verificationInfo == null ? -1 : verificationInfo.installerUid;
if (!origin.existing && requiredUid != -1
- && isVerificationEnabled(verifierUser.getIdentifier(), installFlags)) {
+ && isVerificationEnabled(
+ verifierUser.getIdentifier(), installFlags, installerUid)) {
final Intent verification = new Intent(
Intent.ACTION_PACKAGE_NEEDS_VERIFICATION);
verification.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);