Merge "Ignore abandon after install relinquished." into mnc-dev
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 89ca00e..dcf668d 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -127,6 +127,8 @@
@GuardedBy("mLock")
private boolean mPermissionsAccepted = false;
@GuardedBy("mLock")
+ private boolean mRelinquished = false;
+ @GuardedBy("mLock")
private boolean mDestroyed = false;
private int mFinalStatus;
@@ -557,6 +559,7 @@
user = new UserHandle(userId);
}
+ mRelinquished = true;
mPm.installStage(mPackageName, stageDir, stageCid, localObserver, params,
installerPackageName, installerUid, user);
}
@@ -928,6 +931,10 @@
@Override
public void abandon() {
+ if (mRelinquished) {
+ Slog.d(TAG, "Ignoring abandon after commit relinquished control");
+ return;
+ }
destroyInternal();
dispatchSessionFinished(INSTALL_FAILED_ABORTED, "Session was abandoned", null);
}
@@ -958,8 +965,7 @@
}
}
if (stageDir != null) {
- FileUtils.deleteContents(stageDir);
- stageDir.delete();
+ mPm.mInstaller.rmPackageDir(stageDir.getAbsolutePath());
}
if (stageCid != null) {
PackageHelper.destroySdDir(stageCid);
@@ -990,6 +996,7 @@
pw.printPair("mProgress", mProgress);
pw.printPair("mSealed", mSealed);
pw.printPair("mPermissionsAccepted", mPermissionsAccepted);
+ pw.printPair("mRelinquished", mRelinquished);
pw.printPair("mDestroyed", mDestroyed);
pw.printPair("mBridges", mBridges.size());
pw.printPair("mFinalStatus", mFinalStatus);