diff options
author | Jeff Sharkey <jsharkey@android.com> | 2015-07-07 20:46:32 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-07-07 20:46:36 +0000 |
commit | dafaa45c0ea1802944566f0e71d81beb3eb55296 (patch) | |
tree | da98552288bdccc70094c89f460e52c47059f648 | |
parent | 53d17aeee07de3f4e7e88f9578f5c0b689f5b627 (diff) | |
parent | 6b7bb60457501ff4110933c3e9b66446eb4f7b19 (diff) | |
download | frameworks_base-dafaa45c0ea1802944566f0e71d81beb3eb55296.zip frameworks_base-dafaa45c0ea1802944566f0e71d81beb3eb55296.tar.gz frameworks_base-dafaa45c0ea1802944566f0e71d81beb3eb55296.tar.bz2 |
Merge "Split app move into separate copy/delete steps." into mnc-dev
-rw-r--r-- | services/core/java/com/android/server/pm/Installer.java | 4 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 44 |
2 files changed, 23 insertions, 25 deletions
diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java index 8dc4bd3..b59b4b2 100644 --- a/services/core/java/com/android/server/pm/Installer.java +++ b/services/core/java/com/android/server/pm/Installer.java @@ -264,9 +264,9 @@ public final class Installer extends SystemService { return mInstaller.execute(builder.toString()); } - public int moveCompleteApp(String fromUuid, String toUuid, String packageName, + public int copyCompleteApp(String fromUuid, String toUuid, String packageName, String dataAppName, int appId, String seinfo) { - StringBuilder builder = new StringBuilder("mvcompleteapp"); + StringBuilder builder = new StringBuilder("cpcompleteapp"); builder.append(' '); builder.append(escapeNull(fromUuid)); builder.append(' '); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 0240dbb..8fbdfca 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -11278,7 +11278,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (DEBUG_INSTALL) Slog.d(TAG, "Moving " + move.packageName + " from " + move.fromUuid + " to " + move.toUuid); synchronized (mInstaller) { - if (mInstaller.moveCompleteApp(move.fromUuid, move.toUuid, move.packageName, + if (mInstaller.copyCompleteApp(move.fromUuid, move.toUuid, move.packageName, move.dataAppName, move.appId, move.seinfo) != 0) { return PackageManager.INSTALL_FAILED_INTERNAL_ERROR; } @@ -11293,14 +11293,14 @@ public class PackageManagerService extends IPackageManager.Stub { int doPreInstall(int status) { if (status != PackageManager.INSTALL_SUCCEEDED) { - cleanUp(); + cleanUp(move.toUuid); } return status; } boolean doRename(int status, PackageParser.Package pkg, String oldCodePath) { if (status != PackageManager.INSTALL_SUCCEEDED) { - cleanUp(); + cleanUp(move.toUuid); return false; } @@ -11317,8 +11317,10 @@ public class PackageManagerService extends IPackageManager.Stub { } int doPostInstall(int status, int uid) { - if (status != PackageManager.INSTALL_SUCCEEDED) { - cleanUp(); + if (status == PackageManager.INSTALL_SUCCEEDED) { + cleanUp(move.fromUuid); + } else { + cleanUp(move.toUuid); } return status; } @@ -11333,32 +11335,28 @@ public class PackageManagerService extends IPackageManager.Stub { return (resourceFile != null) ? resourceFile.getAbsolutePath() : null; } - private boolean cleanUp() { - if (codeFile == null || !codeFile.exists()) { - return false; - } - - if (codeFile.isDirectory()) { - mInstaller.rmPackageDir(codeFile.getAbsolutePath()); - } else { - codeFile.delete(); - } - - if (resourceFile != null && !FileUtils.contains(codeFile, resourceFile)) { - resourceFile.delete(); + private boolean cleanUp(String volumeUuid) { + final File codeFile = new File(Environment.getDataAppDirectory(volumeUuid), + move.dataAppName); + Slog.d(TAG, "Cleaning up " + move.packageName + " on " + volumeUuid); + synchronized (mInstallLock) { + // Clean up both app data and code + removeDataDirsLI(volumeUuid, move.packageName); + if (codeFile.isDirectory()) { + mInstaller.rmPackageDir(codeFile.getAbsolutePath()); + } else { + codeFile.delete(); + } } - return true; } void cleanUpResourcesLI() { - cleanUp(); + throw new UnsupportedOperationException(); } boolean doPostDeleteLI(boolean delete) { - // XXX err, shouldn't we respect the delete flag? - cleanUpResourcesLI(); - return true; + throw new UnsupportedOperationException(); } } |