Loading core/java/android/content/pm/PackageParser.java +13 −0 Original line number Diff line number Diff line Loading @@ -4955,6 +4955,19 @@ public class PackageParser { } } public List<String> getChildPackageNames() { if (childPackages == null) { return null; } final int childCount = childPackages.size(); final List<String> childPackageNames = new ArrayList<>(childCount); for (int i = 0; i < childCount; i++) { String childPackageName = childPackages.get(i).packageName; childPackageNames.add(childPackageName); } return childPackageNames; } public boolean hasChildPackage(String packageName) { final int childCount = (childPackages != null) ? childPackages.size() : 0; for (int i = 0; i < childCount; i++) { Loading core/java/android/content/pm/PackageUserState.java +73 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; import android.util.ArraySet; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; /** Loading Loading @@ -147,4 +148,76 @@ public class PackageUserState { return componentInfo.enabled; } @Override final public boolean equals(Object obj) { if (!(obj instanceof PackageUserState)) { return false; } final PackageUserState oldState = (PackageUserState) obj; if (ceDataInode != oldState.ceDataInode) { return false; } if (installed != oldState.installed) { return false; } if (stopped != oldState.stopped) { return false; } if (notLaunched != oldState.notLaunched) { return false; } if (hidden != oldState.hidden) { return false; } if (suspended != oldState.suspended) { return false; } if (blockUninstall != oldState.blockUninstall) { return false; } if (enabled != oldState.enabled) { return false; } if ((lastDisableAppCaller == null && oldState.lastDisableAppCaller != null) || (lastDisableAppCaller != null && !lastDisableAppCaller.equals(oldState.lastDisableAppCaller))) { return false; } if (domainVerificationStatus != oldState.domainVerificationStatus) { return false; } if (appLinkGeneration != oldState.appLinkGeneration) { return false; } if ((disabledComponents == null && oldState.disabledComponents != null) || (disabledComponents != null && oldState.disabledComponents == null)) { return false; } if (disabledComponents != null) { if (disabledComponents.size() != oldState.disabledComponents.size()) { return false; } for (int i = disabledComponents.size() - 1; i >=0; --i) { if (!oldState.disabledComponents.contains(disabledComponents.valueAt(i))) { return false; } } } if ((enabledComponents == null && oldState.enabledComponents != null) || (enabledComponents != null && oldState.enabledComponents == null)) { return false; } if (enabledComponents != null) { if (enabledComponents.size() != oldState.enabledComponents.size()) { return false; } for (int i = enabledComponents.size() - 1; i >=0; --i) { if (!oldState.enabledComponents.contains(enabledComponents.valueAt(i))) { return false; } } } return true; } } services/core/java/com/android/server/pm/PackageManagerService.java +7 −6 Original line number Diff line number Diff line Loading @@ -3146,7 +3146,7 @@ public class PackageManagerService extends IPackageManager.Stub { // reader synchronized (mPackages) { for (int i=names.length-1; i>=0; i--) { String cur = mSettings.mRenamedPackages.get(names[i]); String cur = mSettings.getRenamedPackage(names[i]); out[i] = cur != null ? cur : names[i]; } } Loading Loading @@ -6795,7 +6795,7 @@ public class PackageManagerService extends IPackageManager.Stub { // reader synchronized (mPackages) { // Look to see if we already know about this package. String oldName = mSettings.mRenamedPackages.get(pkg.packageName); String oldName = mSettings.getRenamedPackage(pkg.packageName); if (pkg.mOriginalPackages != null && pkg.mOriginalPackages.contains(oldName)) { // This package has been renamed to its original name. Let's // use that. Loading Loading @@ -8104,7 +8104,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (pkg.mOriginalPackages != null) { // This package may need to be renamed to a previously // installed name. Let's check on that... final String renamed = mSettings.mRenamedPackages.get(pkg.mRealPackage); final String renamed = mSettings.getRenamedPackage(pkg.mRealPackage); if (pkg.mOriginalPackages.contains(renamed)) { // This package had originally been installed as the // original name, and we have already taken care of Loading Loading @@ -14044,14 +14044,15 @@ public class PackageManagerService extends IPackageManager.Stub { if (DEBUG_INSTALL) Slog.d(TAG, "installNewPackageLI: " + pkg); synchronized(mPackages) { if (mSettings.mRenamedPackages.containsKey(pkgName)) { final String renamedPackage = mSettings.getRenamedPackage(pkgName); if (renamedPackage != null) { // A package with the same name is already installed, though // it has been renamed to an older name. The package we // are trying to install should be installed as an update to // the existing one, but that has not been requested, so bail. res.setError(INSTALL_FAILED_ALREADY_EXISTS, "Attempt to re-install " + pkgName + " without first uninstalling package running as " + mSettings.mRenamedPackages.get(pkgName)); + renamedPackage); return; } if (mPackages.containsKey(pkgName)) { Loading Loading @@ -14910,7 +14911,7 @@ public class PackageManagerService extends IPackageManager.Stub { synchronized (mPackages) { // Check if installing already existing package if ((installFlags & PackageManager.INSTALL_REPLACE_EXISTING) != 0) { String oldName = mSettings.mRenamedPackages.get(pkgName); String oldName = mSettings.getRenamedPackage(pkgName); if (pkg.mOriginalPackages != null && pkg.mOriginalPackages.contains(oldName) && mPackages.containsKey(oldName)) { services/core/java/com/android/server/pm/PackageSettingBase.java +1 −1 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ abstract class PackageSettingBase extends SettingBase { PackageKeySetData keySetData = new PackageKeySetData(); private static final PackageUserState DEFAULT_USER_STATE = new PackageUserState(); static final PackageUserState DEFAULT_USER_STATE = new PackageUserState(); // Whether this package is currently stopped, thus can not be // started until explicitly launched by the user. Loading services/core/java/com/android/server/pm/Settings.java +209 −124 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
core/java/android/content/pm/PackageParser.java +13 −0 Original line number Diff line number Diff line Loading @@ -4955,6 +4955,19 @@ public class PackageParser { } } public List<String> getChildPackageNames() { if (childPackages == null) { return null; } final int childCount = childPackages.size(); final List<String> childPackageNames = new ArrayList<>(childCount); for (int i = 0; i < childCount; i++) { String childPackageName = childPackages.get(i).packageName; childPackageNames.add(childPackageName); } return childPackageNames; } public boolean hasChildPackage(String packageName) { final int childCount = (childPackages != null) ? childPackages.size() : 0; for (int i = 0; i < childCount; i++) { Loading
core/java/android/content/pm/PackageUserState.java +73 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; import android.util.ArraySet; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; /** Loading Loading @@ -147,4 +148,76 @@ public class PackageUserState { return componentInfo.enabled; } @Override final public boolean equals(Object obj) { if (!(obj instanceof PackageUserState)) { return false; } final PackageUserState oldState = (PackageUserState) obj; if (ceDataInode != oldState.ceDataInode) { return false; } if (installed != oldState.installed) { return false; } if (stopped != oldState.stopped) { return false; } if (notLaunched != oldState.notLaunched) { return false; } if (hidden != oldState.hidden) { return false; } if (suspended != oldState.suspended) { return false; } if (blockUninstall != oldState.blockUninstall) { return false; } if (enabled != oldState.enabled) { return false; } if ((lastDisableAppCaller == null && oldState.lastDisableAppCaller != null) || (lastDisableAppCaller != null && !lastDisableAppCaller.equals(oldState.lastDisableAppCaller))) { return false; } if (domainVerificationStatus != oldState.domainVerificationStatus) { return false; } if (appLinkGeneration != oldState.appLinkGeneration) { return false; } if ((disabledComponents == null && oldState.disabledComponents != null) || (disabledComponents != null && oldState.disabledComponents == null)) { return false; } if (disabledComponents != null) { if (disabledComponents.size() != oldState.disabledComponents.size()) { return false; } for (int i = disabledComponents.size() - 1; i >=0; --i) { if (!oldState.disabledComponents.contains(disabledComponents.valueAt(i))) { return false; } } } if ((enabledComponents == null && oldState.enabledComponents != null) || (enabledComponents != null && oldState.enabledComponents == null)) { return false; } if (enabledComponents != null) { if (enabledComponents.size() != oldState.enabledComponents.size()) { return false; } for (int i = enabledComponents.size() - 1; i >=0; --i) { if (!oldState.enabledComponents.contains(enabledComponents.valueAt(i))) { return false; } } } return true; } }
services/core/java/com/android/server/pm/PackageManagerService.java +7 −6 Original line number Diff line number Diff line Loading @@ -3146,7 +3146,7 @@ public class PackageManagerService extends IPackageManager.Stub { // reader synchronized (mPackages) { for (int i=names.length-1; i>=0; i--) { String cur = mSettings.mRenamedPackages.get(names[i]); String cur = mSettings.getRenamedPackage(names[i]); out[i] = cur != null ? cur : names[i]; } } Loading Loading @@ -6795,7 +6795,7 @@ public class PackageManagerService extends IPackageManager.Stub { // reader synchronized (mPackages) { // Look to see if we already know about this package. String oldName = mSettings.mRenamedPackages.get(pkg.packageName); String oldName = mSettings.getRenamedPackage(pkg.packageName); if (pkg.mOriginalPackages != null && pkg.mOriginalPackages.contains(oldName)) { // This package has been renamed to its original name. Let's // use that. Loading Loading @@ -8104,7 +8104,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (pkg.mOriginalPackages != null) { // This package may need to be renamed to a previously // installed name. Let's check on that... final String renamed = mSettings.mRenamedPackages.get(pkg.mRealPackage); final String renamed = mSettings.getRenamedPackage(pkg.mRealPackage); if (pkg.mOriginalPackages.contains(renamed)) { // This package had originally been installed as the // original name, and we have already taken care of Loading Loading @@ -14044,14 +14044,15 @@ public class PackageManagerService extends IPackageManager.Stub { if (DEBUG_INSTALL) Slog.d(TAG, "installNewPackageLI: " + pkg); synchronized(mPackages) { if (mSettings.mRenamedPackages.containsKey(pkgName)) { final String renamedPackage = mSettings.getRenamedPackage(pkgName); if (renamedPackage != null) { // A package with the same name is already installed, though // it has been renamed to an older name. The package we // are trying to install should be installed as an update to // the existing one, but that has not been requested, so bail. res.setError(INSTALL_FAILED_ALREADY_EXISTS, "Attempt to re-install " + pkgName + " without first uninstalling package running as " + mSettings.mRenamedPackages.get(pkgName)); + renamedPackage); return; } if (mPackages.containsKey(pkgName)) { Loading Loading @@ -14910,7 +14911,7 @@ public class PackageManagerService extends IPackageManager.Stub { synchronized (mPackages) { // Check if installing already existing package if ((installFlags & PackageManager.INSTALL_REPLACE_EXISTING) != 0) { String oldName = mSettings.mRenamedPackages.get(pkgName); String oldName = mSettings.getRenamedPackage(pkgName); if (pkg.mOriginalPackages != null && pkg.mOriginalPackages.contains(oldName) && mPackages.containsKey(oldName)) {
services/core/java/com/android/server/pm/PackageSettingBase.java +1 −1 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ abstract class PackageSettingBase extends SettingBase { PackageKeySetData keySetData = new PackageKeySetData(); private static final PackageUserState DEFAULT_USER_STATE = new PackageUserState(); static final PackageUserState DEFAULT_USER_STATE = new PackageUserState(); // Whether this package is currently stopped, thus can not be // started until explicitly launched by the user. Loading
services/core/java/com/android/server/pm/Settings.java +209 −124 File changed.Preview size limit exceeded, changes collapsed. Show changes