Loading core/java/android/content/pm/PackageParser.java +10 −0 Original line number Diff line number Diff line Loading @@ -2786,6 +2786,9 @@ public class PackageParser { // For use by package manager to keep track of where it has done dexopt. public boolean mDidDexOpt; // User set enabled state. public int mSetEnabled = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; // Additional data supplied by callers. public Object mExtras; Loading Loading @@ -3012,6 +3015,12 @@ public class PackageParser { } private static boolean copyNeeded(int flags, Package p, Bundle metaData) { if (p.mSetEnabled != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { boolean enabled = p.mSetEnabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; if (p.applicationInfo.enabled != enabled) { return true; } } if ((flags & PackageManager.GET_META_DATA) != 0 && (metaData != null || p.mAppMetaData != null)) { return true; Loading Loading @@ -3045,6 +3054,7 @@ public class PackageParser { if (!sCompatibilityModeEnabled) { ai.disableCompatibilityMode(); } ai.enabled = p.mSetEnabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; return ai; } Loading services/java/com/android/server/PackageManagerService.java +19 −7 Original line number Diff line number Diff line Loading @@ -1495,6 +1495,7 @@ class PackageManagerService extends IPackageManager.Stub { ps.pkg.applicationInfo.publicSourceDir = ps.resourcePathString; ps.pkg.applicationInfo.sourceDir = ps.codePathString; ps.pkg.applicationInfo.dataDir = getDataPathForPackage(ps.pkg).getPath(); ps.pkg.mSetEnabled = ps.enabled; } return generatePackageInfo(ps.pkg, flags); } Loading Loading @@ -6875,6 +6876,7 @@ class PackageManagerService extends IPackageManager.Stub { return; } pkgSetting.enabled = newState; pkgSetting.pkg.mSetEnabled = newState; } else { // We're dealing with a component level state change switch (newState) { Loading Loading @@ -8261,6 +8263,7 @@ class PackageManagerService extends IPackageManager.Stub { private void insertPackageSettingLP(PackageSetting p, PackageParser.Package pkg) { p.pkg = pkg; pkg.mSetEnabled = p.enabled; String codePath = pkg.applicationInfo.sourceDir; String resourcePath = pkg.applicationInfo.publicSourceDir; // Update code path if needed Loading Loading @@ -9486,6 +9489,9 @@ class PackageManagerService extends IPackageManager.Stub { } boolean isEnabledLP(ComponentInfo componentInfo, int flags) { if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { return true; } final PackageSetting packageSettings = mPackages.get(componentInfo.packageName); if (Config.LOGV) { Log.v(TAG, "isEnabledLock - packageName = " + componentInfo.packageName Loading @@ -9501,14 +9507,20 @@ class PackageManagerService extends IPackageManager.Stub { Debug.waitForDebugger(); Log.i(TAG, "We will crash!"); } return false; } if (packageSettings.enabled == COMPONENT_ENABLED_STATE_DISABLED || (packageSettings.pkg != null && !packageSettings.pkg.applicationInfo.enabled && packageSettings.enabled == COMPONENT_ENABLED_STATE_DEFAULT)) { return false; } if (packageSettings.enabledComponents.contains(componentInfo.name)) { return true; } if (packageSettings.disabledComponents.contains(componentInfo.name)) { return false; } return ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) || ((componentInfo.enabled && ((packageSettings.enabled == COMPONENT_ENABLED_STATE_ENABLED) || (componentInfo.applicationInfo.enabled && packageSettings.enabled != COMPONENT_ENABLED_STATE_DISABLED)) && !packageSettings.disabledComponents.contains(componentInfo.name)) || packageSettings.enabledComponents.contains(componentInfo.name)); return componentInfo.enabled; } } Loading Loading
core/java/android/content/pm/PackageParser.java +10 −0 Original line number Diff line number Diff line Loading @@ -2786,6 +2786,9 @@ public class PackageParser { // For use by package manager to keep track of where it has done dexopt. public boolean mDidDexOpt; // User set enabled state. public int mSetEnabled = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; // Additional data supplied by callers. public Object mExtras; Loading Loading @@ -3012,6 +3015,12 @@ public class PackageParser { } private static boolean copyNeeded(int flags, Package p, Bundle metaData) { if (p.mSetEnabled != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { boolean enabled = p.mSetEnabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; if (p.applicationInfo.enabled != enabled) { return true; } } if ((flags & PackageManager.GET_META_DATA) != 0 && (metaData != null || p.mAppMetaData != null)) { return true; Loading Loading @@ -3045,6 +3054,7 @@ public class PackageParser { if (!sCompatibilityModeEnabled) { ai.disableCompatibilityMode(); } ai.enabled = p.mSetEnabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; return ai; } Loading
services/java/com/android/server/PackageManagerService.java +19 −7 Original line number Diff line number Diff line Loading @@ -1495,6 +1495,7 @@ class PackageManagerService extends IPackageManager.Stub { ps.pkg.applicationInfo.publicSourceDir = ps.resourcePathString; ps.pkg.applicationInfo.sourceDir = ps.codePathString; ps.pkg.applicationInfo.dataDir = getDataPathForPackage(ps.pkg).getPath(); ps.pkg.mSetEnabled = ps.enabled; } return generatePackageInfo(ps.pkg, flags); } Loading Loading @@ -6875,6 +6876,7 @@ class PackageManagerService extends IPackageManager.Stub { return; } pkgSetting.enabled = newState; pkgSetting.pkg.mSetEnabled = newState; } else { // We're dealing with a component level state change switch (newState) { Loading Loading @@ -8261,6 +8263,7 @@ class PackageManagerService extends IPackageManager.Stub { private void insertPackageSettingLP(PackageSetting p, PackageParser.Package pkg) { p.pkg = pkg; pkg.mSetEnabled = p.enabled; String codePath = pkg.applicationInfo.sourceDir; String resourcePath = pkg.applicationInfo.publicSourceDir; // Update code path if needed Loading Loading @@ -9486,6 +9489,9 @@ class PackageManagerService extends IPackageManager.Stub { } boolean isEnabledLP(ComponentInfo componentInfo, int flags) { if ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) { return true; } final PackageSetting packageSettings = mPackages.get(componentInfo.packageName); if (Config.LOGV) { Log.v(TAG, "isEnabledLock - packageName = " + componentInfo.packageName Loading @@ -9501,14 +9507,20 @@ class PackageManagerService extends IPackageManager.Stub { Debug.waitForDebugger(); Log.i(TAG, "We will crash!"); } return false; } if (packageSettings.enabled == COMPONENT_ENABLED_STATE_DISABLED || (packageSettings.pkg != null && !packageSettings.pkg.applicationInfo.enabled && packageSettings.enabled == COMPONENT_ENABLED_STATE_DEFAULT)) { return false; } if (packageSettings.enabledComponents.contains(componentInfo.name)) { return true; } if (packageSettings.disabledComponents.contains(componentInfo.name)) { return false; } return ((flags&PackageManager.GET_DISABLED_COMPONENTS) != 0) || ((componentInfo.enabled && ((packageSettings.enabled == COMPONENT_ENABLED_STATE_ENABLED) || (componentInfo.applicationInfo.enabled && packageSettings.enabled != COMPONENT_ENABLED_STATE_DISABLED)) && !packageSettings.disabledComponents.contains(componentInfo.name)) || packageSettings.enabledComponents.contains(componentInfo.name)); return componentInfo.enabled; } } Loading