Loading services/core/java/com/android/server/pm/PackageManagerService.java +7 −29 Original line number Diff line number Diff line Loading @@ -2720,11 +2720,12 @@ public class PackageManagerService extends IPackageManager.Stub * application can be scanned. */ if (mSettings.isDisabledSystemPackageLPr(ps.name)) { logCriticalInfo(Log.WARN, "Expecting better updated system app for " + ps.name + "; removing system app. Last known codePath=" + ps.codePathString + ", installStatus=" + ps.installStatus + ", versionCode=" + ps.versionCode + "; scanned versionCode=" + scannedPkg.getLongVersionCode()); logCriticalInfo(Log.WARN, "Expecting better updated system app for " + ps.name + "; removing system app. Last known" + " codePath=" + ps.codePathString + ", versionCode=" + ps.versionCode + "; scanned versionCode=" + scannedPkg.getLongVersionCode()); removePackageLI(scannedPkg, true); mExpectingBetter.put(ps.name, ps.codePath); } Loading Loading @@ -2753,18 +2754,6 @@ public class PackageManagerService extends IPackageManager.Stub } } //look for any incomplete package installations ArrayList<PackageSetting> deletePkgsList = mSettings.getListOfIncompleteInstallPackagesLPr(); for (int i = 0; i < deletePkgsList.size(); i++) { // Actual deletion of code and data will be handled by later // reconciliation step final String packageName = deletePkgsList.get(i).name; logCriticalInfo(Log.WARN, "Cleaning up incompletely installed app: " + packageName); synchronized (mPackages) { mSettings.removePackageLPw(packageName); } } //delete tmp files deleteTempPackageFiles(); Loading Loading @@ -16574,17 +16563,7 @@ public class PackageManagerService extends IPackageManager.Stub PackageInstalledInfo res, UserHandle user, int installReason) { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "updateSettings"); String pkgName = pkg.packageName; synchronized (mPackages) { //write settings. the installStatus will be incomplete at this stage. //note that the new package setting would have already been //added to mPackages. It hasn't been persisted yet. mSettings.setInstallStatus(pkgName, PackageSettingBase.PKG_INSTALL_INCOMPLETE); // TODO: Remove this write? It's also written at the end of this method Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "writeSettings"); mSettings.writeLPr(); Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } final String pkgName = pkg.packageName; if (DEBUG_INSTALL) Slog.d(TAG, "New package installed in " + pkg.codePath); synchronized (mPackages) { Loading Loading @@ -16665,7 +16644,6 @@ public class PackageManagerService extends IPackageManager.Stub res.name = pkgName; res.uid = pkg.applicationInfo.uid; res.pkg = pkg; mSettings.setInstallStatus(pkgName, PackageSettingBase.PKG_INSTALL_COMPLETE); mSettings.setInstallerPackageName(pkgName, installerPackageName); res.setReturnCode(PackageManager.INSTALL_SUCCEEDED); //to update install status services/core/java/com/android/server/pm/PackageSettingBase.java +0 −24 Original line number Diff line number Diff line Loading @@ -46,19 +46,6 @@ public abstract class PackageSettingBase extends SettingBase { private static final int[] EMPTY_INT_ARRAY = new int[0]; /** * Indicates the state of installation. Used by PackageManager to figure out * incomplete installations. Say a package is being installed (the state is * set to PKG_INSTALL_INCOMPLETE) and remains so till the package * installation is successful or unsuccessful in which case the * PackageManager will no longer maintain state information associated with * the package. If some exception(like device freeze or battery being pulled * out) occurs during installation of a package, the PackageManager needs * this information to clean up the previously failed installation. */ static final int PKG_INSTALL_COMPLETE = 1; static final int PKG_INSTALL_INCOMPLETE = 0; public final String name; final String realName; Loading Loading @@ -122,8 +109,6 @@ public abstract class PackageSettingBase extends SettingBase { // started until explicitly launched by the user. private final SparseArray<PackageUserState> userState = new SparseArray<PackageUserState>(); int installStatus = PKG_INSTALL_COMPLETE; /** * Non-persisted value. During an "upgrade without restart", we need the set * of all previous code paths so we can surgically add the new APKs to the Loading Loading @@ -209,14 +194,6 @@ public abstract class PackageSettingBase extends SettingBase { return volumeUuid; } public void setInstallStatus(int newStatus) { installStatus = newStatus; } public int getInstallStatus() { return installStatus; } public void setTimeStamp(long newStamp) { timeStamp = newStamp; } Loading Loading @@ -260,7 +237,6 @@ public abstract class PackageSettingBase extends SettingBase { cpuAbiOverrideString = orig.cpuAbiOverrideString; firstInstallTime = orig.firstInstallTime; installPermissionsFixed = orig.installPermissionsFixed; installStatus = orig.installStatus; installerPackageName = orig.installerPackageName; isOrphaned = orig.isOrphaned; keySetData = orig.keySetData; Loading services/core/java/com/android/server/pm/Settings.java +1 −36 Original line number Diff line number Diff line Loading @@ -455,15 +455,6 @@ public final class Settings { return mRenamedPackages.put(pkgName, origPkgName); } void setInstallStatus(String pkgName, final int status) { PackageSetting p = mPackages.get(pkgName); if(p != null) { if(p.getInstallStatus() != status) { p.setInstallStatus(status); } } } void applyPendingPermissionGrantsLPw(String packageName, int userId) { ArrayMap<String, ArraySet<RestoredPermissionGrant>> grantsByPackage = mRestoredUserGrants.get(userId); Loading Loading @@ -2839,9 +2830,6 @@ public final class Settings { if (pkg.uidError) { serializer.attribute(null, "uidError", "true"); } if (pkg.installStatus == PackageSettingBase.PKG_INSTALL_INCOMPLETE) { serializer.attribute(null, "installStatus", "false"); } if (pkg.installerPackageName != null) { serializer.attribute(null, "installer", pkg.installerPackageName); } Loading Loading @@ -2912,20 +2900,6 @@ public final class Settings { bp.writeLPr(serializer); } ArrayList<PackageSetting> getListOfIncompleteInstallPackagesLPr() { final ArraySet<String> kList = new ArraySet<String>(mPackages.keySet()); final Iterator<String> its = kList.iterator(); final ArrayList<PackageSetting> ret = new ArrayList<PackageSetting>(); while (its.hasNext()) { final String key = its.next(); final PackageSetting ps = mPackages.get(key); if (ps.getInstallStatus() == PackageSettingBase.PKG_INSTALL_INCOMPLETE) { ret.add(ps); } } return ret; } void addPackageToCleanLPw(PackageCleanItem pkg) { if (!mPackagesToBeCleaned.contains(pkg)) { mPackagesToBeCleaned.add(pkg); Loading Loading @@ -3874,15 +3848,6 @@ public final class Settings { mInstallerPackages.add(installerPackageName); } final String installStatusStr = parser.getAttributeValue(null, "installStatus"); if (installStatusStr != null) { if (installStatusStr.equalsIgnoreCase("false")) { packageSetting.installStatus = PackageSettingBase.PKG_INSTALL_INCOMPLETE; } else { packageSetting.installStatus = PackageSettingBase.PKG_INSTALL_COMPLETE; } } int outerDepth = parser.getDepth(); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT Loading Loading @@ -4668,7 +4633,7 @@ public final class Settings { pw.print(prefix); pw.print(" signatures="); pw.println(ps.signatures); pw.print(prefix); pw.print(" installPermissionsFixed="); pw.print(ps.installPermissionsFixed); pw.print(" installStatus="); pw.println(ps.installStatus); pw.println(); pw.print(prefix); pw.print(" pkgFlags="); printFlags(pw, ps.pkgFlags, FLAG_DUMP_SPEC); pw.println(); Loading services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java +0 −1 Original line number Diff line number Diff line Loading @@ -612,7 +612,6 @@ public class PackageManagerSettingsTests { assertThat(origPkgSetting.installerPackageName, is(testPkgSetting.installerPackageName)); assertThat(origPkgSetting.installPermissionsFixed, is(testPkgSetting.installPermissionsFixed)); assertThat(origPkgSetting.installStatus, is(testPkgSetting.installStatus)); assertThat(origPkgSetting.isOrphaned, is(testPkgSetting.isOrphaned)); assertSame(origPkgSetting.keySetData, testPkgSetting.keySetData); assertThat(origPkgSetting.keySetData, is(testPkgSetting.keySetData)); Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +7 −29 Original line number Diff line number Diff line Loading @@ -2720,11 +2720,12 @@ public class PackageManagerService extends IPackageManager.Stub * application can be scanned. */ if (mSettings.isDisabledSystemPackageLPr(ps.name)) { logCriticalInfo(Log.WARN, "Expecting better updated system app for " + ps.name + "; removing system app. Last known codePath=" + ps.codePathString + ", installStatus=" + ps.installStatus + ", versionCode=" + ps.versionCode + "; scanned versionCode=" + scannedPkg.getLongVersionCode()); logCriticalInfo(Log.WARN, "Expecting better updated system app for " + ps.name + "; removing system app. Last known" + " codePath=" + ps.codePathString + ", versionCode=" + ps.versionCode + "; scanned versionCode=" + scannedPkg.getLongVersionCode()); removePackageLI(scannedPkg, true); mExpectingBetter.put(ps.name, ps.codePath); } Loading Loading @@ -2753,18 +2754,6 @@ public class PackageManagerService extends IPackageManager.Stub } } //look for any incomplete package installations ArrayList<PackageSetting> deletePkgsList = mSettings.getListOfIncompleteInstallPackagesLPr(); for (int i = 0; i < deletePkgsList.size(); i++) { // Actual deletion of code and data will be handled by later // reconciliation step final String packageName = deletePkgsList.get(i).name; logCriticalInfo(Log.WARN, "Cleaning up incompletely installed app: " + packageName); synchronized (mPackages) { mSettings.removePackageLPw(packageName); } } //delete tmp files deleteTempPackageFiles(); Loading Loading @@ -16574,17 +16563,7 @@ public class PackageManagerService extends IPackageManager.Stub PackageInstalledInfo res, UserHandle user, int installReason) { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "updateSettings"); String pkgName = pkg.packageName; synchronized (mPackages) { //write settings. the installStatus will be incomplete at this stage. //note that the new package setting would have already been //added to mPackages. It hasn't been persisted yet. mSettings.setInstallStatus(pkgName, PackageSettingBase.PKG_INSTALL_INCOMPLETE); // TODO: Remove this write? It's also written at the end of this method Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "writeSettings"); mSettings.writeLPr(); Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } final String pkgName = pkg.packageName; if (DEBUG_INSTALL) Slog.d(TAG, "New package installed in " + pkg.codePath); synchronized (mPackages) { Loading Loading @@ -16665,7 +16644,6 @@ public class PackageManagerService extends IPackageManager.Stub res.name = pkgName; res.uid = pkg.applicationInfo.uid; res.pkg = pkg; mSettings.setInstallStatus(pkgName, PackageSettingBase.PKG_INSTALL_COMPLETE); mSettings.setInstallerPackageName(pkgName, installerPackageName); res.setReturnCode(PackageManager.INSTALL_SUCCEEDED); //to update install status
services/core/java/com/android/server/pm/PackageSettingBase.java +0 −24 Original line number Diff line number Diff line Loading @@ -46,19 +46,6 @@ public abstract class PackageSettingBase extends SettingBase { private static final int[] EMPTY_INT_ARRAY = new int[0]; /** * Indicates the state of installation. Used by PackageManager to figure out * incomplete installations. Say a package is being installed (the state is * set to PKG_INSTALL_INCOMPLETE) and remains so till the package * installation is successful or unsuccessful in which case the * PackageManager will no longer maintain state information associated with * the package. If some exception(like device freeze or battery being pulled * out) occurs during installation of a package, the PackageManager needs * this information to clean up the previously failed installation. */ static final int PKG_INSTALL_COMPLETE = 1; static final int PKG_INSTALL_INCOMPLETE = 0; public final String name; final String realName; Loading Loading @@ -122,8 +109,6 @@ public abstract class PackageSettingBase extends SettingBase { // started until explicitly launched by the user. private final SparseArray<PackageUserState> userState = new SparseArray<PackageUserState>(); int installStatus = PKG_INSTALL_COMPLETE; /** * Non-persisted value. During an "upgrade without restart", we need the set * of all previous code paths so we can surgically add the new APKs to the Loading Loading @@ -209,14 +194,6 @@ public abstract class PackageSettingBase extends SettingBase { return volumeUuid; } public void setInstallStatus(int newStatus) { installStatus = newStatus; } public int getInstallStatus() { return installStatus; } public void setTimeStamp(long newStamp) { timeStamp = newStamp; } Loading Loading @@ -260,7 +237,6 @@ public abstract class PackageSettingBase extends SettingBase { cpuAbiOverrideString = orig.cpuAbiOverrideString; firstInstallTime = orig.firstInstallTime; installPermissionsFixed = orig.installPermissionsFixed; installStatus = orig.installStatus; installerPackageName = orig.installerPackageName; isOrphaned = orig.isOrphaned; keySetData = orig.keySetData; Loading
services/core/java/com/android/server/pm/Settings.java +1 −36 Original line number Diff line number Diff line Loading @@ -455,15 +455,6 @@ public final class Settings { return mRenamedPackages.put(pkgName, origPkgName); } void setInstallStatus(String pkgName, final int status) { PackageSetting p = mPackages.get(pkgName); if(p != null) { if(p.getInstallStatus() != status) { p.setInstallStatus(status); } } } void applyPendingPermissionGrantsLPw(String packageName, int userId) { ArrayMap<String, ArraySet<RestoredPermissionGrant>> grantsByPackage = mRestoredUserGrants.get(userId); Loading Loading @@ -2839,9 +2830,6 @@ public final class Settings { if (pkg.uidError) { serializer.attribute(null, "uidError", "true"); } if (pkg.installStatus == PackageSettingBase.PKG_INSTALL_INCOMPLETE) { serializer.attribute(null, "installStatus", "false"); } if (pkg.installerPackageName != null) { serializer.attribute(null, "installer", pkg.installerPackageName); } Loading Loading @@ -2912,20 +2900,6 @@ public final class Settings { bp.writeLPr(serializer); } ArrayList<PackageSetting> getListOfIncompleteInstallPackagesLPr() { final ArraySet<String> kList = new ArraySet<String>(mPackages.keySet()); final Iterator<String> its = kList.iterator(); final ArrayList<PackageSetting> ret = new ArrayList<PackageSetting>(); while (its.hasNext()) { final String key = its.next(); final PackageSetting ps = mPackages.get(key); if (ps.getInstallStatus() == PackageSettingBase.PKG_INSTALL_INCOMPLETE) { ret.add(ps); } } return ret; } void addPackageToCleanLPw(PackageCleanItem pkg) { if (!mPackagesToBeCleaned.contains(pkg)) { mPackagesToBeCleaned.add(pkg); Loading Loading @@ -3874,15 +3848,6 @@ public final class Settings { mInstallerPackages.add(installerPackageName); } final String installStatusStr = parser.getAttributeValue(null, "installStatus"); if (installStatusStr != null) { if (installStatusStr.equalsIgnoreCase("false")) { packageSetting.installStatus = PackageSettingBase.PKG_INSTALL_INCOMPLETE; } else { packageSetting.installStatus = PackageSettingBase.PKG_INSTALL_COMPLETE; } } int outerDepth = parser.getDepth(); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT Loading Loading @@ -4668,7 +4633,7 @@ public final class Settings { pw.print(prefix); pw.print(" signatures="); pw.println(ps.signatures); pw.print(prefix); pw.print(" installPermissionsFixed="); pw.print(ps.installPermissionsFixed); pw.print(" installStatus="); pw.println(ps.installStatus); pw.println(); pw.print(prefix); pw.print(" pkgFlags="); printFlags(pw, ps.pkgFlags, FLAG_DUMP_SPEC); pw.println(); Loading
services/tests/servicestests/src/com/android/server/pm/PackageManagerSettingsTests.java +0 −1 Original line number Diff line number Diff line Loading @@ -612,7 +612,6 @@ public class PackageManagerSettingsTests { assertThat(origPkgSetting.installerPackageName, is(testPkgSetting.installerPackageName)); assertThat(origPkgSetting.installPermissionsFixed, is(testPkgSetting.installPermissionsFixed)); assertThat(origPkgSetting.installStatus, is(testPkgSetting.installStatus)); assertThat(origPkgSetting.isOrphaned, is(testPkgSetting.isOrphaned)); assertSame(origPkgSetting.keySetData, testPkgSetting.keySetData); assertThat(origPkgSetting.keySetData, is(testPkgSetting.keySetData)); Loading