diff options
Diffstat (limited to 'services/core/java/com/android/server/pm/PackageSettingBase.java')
-rw-r--r-- | services/core/java/com/android/server/pm/PackageSettingBase.java | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java index bbdfe31..e02e4da 100644 --- a/services/core/java/com/android/server/pm/PackageSettingBase.java +++ b/services/core/java/com/android/server/pm/PackageSettingBase.java @@ -19,6 +19,7 @@ package com.android.server.pm; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; +import static android.content.pm.PackageManager.COMPONENT_VISIBLE_STATUS; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.PackageManager; @@ -343,7 +344,8 @@ abstract class PackageSettingBase extends SettingBase { boolean notLaunched, boolean hidden, String lastDisableAppCaller, ArraySet<String> enabledComponents, ArraySet<String> disabledComponents, boolean blockUninstall, int domainVerifState, - int linkGeneration) { + int linkGeneration, + ArraySet<String> protectedComponents, ArraySet<String> visibleComponents) { PackageUserState state = modifyUserState(userId); state.enabled = enabled; state.installed = installed; @@ -356,6 +358,8 @@ abstract class PackageSettingBase extends SettingBase { state.blockUninstall = blockUninstall; state.domainVerificationStatus = domainVerifState; state.appLinkGeneration = linkGeneration; + state.protectedComponents = protectedComponents; + state.visibleComponents = visibleComponents; } ArraySet<String> getEnabledComponents(int userId) { @@ -395,6 +399,17 @@ abstract class PackageSettingBase extends SettingBase { return state; } + PackageUserState modifyUserStateComponents(int userId) { + PackageUserState state = modifyUserState(userId); + if (state.protectedComponents == null) { + state.protectedComponents = new ArraySet<String>(1); + } + if (state.visibleComponents == null) { + state.visibleComponents = new ArraySet<String>(1); + } + return state; + } + void addDisabledComponent(String componentClassName, int userId) { modifyUserStateComponents(userId, true, false).disabledComponents.add(componentClassName); } @@ -440,6 +455,27 @@ abstract class PackageSettingBase extends SettingBase { } } + boolean protectComponentLPw(String componentClassName, boolean protect, int userId) { + PackageUserState state = modifyUserStateComponents(userId); + boolean changed = false; + if (protect == COMPONENT_VISIBLE_STATUS) { + changed = state.protectedComponents != null + ? state.protectedComponents.remove(componentClassName) : false; + changed |= state.visibleComponents.add(componentClassName); + } else { + changed = state.visibleComponents != null + ? state.visibleComponents.remove(componentClassName) : false; + changed |= state.protectedComponents.add(componentClassName); + } + + return changed; + } + + ArraySet<String> getProtectedComponents(int userId) { + PackageUserState state = modifyUserStateComponents(userId); + return state.protectedComponents; + } + void removeUser(int userId) { userState.delete(userId); } |