summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Rhed Jao <rhedjao@google.com> 2021-04-19 06:02:09 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-04-19 06:02:09 +0000
commitb8a482b0f176c2c2f9ffbb43bbb33fe25f50512d (patch)
tree6452e3a487899b1290bb6547f60bdb612fee9786
parent62d25e0eb9a18a1ace9c746ca95a449d0ee9023e (diff)
parent9ac5f83a721ad0e4fddb6e34075f95590c61108a (diff)
Merge "Apply package visibility to the LauncherApps#isActivityEnabled" into sc-dev
-rw-r--r--services/core/java/android/content/pm/PackageManagerInternal.java6
-rw-r--r--services/core/java/com/android/server/pm/LauncherAppsService.java28
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java17
3 files changed, 36 insertions, 15 deletions
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index a9eb2c110867..5dd9b0e8cbc6 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -825,6 +825,12 @@ public abstract class PackageManagerInternal {
String packageName, int userId);
/**
+ * Return the enabled setting for a package component (activity, receiver, service, provider).
+ */
+ public abstract @PackageManager.EnabledState int getComponentEnabledSetting(
+ @NonNull ComponentName componentName, int callingUid, int userId);
+
+ /**
* Extra field name for the token of a request to enable rollback for a
* package.
*/
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index dd80e167f0b3..edd43af9f5b9 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -1043,22 +1043,24 @@ public class LauncherAppsService extends SystemService {
return false;
}
+ final PackageManagerInternal pmInt =
+ LocalServices.getService(PackageManagerInternal.class);
final int callingUid = injectBinderCallingUid();
+ final int state = pmInt.getComponentEnabledSetting(component, callingUid,
+ user.getIdentifier());
+ switch (state) {
+ case PackageManager.COMPONENT_ENABLED_STATE_DEFAULT:
+ break; // Need to check the manifest's enabled state.
+ case PackageManager.COMPONENT_ENABLED_STATE_ENABLED:
+ return true;
+ case PackageManager.COMPONENT_ENABLED_STATE_DISABLED:
+ case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER:
+ case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED:
+ return false;
+ }
+
final long ident = Binder.clearCallingIdentity();
try {
- final int state = mIPM.getComponentEnabledSetting(component, user.getIdentifier());
- switch (state) {
- case PackageManager.COMPONENT_ENABLED_STATE_DEFAULT:
- break; // Need to check the manifest's enabled state.
- case PackageManager.COMPONENT_ENABLED_STATE_ENABLED:
- return true;
- case PackageManager.COMPONENT_ENABLED_STATE_DISABLED:
- case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER:
- case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED:
- return false;
- }
- final PackageManagerInternal pmInt =
- LocalServices.getService(PackageManagerInternal.class);
ActivityInfo info = pmInt.getActivityInfo(component,
PackageManager.MATCH_DIRECT_BOOT_AWARE
| PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 59039baf2764..6b364bdcc0e0 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -23616,11 +23616,17 @@ public class PackageManagerService extends IPackageManager.Stub
@Override
public int getComponentEnabledSetting(@NonNull ComponentName component, int userId) {
- if (component == null) return COMPONENT_ENABLED_STATE_DEFAULT;
- if (!mUserManager.exists(userId)) return COMPONENT_ENABLED_STATE_DISABLED;
int callingUid = Binder.getCallingUid();
enforceCrossUserPermission(callingUid, userId, false /*requireFullPermission*/,
false /*checkShell*/, "getComponentEnabled");
+ return getComponentEnabledSettingInternal(component, callingUid, userId);
+ }
+
+ private int getComponentEnabledSettingInternal(ComponentName component, int callingUid,
+ int userId) {
+ if (component == null) return COMPONENT_ENABLED_STATE_DEFAULT;
+ if (!mUserManager.exists(userId)) return COMPONENT_ENABLED_STATE_DISABLED;
+
synchronized (mLock) {
try {
if (shouldFilterApplicationLocked(
@@ -27066,6 +27072,13 @@ public class PackageManagerService extends IPackageManager.Stub
}
@Override
+ public @PackageManager.EnabledState int getComponentEnabledSetting(
+ @NonNull ComponentName componentName, int callingUid, int userId) {
+ return PackageManagerService.this.getComponentEnabledSettingInternal(componentName,
+ callingUid, userId);
+ }
+
+ @Override
public void setEnableRollbackCode(int token, int enableRollbackCode) {
PackageManagerService.this.setEnableRollbackCode(token, enableRollbackCode);
}