Loading services/core/java/com/android/server/pm/InstallPackageHelper.java +10 −7 Original line number Diff line number Diff line Loading @@ -1582,7 +1582,8 @@ final class InstallPackageHelper { final PackageFreezer freezer = freezePackageForInstall(pkgName, UserHandle.USER_ALL, installFlags, "installPackageLI", ApplicationExitInfo.REASON_PACKAGE_UPDATED); "installPackageLI", ApplicationExitInfo.REASON_PACKAGE_UPDATED, request); boolean shouldCloseFreezerBeforeReturn = true; try { final PackageState oldPackageState; Loading Loading @@ -2032,11 +2033,11 @@ final class InstallPackageHelper { } private PackageFreezer freezePackageForInstall(String packageName, int userId, int installFlags, String killReason, int exitInfoReason) { String killReason, int exitInfoReason, InstallRequest request) { if ((installFlags & PackageManager.INSTALL_DONT_KILL_APP) != 0) { return new PackageFreezer(mPm); return new PackageFreezer(mPm, request); } else { return mPm.freezePackage(packageName, userId, killReason, exitInfoReason); return mPm.freezePackage(packageName, userId, killReason, exitInfoReason, request); } } Loading Loading @@ -3207,7 +3208,7 @@ final class InstallPackageHelper { try (PackageFreezer freezer = mPm.freezePackage(stubPkg.getPackageName(), UserHandle.USER_ALL, "setEnabledSetting", ApplicationExitInfo.REASON_PACKAGE_UPDATED)) { ApplicationExitInfo.REASON_PACKAGE_UPDATED, null /* request */)) { pkg = installStubPackageLI(stubPkg, parseFlags, 0 /*scanFlags*/); mAppDataHelper.prepareAppDataAfterInstallLIF(pkg); synchronized (mPm.mLock) { Loading @@ -3231,7 +3232,8 @@ final class InstallPackageHelper { try (PackageFreezer freezer = mPm.freezePackage(stubPkg.getPackageName(), UserHandle.USER_ALL, "setEnabledSetting", ApplicationExitInfo.REASON_PACKAGE_UPDATED)) { ApplicationExitInfo.REASON_PACKAGE_UPDATED, null /* request */)) { synchronized (mPm.mLock) { // NOTE: Ensure the system package is enabled; even for a compressed stub. // If we don't, installing the system package fails during scan Loading Loading @@ -4291,7 +4293,8 @@ final class InstallPackageHelper { + " name: " + pkgSetting.getPackageName()); try (@SuppressWarnings("unused") PackageFreezer freezer = mPm.freezePackage( parsedPackage.getPackageName(), UserHandle.USER_ALL, "scanPackageInternalLI", ApplicationExitInfo.REASON_OTHER)) { "scanPackageInternalLI", ApplicationExitInfo.REASON_OTHER, null /* request */)) { DeletePackageHelper deletePackageHelper = new DeletePackageHelper(mPm); deletePackageHelper.deletePackageLIF(parsedPackage.getPackageName(), null, true, mPm.mUserManager.getUserIds(), 0, null, false); Loading services/core/java/com/android/server/pm/InstallRequest.java +12 −0 Original line number Diff line number Diff line Loading @@ -831,4 +831,16 @@ final class InstallRequest { } } } public void onFreezeStarted() { if (mPackageMetrics != null) { mPackageMetrics.onStepStarted(PackageMetrics.STEP_FREEZE_INSTALL); } } public void onFreezeCompleted() { if (mPackageMetrics != null) { mPackageMetrics.onStepFinished(PackageMetrics.STEP_FREEZE_INSTALL); } } } services/core/java/com/android/server/pm/InstallingSession.java +0 −1 Original line number Diff line number Diff line Loading @@ -543,7 +543,6 @@ class InstallingSession { mInstallPackageHelper.installPackagesTraced(installRequests); for (InstallRequest request : installRequests) { request.onInstallCompleted(); doPostInstall(request); } } Loading services/core/java/com/android/server/pm/MovePackageHelper.java +2 −1 Original line number Diff line number Diff line Loading @@ -147,7 +147,8 @@ public final class MovePackageHelper { final PackageFreezer freezer; synchronized (mPm.mLock) { freezer = mPm.freezePackage(packageName, UserHandle.USER_ALL, "movePackageInternal", ApplicationExitInfo.REASON_USER_REQUESTED); "movePackageInternal", ApplicationExitInfo.REASON_USER_REQUESTED, null /* request */); } final Bundle extras = new Bundle(); Loading services/core/java/com/android/server/pm/PackageFreezer.java +21 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.pm; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.pm.PackageManager; import dalvik.system.CloseGuard; Loading @@ -29,6 +30,8 @@ import java.util.concurrent.atomic.AtomicBoolean; * app code/data to prevent the app from running while you're working. */ final class PackageFreezer implements AutoCloseable { @Nullable private InstallRequest mInstallRequest; private final String mPackageName; private final AtomicBoolean mClosed = new AtomicBoolean(); Loading @@ -43,18 +46,29 @@ final class PackageFreezer implements AutoCloseable { * {@link PackageManager#INSTALL_DONT_KILL_APP} or * {@link PackageManager#DELETE_DONT_KILL_APP}. */ PackageFreezer(PackageManagerService pm) { PackageFreezer(PackageManagerService pm, @Nullable InstallRequest request) { mPm = pm; mPackageName = null; mClosed.set(true); mCloseGuard.open("close"); mInstallRequest = request; // We only focus on the install Freeze metrics now if (mInstallRequest != null) { mInstallRequest.onFreezeStarted(); } } PackageFreezer(String packageName, int userId, String killReason, PackageManagerService pm, int exitInfoReason) { PackageManagerService pm, int exitInfoReason, @Nullable InstallRequest request) { mPm = pm; mPackageName = packageName; mInstallRequest = request; final PackageSetting ps; // We only focus on the install Freeze metrics now if (mInstallRequest != null) { mInstallRequest.onFreezeStarted(); } synchronized (mPm.mLock) { final int refCounts = mPm.mFrozenPackages .getOrDefault(mPackageName, 0 /* defaultValue */) + 1; Loading Loading @@ -92,5 +106,10 @@ final class PackageFreezer implements AutoCloseable { } } } // We only focus on the install Freeze metrics now if (mInstallRequest != null) { mInstallRequest.onFreezeCompleted(); mInstallRequest = null; } } } Loading
services/core/java/com/android/server/pm/InstallPackageHelper.java +10 −7 Original line number Diff line number Diff line Loading @@ -1582,7 +1582,8 @@ final class InstallPackageHelper { final PackageFreezer freezer = freezePackageForInstall(pkgName, UserHandle.USER_ALL, installFlags, "installPackageLI", ApplicationExitInfo.REASON_PACKAGE_UPDATED); "installPackageLI", ApplicationExitInfo.REASON_PACKAGE_UPDATED, request); boolean shouldCloseFreezerBeforeReturn = true; try { final PackageState oldPackageState; Loading Loading @@ -2032,11 +2033,11 @@ final class InstallPackageHelper { } private PackageFreezer freezePackageForInstall(String packageName, int userId, int installFlags, String killReason, int exitInfoReason) { String killReason, int exitInfoReason, InstallRequest request) { if ((installFlags & PackageManager.INSTALL_DONT_KILL_APP) != 0) { return new PackageFreezer(mPm); return new PackageFreezer(mPm, request); } else { return mPm.freezePackage(packageName, userId, killReason, exitInfoReason); return mPm.freezePackage(packageName, userId, killReason, exitInfoReason, request); } } Loading Loading @@ -3207,7 +3208,7 @@ final class InstallPackageHelper { try (PackageFreezer freezer = mPm.freezePackage(stubPkg.getPackageName(), UserHandle.USER_ALL, "setEnabledSetting", ApplicationExitInfo.REASON_PACKAGE_UPDATED)) { ApplicationExitInfo.REASON_PACKAGE_UPDATED, null /* request */)) { pkg = installStubPackageLI(stubPkg, parseFlags, 0 /*scanFlags*/); mAppDataHelper.prepareAppDataAfterInstallLIF(pkg); synchronized (mPm.mLock) { Loading @@ -3231,7 +3232,8 @@ final class InstallPackageHelper { try (PackageFreezer freezer = mPm.freezePackage(stubPkg.getPackageName(), UserHandle.USER_ALL, "setEnabledSetting", ApplicationExitInfo.REASON_PACKAGE_UPDATED)) { ApplicationExitInfo.REASON_PACKAGE_UPDATED, null /* request */)) { synchronized (mPm.mLock) { // NOTE: Ensure the system package is enabled; even for a compressed stub. // If we don't, installing the system package fails during scan Loading Loading @@ -4291,7 +4293,8 @@ final class InstallPackageHelper { + " name: " + pkgSetting.getPackageName()); try (@SuppressWarnings("unused") PackageFreezer freezer = mPm.freezePackage( parsedPackage.getPackageName(), UserHandle.USER_ALL, "scanPackageInternalLI", ApplicationExitInfo.REASON_OTHER)) { "scanPackageInternalLI", ApplicationExitInfo.REASON_OTHER, null /* request */)) { DeletePackageHelper deletePackageHelper = new DeletePackageHelper(mPm); deletePackageHelper.deletePackageLIF(parsedPackage.getPackageName(), null, true, mPm.mUserManager.getUserIds(), 0, null, false); Loading
services/core/java/com/android/server/pm/InstallRequest.java +12 −0 Original line number Diff line number Diff line Loading @@ -831,4 +831,16 @@ final class InstallRequest { } } } public void onFreezeStarted() { if (mPackageMetrics != null) { mPackageMetrics.onStepStarted(PackageMetrics.STEP_FREEZE_INSTALL); } } public void onFreezeCompleted() { if (mPackageMetrics != null) { mPackageMetrics.onStepFinished(PackageMetrics.STEP_FREEZE_INSTALL); } } }
services/core/java/com/android/server/pm/InstallingSession.java +0 −1 Original line number Diff line number Diff line Loading @@ -543,7 +543,6 @@ class InstallingSession { mInstallPackageHelper.installPackagesTraced(installRequests); for (InstallRequest request : installRequests) { request.onInstallCompleted(); doPostInstall(request); } } Loading
services/core/java/com/android/server/pm/MovePackageHelper.java +2 −1 Original line number Diff line number Diff line Loading @@ -147,7 +147,8 @@ public final class MovePackageHelper { final PackageFreezer freezer; synchronized (mPm.mLock) { freezer = mPm.freezePackage(packageName, UserHandle.USER_ALL, "movePackageInternal", ApplicationExitInfo.REASON_USER_REQUESTED); "movePackageInternal", ApplicationExitInfo.REASON_USER_REQUESTED, null /* request */); } final Bundle extras = new Bundle(); Loading
services/core/java/com/android/server/pm/PackageFreezer.java +21 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.pm; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.pm.PackageManager; import dalvik.system.CloseGuard; Loading @@ -29,6 +30,8 @@ import java.util.concurrent.atomic.AtomicBoolean; * app code/data to prevent the app from running while you're working. */ final class PackageFreezer implements AutoCloseable { @Nullable private InstallRequest mInstallRequest; private final String mPackageName; private final AtomicBoolean mClosed = new AtomicBoolean(); Loading @@ -43,18 +46,29 @@ final class PackageFreezer implements AutoCloseable { * {@link PackageManager#INSTALL_DONT_KILL_APP} or * {@link PackageManager#DELETE_DONT_KILL_APP}. */ PackageFreezer(PackageManagerService pm) { PackageFreezer(PackageManagerService pm, @Nullable InstallRequest request) { mPm = pm; mPackageName = null; mClosed.set(true); mCloseGuard.open("close"); mInstallRequest = request; // We only focus on the install Freeze metrics now if (mInstallRequest != null) { mInstallRequest.onFreezeStarted(); } } PackageFreezer(String packageName, int userId, String killReason, PackageManagerService pm, int exitInfoReason) { PackageManagerService pm, int exitInfoReason, @Nullable InstallRequest request) { mPm = pm; mPackageName = packageName; mInstallRequest = request; final PackageSetting ps; // We only focus on the install Freeze metrics now if (mInstallRequest != null) { mInstallRequest.onFreezeStarted(); } synchronized (mPm.mLock) { final int refCounts = mPm.mFrozenPackages .getOrDefault(mPackageName, 0 /* defaultValue */) + 1; Loading Loading @@ -92,5 +106,10 @@ final class PackageFreezer implements AutoCloseable { } } } // We only focus on the install Freeze metrics now if (mInstallRequest != null) { mInstallRequest.onFreezeCompleted(); mInstallRequest = null; } } }