Ensure package names read from config are system packages.

Fixes: 145981139
Test: presubmit
Change-Id: I1d23910cbd282f6702785c9dfb059d7be6b0e895
This commit is contained in:
Hai Zhang
2019-12-10 17:34:18 -08:00
parent 5b0ee657e0
commit 546462f139

View File

@@ -3006,8 +3006,7 @@ public class PackageManagerService extends IPackageManager.Stub
mWellbeingPackage = getWellbeingPackageName();
mDocumenterPackage = getDocumenterPackageName();
mConfiguratorPackage =
mContext.getString(R.string.config_deviceConfiguratorPackageName);
mConfiguratorPackage = getDeviceConfiguratorPackageName();
mAppPredictionServicePackage = getAppPredictionServicePackageName();
mIncidentReportApproverPackage = getIncidentReportApproverPackageName();
mTelephonyPackages = getTelephonyPackageNames();
@@ -19682,13 +19681,14 @@ public class PackageManagerService extends IPackageManager.Stub
@Override
public String getSystemTextClassifierPackageName() {
return mContext.getString(R.string.config_defaultTextClassifierPackage);
return ensureSystemPackageName(mContext.getString(
R.string.config_defaultTextClassifierPackage));
}
@Override
public String[] getSystemTextClassifierPackages() {
return mContext.getResources().getStringArray(
R.array.config_defaultTextClassifierPackages);
return ensureSystemPackageNames(mContext.getResources().getStringArray(
R.array.config_defaultTextClassifierPackages));
}
@Override
@@ -19698,7 +19698,7 @@ public class PackageManagerService extends IPackageManager.Stub
if (flattenedComponentName != null) {
ComponentName componentName = ComponentName.unflattenFromString(flattenedComponentName);
if (componentName != null && componentName.getPackageName() != null) {
return componentName.getPackageName();
return ensureSystemPackageName(componentName.getPackageName());
}
}
return null;
@@ -19723,9 +19723,15 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
@Nullable
private String getDeviceConfiguratorPackageName() {
return ensureSystemPackageName(mContext.getString(
R.string.config_deviceConfiguratorPackageName));
}
@Override
public String getWellbeingPackageName() {
return mContext.getString(R.string.config_defaultWellbeingPackage);
return ensureSystemPackageName(mContext.getString(R.string.config_defaultWellbeingPackage));
}
@Override
@@ -19740,7 +19746,7 @@ public class PackageManagerService extends IPackageManager.Stub
if (appPredictionServiceComponentName == null) {
return null;
}
return appPredictionServiceComponentName.getPackageName();
return ensureSystemPackageName(appPredictionServiceComponentName.getPackageName());
}
@Override
@@ -19757,7 +19763,7 @@ public class PackageManagerService extends IPackageManager.Stub
if (systemCaptionsServiceComponentName == null) {
return null;
}
return systemCaptionsServiceComponentName.getPackageName();
return ensureSystemPackageName(systemCaptionsServiceComponentName.getPackageName());
}
@Override
@@ -19769,7 +19775,8 @@ public class PackageManagerService extends IPackageManager.Stub
}
public String getIncidentReportApproverPackageName() {
return mContext.getString(R.string.config_incidentReportApproverPackage);
return ensureSystemPackageName(mContext.getString(
R.string.config_incidentReportApproverPackage));
}
@Override
@@ -19779,7 +19786,7 @@ public class PackageManagerService extends IPackageManager.Stub
if (!TextUtils.isEmpty(names)) {
telephonyPackageNames = names.trim().split(",");
}
return telephonyPackageNames;
return ensureSystemPackageNames(telephonyPackageNames);
}
@Override
@@ -19796,7 +19803,32 @@ public class PackageManagerService extends IPackageManager.Stub
if (contentCaptureServiceComponentName == null) {
return null;
}
return contentCaptureServiceComponentName.getPackageName();
return ensureSystemPackageName(contentCaptureServiceComponentName.getPackageName());
}
@Nullable
private String ensureSystemPackageName(@Nullable String packageName) {
if (packageName == null) {
return null;
}
if (getPackageInfo(packageName, MATCH_SYSTEM_ONLY | MATCH_DIRECT_BOOT_AWARE
| MATCH_DIRECT_BOOT_UNAWARE | MATCH_DISABLED_COMPONENTS,
UserHandle.getCallingUserId()) == null) {
return null;
}
return packageName;
}
@Nullable
private String[] ensureSystemPackageNames(@Nullable String[] packageNames) {
if (packageNames == null) {
return null;
}
final int packageNamesLength = packageNames.length;
for (int i = 0; i < packageNamesLength; i++) {
packageNames[i] = ensureSystemPackageName(packageNames[i]);
}
return ArrayUtils.filterNotNull(packageNames, String[]::new);
}
@Override