Merge "Migrate CarrierAppUtils to use SystemConfigManager" into rvc-dev

This commit is contained in:
Hall Liu
2020-03-02 22:19:19 +00:00
committed by Android (Google) Code Review

View File

@@ -22,21 +22,21 @@ import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.SystemConfigManager;
import android.os.UserHandle; import android.os.UserHandle;
import android.permission.PermissionManager; import android.permission.PermissionManager;
import android.provider.Settings; import android.provider.Settings;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log; import android.util.Log;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.util.ArrayUtils; import com.android.internal.telephony.util.ArrayUtils;
import com.android.server.SystemConfig;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* Utilities for handling carrier applications. * Utilities for handling carrier applications.
@@ -53,19 +53,19 @@ public final class CarrierAppUtils {
* Handle preinstalled carrier apps which should be disabled until a matching SIM is inserted. * Handle preinstalled carrier apps which should be disabled until a matching SIM is inserted.
* *
* Evaluates the list of applications in * Evaluates the list of applications in
* {@link SystemConfig#getDisabledUntilUsedPreinstalledCarrierApps()}. We want to disable each * {@link SystemConfigManager#getDisabledUntilUsedPreinstalledCarrierApps()}. We want to disable
* such application which is present on the system image until the user inserts a SIM which * each such application which is present on the system image until the user inserts a SIM
* causes that application to gain carrier privilege (indicating a "match"), without interfering * which causes that application to gain carrier privilege (indicating a "match"), without
* with the user if they opt to enable/disable the app explicitly. * interfering with the user if they opt to enable/disable the app explicitly.
* *
* So, for each such app, we either disable until used IFF the app is not carrier privileged AND * So, for each such app, we either disable until used IFF the app is not carrier privileged AND
* in the default state (e.g. not explicitly DISABLED/DISABLED_BY_USER/ENABLED), or we enable if * in the default state (e.g. not explicitly DISABLED/DISABLED_BY_USER/ENABLED), or we enable if
* the app is carrier privileged and in either the default state or DISABLED_UNTIL_USED. * the app is carrier privileged and in either the default state or DISABLED_UNTIL_USED.
* *
* In addition, there is a list of carrier-associated applications in * In addition, there is a list of carrier-associated applications in
* {@link SystemConfig#getDisabledUntilUsedPreinstalledCarrierAssociatedApps}. Each app in this * {@link SystemConfigManager#getDisabledUntilUsedPreinstalledCarrierAssociatedApps}. Each app
* list is associated with a carrier app. When the given carrier app is enabled/disabled per the * in this list is associated with a carrier app. When the given carrier app is enabled/disabled
* above, the associated applications are enabled/disabled to match. * per the above, the associated applications are enabled/disabled to match.
* *
* When enabling a carrier app we also grant it default permissions. * When enabling a carrier app we also grant it default permissions.
* *
@@ -78,10 +78,10 @@ public final class CarrierAppUtils {
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "disableCarrierAppsUntilPrivileged"); Log.d(TAG, "disableCarrierAppsUntilPrivileged");
} }
SystemConfig config = SystemConfig.getInstance(); SystemConfigManager config = context.getSystemService(SystemConfigManager.class);
ArraySet<String> systemCarrierAppsDisabledUntilUsed = Set<String> systemCarrierAppsDisabledUntilUsed =
config.getDisabledUntilUsedPreinstalledCarrierApps(); config.getDisabledUntilUsedPreinstalledCarrierApps();
ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed = Map<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps(); config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
ContentResolver contentResolver = getContentResolverForUser(context, userId); ContentResolver contentResolver = getContentResolverForUser(context, userId);
disableCarrierAppsUntilPrivileged(callingPackage, telephonyManager, contentResolver, disableCarrierAppsUntilPrivileged(callingPackage, telephonyManager, contentResolver,
@@ -105,11 +105,11 @@ public final class CarrierAppUtils {
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "disableCarrierAppsUntilPrivileged"); Log.d(TAG, "disableCarrierAppsUntilPrivileged");
} }
SystemConfig config = SystemConfig.getInstance(); SystemConfigManager config = context.getSystemService(SystemConfigManager.class);
ArraySet<String> systemCarrierAppsDisabledUntilUsed = Set<String> systemCarrierAppsDisabledUntilUsed =
config.getDisabledUntilUsedPreinstalledCarrierApps(); config.getDisabledUntilUsedPreinstalledCarrierApps();
ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed = Map<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps(); config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
ContentResolver contentResolver = getContentResolverForUser(context, userId); ContentResolver contentResolver = getContentResolverForUser(context, userId);
disableCarrierAppsUntilPrivileged(callingPackage, null /* telephonyManager */, disableCarrierAppsUntilPrivileged(callingPackage, null /* telephonyManager */,
@@ -139,8 +139,8 @@ public final class CarrierAppUtils {
@VisibleForTesting @VisibleForTesting
public static void disableCarrierAppsUntilPrivileged(String callingPackage, public static void disableCarrierAppsUntilPrivileged(String callingPackage,
@Nullable TelephonyManager telephonyManager, ContentResolver contentResolver, @Nullable TelephonyManager telephonyManager, ContentResolver contentResolver,
int userId, ArraySet<String> systemCarrierAppsDisabledUntilUsed, int userId, Set<String> systemCarrierAppsDisabledUntilUsed,
ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed, Map<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed,
Context context) { Context context) {
PackageManager packageManager = context.getPackageManager(); PackageManager packageManager = context.getPackageManager();
PermissionManager permissionManager = PermissionManager permissionManager =
@@ -340,26 +340,22 @@ public final class CarrierAppUtils {
*/ */
public static List<ApplicationInfo> getDefaultCarrierAppCandidates( public static List<ApplicationInfo> getDefaultCarrierAppCandidates(
int userId, Context context) { int userId, Context context) {
ArraySet<String> systemCarrierAppsDisabledUntilUsed = Set<String> systemCarrierAppsDisabledUntilUsed =
SystemConfig.getInstance().getDisabledUntilUsedPreinstalledCarrierApps(); context.getSystemService(SystemConfigManager.class)
.getDisabledUntilUsedPreinstalledCarrierApps();
return getDefaultCarrierAppCandidatesHelper(userId, systemCarrierAppsDisabledUntilUsed, return getDefaultCarrierAppCandidatesHelper(userId, systemCarrierAppsDisabledUntilUsed,
context); context);
} }
private static List<ApplicationInfo> getDefaultCarrierAppCandidatesHelper( private static List<ApplicationInfo> getDefaultCarrierAppCandidatesHelper(
int userId, ArraySet<String> systemCarrierAppsDisabledUntilUsed, Context context) { int userId, Set<String> systemCarrierAppsDisabledUntilUsed, Context context) {
if (systemCarrierAppsDisabledUntilUsed == null) { if (systemCarrierAppsDisabledUntilUsed == null
|| systemCarrierAppsDisabledUntilUsed.isEmpty()) {
return null; return null;
} }
int size = systemCarrierAppsDisabledUntilUsed.size(); List<ApplicationInfo> apps = new ArrayList<>(systemCarrierAppsDisabledUntilUsed.size());
if (size == 0) { for (String packageName : systemCarrierAppsDisabledUntilUsed) {
return null;
}
List<ApplicationInfo> apps = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
String packageName = systemCarrierAppsDisabledUntilUsed.valueAt(i);
ApplicationInfo ai = ApplicationInfo ai =
getApplicationInfoIfSystemApp(userId, packageName, context); getApplicationInfoIfSystemApp(userId, packageName, context);
if (ai != null) { if (ai != null) {
@@ -370,14 +366,14 @@ public final class CarrierAppUtils {
} }
private static Map<String, List<ApplicationInfo>> getDefaultCarrierAssociatedAppsHelper( private static Map<String, List<ApplicationInfo>> getDefaultCarrierAssociatedAppsHelper(
int userId, ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed, int userId, Map<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed,
Context context) { Context context) {
int size = systemCarrierAssociatedAppsDisabledUntilUsed.size(); int size = systemCarrierAssociatedAppsDisabledUntilUsed.size();
Map<String, List<ApplicationInfo>> associatedApps = new ArrayMap<>(size); Map<String, List<ApplicationInfo>> associatedApps = new ArrayMap<>(size);
for (int i = 0; i < size; i++) { for (Map.Entry<String, List<String>> entry
String carrierAppPackage = systemCarrierAssociatedAppsDisabledUntilUsed.keyAt(i); : systemCarrierAssociatedAppsDisabledUntilUsed.entrySet()) {
List<String> associatedAppPackages = String carrierAppPackage = entry.getKey();
systemCarrierAssociatedAppsDisabledUntilUsed.valueAt(i); List<String> associatedAppPackages = entry.getValue();
for (int j = 0; j < associatedAppPackages.size(); j++) { for (int j = 0; j < associatedAppPackages.size(); j++) {
ApplicationInfo ai = ApplicationInfo ai =
getApplicationInfoIfSystemApp( getApplicationInfoIfSystemApp(