summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TYM Tsai <tymtsai@google.com> 2024-02-27 04:02:47 +0800
committer TYM Tsai <tymtsai@google.com> 2024-02-27 07:50:05 +0800
commit6dbc700b2452d2194cc18ec2d1c25a30fb71c6a1 (patch)
tree0849cc6e39aea2c840dec92f2c8d065a6029a0cd
parentd7c959d7ecced44dbe7c861c8b354456430a63f7 (diff)
Update the enabled state with the current user state
The enabled state of component should sync with the current user state. Bug: 318512019 Test: atest PackageManagerTest Test: atest PackageInstallerTests Test: atest PackageManagerComponentOverrideTests Test: atest PackageManagerServiceServerTests Test: atest FrameworksServicesTests Test: atest PackageManagerServiceUnitTests Change-Id: I872ce3c29a2cc27a6725c419289586fe9a2e0d89
-rw-r--r--services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java
index 6ed2d3126455..f94f2d09ad24 100644
--- a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java
+++ b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java
@@ -595,7 +595,7 @@ public class PackageInfoUtils {
ai.applicationInfo = applicationInfo;
ai.requiredDisplayCategory = a.getRequiredDisplayCategory();
ai.setKnownActivityEmbeddingCerts(a.getKnownActivityEmbeddingCerts());
- assignFieldsComponentInfoParsedMainComponent(ai, a, pkgSetting, userId);
+ assignFieldsComponentInfoParsedMainComponent(ai, a, pkgSetting, state, userId);
return ai;
}
@@ -658,7 +658,7 @@ public class PackageInfoUtils {
// Backwards compatibility, coerce to null if empty
si.metaData = metaData.isEmpty() ? null : metaData;
}
- assignFieldsComponentInfoParsedMainComponent(si, s, pkgSetting, userId);
+ assignFieldsComponentInfoParsedMainComponent(si, s, pkgSetting, state, userId);
return si;
}
@@ -709,7 +709,7 @@ public class PackageInfoUtils {
pi.metaData = metaData.isEmpty() ? null : metaData;
}
pi.applicationInfo = applicationInfo;
- assignFieldsComponentInfoParsedMainComponent(pi, p, pkgSetting, userId);
+ assignFieldsComponentInfoParsedMainComponent(pi, p, pkgSetting, state, userId);
return pi;
}
@@ -902,8 +902,13 @@ public class PackageInfoUtils {
private static void assignFieldsComponentInfoParsedMainComponent(
@NonNull ComponentInfo info, @NonNull ParsedMainComponent component,
- @NonNull PackageStateInternal pkgSetting, @UserIdInt int userId) {
+ @NonNull PackageStateInternal pkgSetting, @NonNull PackageUserStateInternal state,
+ @UserIdInt int userId) {
assignFieldsComponentInfoParsedMainComponent(info, component);
+ // overwrite the enabled state with the current user state
+ info.enabled = PackageUserStateUtils.isEnabled(state, info.applicationInfo.enabled,
+ info.enabled, info.name, /* flags */ 0);
+
Pair<CharSequence, Integer> labelAndIcon =
ParsedComponentStateUtils.getNonLocalizedLabelAndIcon(component, pkgSetting,
userId);