diff options
3 files changed, 78 insertions, 2 deletions
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java index 824dd4a5fdaf..d688a1a036d1 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -44,6 +44,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Process; +import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; @@ -100,7 +101,8 @@ public class PackageInstallerActivity extends Activity { private int mActivityResultCode = Activity.RESULT_CANCELED; private int mPendingUserActionReason = -1; - private final boolean mLocalLOGV = false; + private final boolean mLocalLOGV = + TextUtils.equals("userdebug", SystemProperties.get("ro.build.type", "")); PackageManager mPm; AppOpsManager mAppOpsManager; UserManager mUserManager; @@ -143,6 +145,11 @@ public class PackageInstallerActivity extends Activity { private AlertDialog mDialog; private void startInstallConfirm() { + if (mLocalLOGV) { + Log.d(TAG, "startInstallConfirm mAppInfo = " + mAppInfo + + ", existingUpdateOwner = " + getExistingUpdateOwner() + + ", mOriginatingPackage = " + mOriginatingPackage); + } TextView viewToEnable; if (mAppInfo != null) { @@ -183,6 +190,10 @@ public class PackageInstallerActivity extends Activity { try { final String packageName = mPkgInfo.packageName; final InstallSourceInfo sourceInfo = mPm.getInstallSourceInfo(packageName); + if (mLocalLOGV) { + Log.d(TAG, "getExistingUpdateOwner mAppInfo = " + mAppInfo + + ", packageName = " + packageName + ", sourceInfo = " + sourceInfo); + } return sourceInfo.getUpdateOwnerPackageName(); } catch (NameNotFoundException e) { return null; @@ -303,6 +314,12 @@ public class PackageInstallerActivity extends Activity { private void initiateInstall() { final String existingUpdateOwner = getExistingUpdateOwner(); + if (mLocalLOGV) { + Log.d(TAG, "initiateInstall mAppInfo = " + mAppInfo + + ", existingUpdateOwner = " + existingUpdateOwner + + ", mOriginatingPackage = " + mOriginatingPackage + + ", mSessionId = " + mSessionId); + } if (mSessionId == SessionInfo.INVALID_ID && !TextUtils.isEmpty(existingUpdateOwner) && !TextUtils.equals(existingUpdateOwner, mOriginatingPackage)) { @@ -814,15 +831,28 @@ public class PackageInstallerActivity extends Activity { @Override public void onOpChanged(String op, String packageName) { + if (mLocalLOGV) { + Log.d(TAG, "UnknownSourcesListener onOpChanged op = " + op + + ", packageName = " + packageName + + ", mOriginatingPackage = " + mOriginatingPackage); + } if (!mOriginatingPackage.equals(packageName)) { return; } unregister(this); mActiveUnknownSourcesListeners.remove(this); + if (mLocalLOGV) { + Log.d(TAG, "UnknownSourcesListener onOpChanged isDestroyed() = " + + isDestroyed()); + } if (isDestroyed()) { return; } new Handler(Looper.getMainLooper()).postDelayed(() -> { + if (mLocalLOGV) { + Log.d(TAG, "UnknownSourcesListener onOpChanged post isDestroyed()" + + "= " + isDestroyed() + ", getIntent() = " + getIntent()); + } if (!isDestroyed()) { startActivity(getIntent()); // The start flag (FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP) doesn't @@ -840,6 +870,9 @@ public class PackageInstallerActivity extends Activity { } private void register(UnknownSourcesListener listener) { + if (mLocalLOGV) { + Log.d(TAG, "UnknownSourcesListener register"); + } mAppOpsManager.startWatchingMode( AppOpsManager.OPSTR_REQUEST_INSTALL_PACKAGES, mOriginatingPackage, listener); @@ -847,6 +880,9 @@ public class PackageInstallerActivity extends Activity { } private void unregister(UnknownSourcesListener listener) { + if (mLocalLOGV) { + Log.d(TAG, "UnknownSourcesListener unregister"); + } mAppOpsManager.stopWatchingMode(listener); mActiveUnknownSourcesListeners.remove(listener); } diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index c581622914fa..897ee4312d22 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -1102,6 +1102,17 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { final boolean isUpdateOwnershipEnforcementEnabled = mPm.isUpdateOwnershipEnforcementAvailable() && existingUpdateOwnerPackageName != null; + + if (Build.IS_USERDEBUG) { + Log.d("updateowner", "PackageInstallerSession computeUserActionRequirement" + + " isUpdateOwnershipEnforcementEnabled= " + isUpdateOwnershipEnforcementEnabled + + ", mPm.isUpdateOwnershipEnforcementAvailable= " + + mPm.isUpdateOwnershipEnforcementAvailable() + + ", existingUpdateOwnerPackageName=" + existingUpdateOwnerPackageName + + ", isUpdateOwner= " + isUpdateOwner + ", getInstallerPackageName()= " + + getInstallerPackageName() + ", isInstallerShell= " + isInstallerShell + + ", mInstallerUid=" + mInstallerUid + ", packageName = " + packageName); + } // For an installation that un-archives an app, if the installer doesn't have the // INSTALL_PACKAGES permission, the user should have already been prompted to confirm the // un-archive request. There's no need for another confirmation during the installation. @@ -1115,6 +1126,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { || isInstallUnarchive; if (noUserActionNecessary) { + if (Build.IS_USERDEBUG) { + Log.d("updateowner", "PackageInstallerSession computeUserActionRequirement" + + " noUserActionNecessary userActionNotTypicallyNeededResponse"); + } return userActionNotTypicallyNeededResponse; } @@ -1124,15 +1139,27 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { && !isInstallerShell // We don't enforce the update ownership for the managed user and profile. && !isFromManagedUserOrProfile) { + if (Build.IS_USERDEBUG) { + Log.d("updateowner", "PackageInstallerSession computeUserActionRequirement" + + "USER_ACTION_REQUIRED_UPDATE_OWNER_REMINDER"); + } return USER_ACTION_REQUIRED_UPDATE_OWNER_REMINDER; } if (isPermissionGranted) { + if (Build.IS_USERDEBUG) { + Log.d("updateowner", "PackageInstallerSession computeUserActionRequirement" + + " permission userActionNotTypicallyNeededResponse"); + } return userActionNotTypicallyNeededResponse; } if (snapshot.isInstallDisabledForPackage(getInstallerPackageName(), mInstallerUid, userId)) { + if (Build.IS_USERDEBUG) { + Log.d("updateowner", "PackageInstallerSession computeUserActionRequirement" + + " disable USER_ACTION_REQUIRED"); + } // show the installer to account for device policy or unknown sources use cases return USER_ACTION_REQUIRED; } @@ -1141,9 +1168,17 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { && isUpdateWithoutUserActionPermissionGranted && ((isUpdateOwnershipEnforcementEnabled ? isUpdateOwner : isInstallerOfRecord) || isSelfUpdate)) { + if (Build.IS_USERDEBUG) { + Log.d("updateowner", "PackageInstallerSession computeUserActionRequirement" + + " USER_ACTION_PENDING_APK_PARSING"); + } return USER_ACTION_PENDING_APK_PARSING; } + if (Build.IS_USERDEBUG) { + Log.d("updateowner", "PackageInstallerSession computeUserActionRequirement" + + " USER_ACTION_REQUIRED"); + } return USER_ACTION_REQUIRED; } @@ -2714,6 +2749,11 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { @UserActionRequirement int userActionRequirement = USER_ACTION_NOT_NEEDED; // TODO(b/159331446): Move this to makeSessionActiveForInstall and update javadoc userActionRequirement = session.computeUserActionRequirement(); + if (Build.IS_USERDEBUG) { + Log.d("updateowner", "PackageInstallerSession checkUserActionRequirement" + + " userActionRequirement= " + userActionRequirement + + ", session.packageName= " + session.getPackageName()); + } session.updateUserActionRequirement(userActionRequirement); if (userActionRequirement == USER_ACTION_REQUIRED || userActionRequirement == USER_ACTION_REQUIRED_UPDATE_OWNER_REMINDER) { diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 611e0d86202a..c8cf938099f4 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -340,7 +340,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService static final boolean DEBUG_UPGRADE = false; static final boolean DEBUG_DOMAIN_VERIFICATION = false; static final boolean DEBUG_BACKUP = false; - public static final boolean DEBUG_INSTALL = false; + public static final boolean DEBUG_INSTALL = Build.IS_USERDEBUG; public static final boolean DEBUG_REMOVE = false; static final boolean DEBUG_PACKAGE_INFO = false; static final boolean DEBUG_INTENT_MATCHING = false; |